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 8245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12212 const gles2::cmds::WaitSyncPointCHROMIUM& c = | 12227 const gles2::cmds::WaitSyncPointCHROMIUM& c = |
12213 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); | 12228 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); |
12214 uint32 sync_point = c.sync_point; | 12229 uint32 sync_point = c.sync_point; |
12215 if (wait_sync_point_callback_.is_null()) | 12230 if (wait_sync_point_callback_.is_null()) |
12216 return error::kNoError; | 12231 return error::kNoError; |
12217 | 12232 |
12218 return wait_sync_point_callback_.Run(sync_point) ? | 12233 return wait_sync_point_callback_.Run(sync_point) ? |
12219 error::kNoError : error::kDeferCommandUntilLater; | 12234 error::kNoError : error::kDeferCommandUntilLater; |
12220 } | 12235 } |
12221 | 12236 |
| 12237 error::Error GLES2DecoderImpl::HandleInsertFenceSyncCHROMIUM( |
| 12238 uint32 immediate_data_size, |
| 12239 const void* cmd_data) { |
| 12240 const gles2::cmds::InsertFenceSyncCHROMIUM& c = |
| 12241 *static_cast<const gles2::cmds::InsertFenceSyncCHROMIUM*>(cmd_data); |
| 12242 |
| 12243 const uint64_t release_count = c.release_count; |
| 12244 if (!fence_sync_release_callback_.is_null()) |
| 12245 fence_sync_release_callback_.Run(release_count); |
| 12246 return error::kNoError; |
| 12247 } |
| 12248 |
| 12249 error::Error GLES2DecoderImpl::HandleGenSyncTokenCHROMIUMImmediate( |
| 12250 uint32 immediate_data_size, |
| 12251 const void* cmd_data) { |
| 12252 return error::kUnknownCommand; |
| 12253 } |
| 12254 |
| 12255 error::Error GLES2DecoderImpl::HandleWaitSyncTokenCHROMIUM( |
| 12256 uint32 immediate_data_size, |
| 12257 const void* cmd_data) { |
| 12258 const gles2::cmds::WaitSyncTokenCHROMIUM& c = |
| 12259 *static_cast<const gles2::cmds::WaitSyncTokenCHROMIUM*>(cmd_data); |
| 12260 |
| 12261 const gpu::CommandBufferNamespace namespace_id = |
| 12262 static_cast<gpu::CommandBufferNamespace>(c.namespace_id); |
| 12263 const uint64_t command_buffer_id = c.command_buffer_id; |
| 12264 const uint64_t release = c.release_count; |
| 12265 if (wait_fence_sync_callback_.is_null()) |
| 12266 return error::kNoError; |
| 12267 |
| 12268 return wait_fence_sync_callback_.Run(namespace_id, command_buffer_id, release) |
| 12269 ? error::kNoError |
| 12270 : error::kDeferCommandUntilLater; |
| 12271 } |
| 12272 |
12222 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( | 12273 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( |
12223 uint32 immediate_data_size, | 12274 uint32 immediate_data_size, |
12224 const void* cmd_data) { | 12275 const void* cmd_data) { |
12225 if (surface_->DeferDraws()) | 12276 if (surface_->DeferDraws()) |
12226 return error::kDeferCommandUntilLater; | 12277 return error::kDeferCommandUntilLater; |
12227 if (!surface_->SetBackbufferAllocation(false)) | 12278 if (!surface_->SetBackbufferAllocation(false)) |
12228 return error::kLostContext; | 12279 return error::kLostContext; |
12229 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; | 12280 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; |
12230 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; | 12281 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; |
12231 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; | 12282 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; |
(...skipping 2811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15043 return error::kNoError; | 15094 return error::kNoError; |
15044 } | 15095 } |
15045 | 15096 |
15046 // Include the auto-generated part of this file. We split this because it means | 15097 // Include the auto-generated part of this file. We split this because it means |
15047 // we can easily edit the non-auto generated parts right here in this file | 15098 // we can easily edit the non-auto generated parts right here in this file |
15048 // instead of having to edit some template or the code generator. | 15099 // instead of having to edit some template or the code generator. |
15049 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 15100 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
15050 | 15101 |
15051 } // namespace gles2 | 15102 } // namespace gles2 |
15052 } // namespace gpu | 15103 } // namespace gpu |
OLD | NEW |