OLD | NEW |
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 Loading... |
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 1286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1987 | 1990 |
1988 scoped_ptr<QueryManager> query_manager_; | 1991 scoped_ptr<QueryManager> query_manager_; |
1989 | 1992 |
1990 scoped_ptr<VertexArrayManager> vertex_array_manager_; | 1993 scoped_ptr<VertexArrayManager> vertex_array_manager_; |
1991 | 1994 |
1992 scoped_ptr<ImageManager> image_manager_; | 1995 scoped_ptr<ImageManager> image_manager_; |
1993 | 1996 |
1994 base::Callback<void(gfx::Size, float)> resize_callback_; | 1997 base::Callback<void(gfx::Size, float)> resize_callback_; |
1995 | 1998 |
1996 WaitSyncPointCallback wait_sync_point_callback_; | 1999 WaitSyncPointCallback wait_sync_point_callback_; |
| 2000 FenceSyncReleaseCallback fence_sync_release_callback_; |
| 2001 WaitFenceSyncCallback wait_fence_sync_callback_; |
1997 | 2002 |
1998 ShaderCacheCallback shader_cache_callback_; | 2003 ShaderCacheCallback shader_cache_callback_; |
1999 | 2004 |
2000 // The format of the back buffer_ | 2005 // The format of the back buffer_ |
2001 GLenum back_buffer_color_format_; | 2006 GLenum back_buffer_color_format_; |
2002 bool back_buffer_has_depth_; | 2007 bool back_buffer_has_depth_; |
2003 bool back_buffer_has_stencil_; | 2008 bool back_buffer_has_stencil_; |
2004 | 2009 |
2005 // Tracks read buffer and draw buffer for backbuffer, whether it's onscreen | 2010 // Tracks read buffer and draw buffer for backbuffer, whether it's onscreen |
2006 // or offscreen. | 2011 // or offscreen. |
(...skipping 1940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3947 void GLES2DecoderImpl::SetShaderCacheCallback( | 3952 void GLES2DecoderImpl::SetShaderCacheCallback( |
3948 const ShaderCacheCallback& callback) { | 3953 const ShaderCacheCallback& callback) { |
3949 shader_cache_callback_ = callback; | 3954 shader_cache_callback_ = callback; |
3950 } | 3955 } |
3951 | 3956 |
3952 void GLES2DecoderImpl::SetWaitSyncPointCallback( | 3957 void GLES2DecoderImpl::SetWaitSyncPointCallback( |
3953 const WaitSyncPointCallback& callback) { | 3958 const WaitSyncPointCallback& callback) { |
3954 wait_sync_point_callback_ = callback; | 3959 wait_sync_point_callback_ = callback; |
3955 } | 3960 } |
3956 | 3961 |
| 3962 void GLES2DecoderImpl::SetFenceSyncReleaseCallback( |
| 3963 const FenceSyncReleaseCallback& callback) { |
| 3964 fence_sync_release_callback_ = callback; |
| 3965 } |
| 3966 |
| 3967 void GLES2DecoderImpl::SetWaitFenceSyncCallback( |
| 3968 const WaitFenceSyncCallback& callback) { |
| 3969 wait_fence_sync_callback_ = callback; |
| 3970 } |
| 3971 |
3957 bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id, | 3972 bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id, |
3958 uint32* service_texture_id) { | 3973 uint32* service_texture_id) { |
3959 TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id); | 3974 TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id); |
3960 if (texture_ref) { | 3975 if (texture_ref) { |
3961 *service_texture_id = texture_ref->service_id(); | 3976 *service_texture_id = texture_ref->service_id(); |
3962 return true; | 3977 return true; |
3963 } | 3978 } |
3964 return false; | 3979 return false; |
3965 } | 3980 } |
3966 | 3981 |
(...skipping 8274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12241 const gles2::cmds::WaitSyncPointCHROMIUM& c = | 12256 const gles2::cmds::WaitSyncPointCHROMIUM& c = |
12242 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); | 12257 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); |
12243 uint32 sync_point = c.sync_point; | 12258 uint32 sync_point = c.sync_point; |
12244 if (wait_sync_point_callback_.is_null()) | 12259 if (wait_sync_point_callback_.is_null()) |
12245 return error::kNoError; | 12260 return error::kNoError; |
12246 | 12261 |
12247 return wait_sync_point_callback_.Run(sync_point) ? | 12262 return wait_sync_point_callback_.Run(sync_point) ? |
12248 error::kNoError : error::kDeferCommandUntilLater; | 12263 error::kNoError : error::kDeferCommandUntilLater; |
12249 } | 12264 } |
12250 | 12265 |
| 12266 error::Error GLES2DecoderImpl::HandleInsertFenceSyncCHROMIUM( |
| 12267 uint32 immediate_data_size, |
| 12268 const void* cmd_data) { |
| 12269 const gles2::cmds::InsertFenceSyncCHROMIUM& c = |
| 12270 *static_cast<const gles2::cmds::InsertFenceSyncCHROMIUM*>(cmd_data); |
| 12271 |
| 12272 const uint64_t release_count = c.release_count; |
| 12273 if (!fence_sync_release_callback_.is_null()) |
| 12274 fence_sync_release_callback_.Run(release_count); |
| 12275 return error::kNoError; |
| 12276 } |
| 12277 |
| 12278 error::Error GLES2DecoderImpl::HandleGenSyncTokenCHROMIUMImmediate( |
| 12279 uint32 immediate_data_size, |
| 12280 const void* cmd_data) { |
| 12281 return error::kUnknownCommand; |
| 12282 } |
| 12283 |
| 12284 error::Error GLES2DecoderImpl::HandleWaitSyncTokenCHROMIUM( |
| 12285 uint32 immediate_data_size, |
| 12286 const void* cmd_data) { |
| 12287 const gles2::cmds::WaitSyncTokenCHROMIUM& c = |
| 12288 *static_cast<const gles2::cmds::WaitSyncTokenCHROMIUM*>(cmd_data); |
| 12289 |
| 12290 const gpu::CommandBufferNamespace namespace_id = |
| 12291 static_cast<gpu::CommandBufferNamespace>(c.namespace_id); |
| 12292 const uint64_t command_buffer_id = c.command_buffer_id; |
| 12293 const uint64_t release = c.release_count; |
| 12294 if (wait_fence_sync_callback_.is_null()) |
| 12295 return error::kNoError; |
| 12296 |
| 12297 return wait_fence_sync_callback_.Run(namespace_id, command_buffer_id, release) |
| 12298 ? error::kNoError |
| 12299 : error::kDeferCommandUntilLater; |
| 12300 } |
| 12301 |
12251 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( | 12302 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( |
12252 uint32 immediate_data_size, | 12303 uint32 immediate_data_size, |
12253 const void* cmd_data) { | 12304 const void* cmd_data) { |
12254 if (surface_->DeferDraws()) | 12305 if (surface_->DeferDraws()) |
12255 return error::kDeferCommandUntilLater; | 12306 return error::kDeferCommandUntilLater; |
12256 if (!surface_->SetBackbufferAllocation(false)) | 12307 if (!surface_->SetBackbufferAllocation(false)) |
12257 return error::kLostContext; | 12308 return error::kLostContext; |
12258 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; | 12309 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; |
12259 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; | 12310 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; |
12260 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; | 12311 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; |
(...skipping 2798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15059 return error::kNoError; | 15110 return error::kNoError; |
15060 } | 15111 } |
15061 | 15112 |
15062 // Include the auto-generated part of this file. We split this because it means | 15113 // Include the auto-generated part of this file. We split this because it means |
15063 // we can easily edit the non-auto generated parts right here in this file | 15114 // we can easily edit the non-auto generated parts right here in this file |
15064 // instead of having to edit some template or the code generator. | 15115 // instead of having to edit some template or the code generator. |
15065 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 15116 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
15066 | 15117 |
15067 } // namespace gles2 | 15118 } // namespace gles2 |
15068 } // namespace gpu | 15119 } // namespace gpu |
OLD | NEW |