Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 1331843005: Implemented new fence syncs which replaces the old sync points. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reverted mojo readme, changed wait() to take a pointer Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 Logger* GetLogger() override; 681 Logger* GetLogger() override;
682 682
683 void BeginDecoding() override; 683 void BeginDecoding() override;
684 void EndDecoding() override; 684 void EndDecoding() override;
685 685
686 ErrorState* GetErrorState() override; 686 ErrorState* GetErrorState() override;
687 const ContextState* GetContextState() override { return &state_; } 687 const ContextState* GetContextState() override { return &state_; }
688 688
689 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override; 689 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override;
690 void SetWaitSyncPointCallback(const WaitSyncPointCallback& callback) override; 690 void SetWaitSyncPointCallback(const WaitSyncPointCallback& callback) override;
691 void SetFenceSyncReleaseCallback(
692 const FenceSyncReleaseCallback& callback) override;
693 void SetWaitFenceSyncCallback(const WaitFenceSyncCallback& callback) override;
691 694
692 void SetIgnoreCachedStateForTest(bool ignore) override; 695 void SetIgnoreCachedStateForTest(bool ignore) override;
693 void ProcessFinishedAsyncTransfers(); 696 void ProcessFinishedAsyncTransfers();
694 697
695 bool GetServiceTextureId(uint32 client_texture_id, 698 bool GetServiceTextureId(uint32 client_texture_id,
696 uint32* service_texture_id) override; 699 uint32* service_texture_id) override;
697 700
698 uint32 GetTextureUploadCount() override; 701 uint32 GetTextureUploadCount() override;
699 base::TimeDelta GetTotalTextureUploadTime() override; 702 base::TimeDelta GetTotalTextureUploadTime() override;
700 base::TimeDelta GetTotalProcessingCommandsTime() override; 703 base::TimeDelta GetTotalProcessingCommandsTime() override;
(...skipping 1281 matching lines...) Expand 10 before | Expand all | Expand 10 after
1982 1985
1983 scoped_ptr<QueryManager> query_manager_; 1986 scoped_ptr<QueryManager> query_manager_;
1984 1987
1985 scoped_ptr<VertexArrayManager> vertex_array_manager_; 1988 scoped_ptr<VertexArrayManager> vertex_array_manager_;
1986 1989
1987 scoped_ptr<ImageManager> image_manager_; 1990 scoped_ptr<ImageManager> image_manager_;
1988 1991
1989 base::Callback<void(gfx::Size, float)> resize_callback_; 1992 base::Callback<void(gfx::Size, float)> resize_callback_;
1990 1993
1991 WaitSyncPointCallback wait_sync_point_callback_; 1994 WaitSyncPointCallback wait_sync_point_callback_;
1995 FenceSyncReleaseCallback fence_sync_release_callback_;
1996 WaitFenceSyncCallback wait_fence_sync_callback_;
1992 1997
1993 ShaderCacheCallback shader_cache_callback_; 1998 ShaderCacheCallback shader_cache_callback_;
1994 1999
1995 // The format of the back buffer_ 2000 // The format of the back buffer_
1996 GLenum back_buffer_color_format_; 2001 GLenum back_buffer_color_format_;
1997 bool back_buffer_has_depth_; 2002 bool back_buffer_has_depth_;
1998 bool back_buffer_has_stencil_; 2003 bool back_buffer_has_stencil_;
1999 2004
2000 // Tracks read buffer and draw buffer for backbuffer, whether it's onscreen 2005 // Tracks read buffer and draw buffer for backbuffer, whether it's onscreen
2001 // or offscreen. 2006 // or offscreen.
(...skipping 1939 matching lines...) Expand 10 before | Expand all | Expand 10 after
3941 void GLES2DecoderImpl::SetShaderCacheCallback( 3946 void GLES2DecoderImpl::SetShaderCacheCallback(
3942 const ShaderCacheCallback& callback) { 3947 const ShaderCacheCallback& callback) {
3943 shader_cache_callback_ = callback; 3948 shader_cache_callback_ = callback;
3944 } 3949 }
3945 3950
3946 void GLES2DecoderImpl::SetWaitSyncPointCallback( 3951 void GLES2DecoderImpl::SetWaitSyncPointCallback(
3947 const WaitSyncPointCallback& callback) { 3952 const WaitSyncPointCallback& callback) {
3948 wait_sync_point_callback_ = callback; 3953 wait_sync_point_callback_ = callback;
3949 } 3954 }
3950 3955
3956 void GLES2DecoderImpl::SetFenceSyncReleaseCallback(
3957 const FenceSyncReleaseCallback& callback) {
3958 fence_sync_release_callback_ = callback;
3959 }
3960
3961 void GLES2DecoderImpl::SetWaitFenceSyncCallback(
3962 const WaitFenceSyncCallback& callback) {
3963 wait_fence_sync_callback_ = callback;
3964 }
3965
3951 bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id, 3966 bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id,
3952 uint32* service_texture_id) { 3967 uint32* service_texture_id) {
3953 TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id); 3968 TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id);
3954 if (texture_ref) { 3969 if (texture_ref) {
3955 *service_texture_id = texture_ref->service_id(); 3970 *service_texture_id = texture_ref->service_id();
3956 return true; 3971 return true;
3957 } 3972 }
3958 return false; 3973 return false;
3959 } 3974 }
3960 3975
(...skipping 8274 matching lines...) Expand 10 before | Expand all | Expand 10 after
12235 const gles2::cmds::WaitSyncPointCHROMIUM& c = 12250 const gles2::cmds::WaitSyncPointCHROMIUM& c =
12236 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); 12251 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data);
12237 uint32 sync_point = c.sync_point; 12252 uint32 sync_point = c.sync_point;
12238 if (wait_sync_point_callback_.is_null()) 12253 if (wait_sync_point_callback_.is_null())
12239 return error::kNoError; 12254 return error::kNoError;
12240 12255
12241 return wait_sync_point_callback_.Run(sync_point) ? 12256 return wait_sync_point_callback_.Run(sync_point) ?
12242 error::kNoError : error::kDeferCommandUntilLater; 12257 error::kNoError : error::kDeferCommandUntilLater;
12243 } 12258 }
12244 12259
12260 error::Error GLES2DecoderImpl::HandleInsertFenceSyncCHROMIUM(
12261 uint32 immediate_data_size,
12262 const void* cmd_data) {
12263 const gles2::cmds::InsertFenceSyncCHROMIUM& c =
12264 *static_cast<const gles2::cmds::InsertFenceSyncCHROMIUM*>(cmd_data);
12265
12266 const uint64_t release_count = c.release_count;
12267 if (!fence_sync_release_callback_.is_null())
12268 fence_sync_release_callback_.Run(release_count);
12269 return error::kNoError;
12270 }
12271
12272 error::Error GLES2DecoderImpl::HandleGenSyncTokenCHROMIUMImmediate(
12273 uint32 immediate_data_size,
12274 const void* cmd_data) {
12275 return error::kUnknownCommand;
12276 }
12277
12278 error::Error GLES2DecoderImpl::HandleWaitSyncTokenCHROMIUM(
12279 uint32 immediate_data_size,
12280 const void* cmd_data) {
12281 const gles2::cmds::WaitSyncTokenCHROMIUM& c =
12282 *static_cast<const gles2::cmds::WaitSyncTokenCHROMIUM*>(cmd_data);
12283
12284 const gpu::CommandBufferNamespace namespace_id =
12285 static_cast<gpu::CommandBufferNamespace>(c.namespace_id);
12286 const uint64_t command_buffer_id = c.command_buffer_id;
12287 const uint64_t release = c.release_count;
12288 if (wait_fence_sync_callback_.is_null())
12289 return error::kNoError;
12290
12291 return wait_fence_sync_callback_.Run(namespace_id, command_buffer_id, release)
12292 ? error::kNoError
12293 : error::kDeferCommandUntilLater;
12294 }
12295
12245 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( 12296 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM(
12246 uint32 immediate_data_size, 12297 uint32 immediate_data_size,
12247 const void* cmd_data) { 12298 const void* cmd_data) {
12248 if (surface_->DeferDraws()) 12299 if (surface_->DeferDraws())
12249 return error::kDeferCommandUntilLater; 12300 return error::kDeferCommandUntilLater;
12250 if (!surface_->SetBackbufferAllocation(false)) 12301 if (!surface_->SetBackbufferAllocation(false))
12251 return error::kLostContext; 12302 return error::kLostContext;
12252 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; 12303 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT;
12253 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; 12304 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT;
12254 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; 12305 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT;
(...skipping 2798 matching lines...) Expand 10 before | Expand all | Expand 10 after
15053 return error::kNoError; 15104 return error::kNoError;
15054 } 15105 }
15055 15106
15056 // Include the auto-generated part of this file. We split this because it means 15107 // Include the auto-generated part of this file. We split this because it means
15057 // we can easily edit the non-auto generated parts right here in this file 15108 // we can easily edit the non-auto generated parts right here in this file
15058 // instead of having to edit some template or the code generator. 15109 // instead of having to edit some template or the code generator.
15059 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 15110 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
15060 15111
15061 } // namespace gles2 15112 } // namespace gles2
15062 } // namespace gpu 15113 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder_mock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698