| 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 1285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1986 | 1989 |
| 1987 scoped_ptr<QueryManager> query_manager_; | 1990 scoped_ptr<QueryManager> query_manager_; |
| 1988 | 1991 |
| 1989 scoped_ptr<VertexArrayManager> vertex_array_manager_; | 1992 scoped_ptr<VertexArrayManager> vertex_array_manager_; |
| 1990 | 1993 |
| 1991 scoped_ptr<ImageManager> image_manager_; | 1994 scoped_ptr<ImageManager> image_manager_; |
| 1992 | 1995 |
| 1993 base::Callback<void(gfx::Size, float)> resize_callback_; | 1996 base::Callback<void(gfx::Size, float)> resize_callback_; |
| 1994 | 1997 |
| 1995 WaitSyncPointCallback wait_sync_point_callback_; | 1998 WaitSyncPointCallback wait_sync_point_callback_; |
| 1999 FenceSyncReleaseCallback fence_sync_release_callback_; |
| 2000 WaitFenceSyncCallback wait_fence_sync_callback_; |
| 1996 | 2001 |
| 1997 ShaderCacheCallback shader_cache_callback_; | 2002 ShaderCacheCallback shader_cache_callback_; |
| 1998 | 2003 |
| 1999 // The format of the back buffer_ | 2004 // The format of the back buffer_ |
| 2000 GLenum back_buffer_color_format_; | 2005 GLenum back_buffer_color_format_; |
| 2001 bool back_buffer_has_depth_; | 2006 bool back_buffer_has_depth_; |
| 2002 bool back_buffer_has_stencil_; | 2007 bool back_buffer_has_stencil_; |
| 2003 | 2008 |
| 2004 // Tracks read buffer and draw buffer for backbuffer, whether it's onscreen | 2009 // Tracks read buffer and draw buffer for backbuffer, whether it's onscreen |
| 2005 // or offscreen. | 2010 // or offscreen. |
| (...skipping 1939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3945 void GLES2DecoderImpl::SetShaderCacheCallback( | 3950 void GLES2DecoderImpl::SetShaderCacheCallback( |
| 3946 const ShaderCacheCallback& callback) { | 3951 const ShaderCacheCallback& callback) { |
| 3947 shader_cache_callback_ = callback; | 3952 shader_cache_callback_ = callback; |
| 3948 } | 3953 } |
| 3949 | 3954 |
| 3950 void GLES2DecoderImpl::SetWaitSyncPointCallback( | 3955 void GLES2DecoderImpl::SetWaitSyncPointCallback( |
| 3951 const WaitSyncPointCallback& callback) { | 3956 const WaitSyncPointCallback& callback) { |
| 3952 wait_sync_point_callback_ = callback; | 3957 wait_sync_point_callback_ = callback; |
| 3953 } | 3958 } |
| 3954 | 3959 |
| 3960 void GLES2DecoderImpl::SetFenceSyncReleaseCallback( |
| 3961 const FenceSyncReleaseCallback& callback) { |
| 3962 fence_sync_release_callback_ = callback; |
| 3963 } |
| 3964 |
| 3965 void GLES2DecoderImpl::SetWaitFenceSyncCallback( |
| 3966 const WaitFenceSyncCallback& callback) { |
| 3967 wait_fence_sync_callback_ = callback; |
| 3968 } |
| 3969 |
| 3955 bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id, | 3970 bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id, |
| 3956 uint32* service_texture_id) { | 3971 uint32* service_texture_id) { |
| 3957 TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id); | 3972 TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id); |
| 3958 if (texture_ref) { | 3973 if (texture_ref) { |
| 3959 *service_texture_id = texture_ref->service_id(); | 3974 *service_texture_id = texture_ref->service_id(); |
| 3960 return true; | 3975 return true; |
| 3961 } | 3976 } |
| 3962 return false; | 3977 return false; |
| 3963 } | 3978 } |
| 3964 | 3979 |
| (...skipping 8245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12210 const gles2::cmds::WaitSyncPointCHROMIUM& c = | 12225 const gles2::cmds::WaitSyncPointCHROMIUM& c = |
| 12211 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); | 12226 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); |
| 12212 uint32 sync_point = c.sync_point; | 12227 uint32 sync_point = c.sync_point; |
| 12213 if (wait_sync_point_callback_.is_null()) | 12228 if (wait_sync_point_callback_.is_null()) |
| 12214 return error::kNoError; | 12229 return error::kNoError; |
| 12215 | 12230 |
| 12216 return wait_sync_point_callback_.Run(sync_point) ? | 12231 return wait_sync_point_callback_.Run(sync_point) ? |
| 12217 error::kNoError : error::kDeferCommandUntilLater; | 12232 error::kNoError : error::kDeferCommandUntilLater; |
| 12218 } | 12233 } |
| 12219 | 12234 |
| 12235 error::Error GLES2DecoderImpl::HandleInsertFenceSyncCHROMIUM( |
| 12236 uint32 immediate_data_size, |
| 12237 const void* cmd_data) { |
| 12238 const gles2::cmds::InsertFenceSyncCHROMIUM& c = |
| 12239 *static_cast<const gles2::cmds::InsertFenceSyncCHROMIUM*>(cmd_data); |
| 12240 |
| 12241 const uint32_t release_count = c.release_count; |
| 12242 if (!fence_sync_release_callback_.is_null()) |
| 12243 fence_sync_release_callback_.Run(release_count); |
| 12244 return error::kNoError; |
| 12245 } |
| 12246 |
| 12247 error::Error GLES2DecoderImpl::HandleGenSyncTokenCHROMIUMImmediate( |
| 12248 uint32_t fence_sync, |
| 12249 const void* sync_token) { |
| 12250 return error::kUnknownCommand; |
| 12251 } |
| 12252 |
| 12253 error::Error GLES2DecoderImpl::HandleWaitSyncTokenCHROMIUM( |
| 12254 uint32 immediate_data_size, |
| 12255 const void* cmd_data) { |
| 12256 const gles2::cmds::WaitSyncTokenCHROMIUM& c = |
| 12257 *static_cast<const gles2::cmds::WaitSyncTokenCHROMIUM*>(cmd_data); |
| 12258 |
| 12259 const gpu::CommandBufferNamespace namespace_id = |
| 12260 static_cast<gpu::CommandBufferNamespace>(c.namespace_id); |
| 12261 const uint64_t command_buffer_id = c.command_buffer_id; |
| 12262 const uint32_t release = c.release_count; |
| 12263 if (wait_fence_sync_callback_.is_null()) |
| 12264 return error::kNoError; |
| 12265 |
| 12266 return wait_fence_sync_callback_.Run(namespace_id, command_buffer_id, release) |
| 12267 ? error::kNoError |
| 12268 : error::kDeferCommandUntilLater; |
| 12269 } |
| 12270 |
| 12220 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( | 12271 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( |
| 12221 uint32 immediate_data_size, | 12272 uint32 immediate_data_size, |
| 12222 const void* cmd_data) { | 12273 const void* cmd_data) { |
| 12223 if (surface_->DeferDraws()) | 12274 if (surface_->DeferDraws()) |
| 12224 return error::kDeferCommandUntilLater; | 12275 return error::kDeferCommandUntilLater; |
| 12225 if (!surface_->SetBackbufferAllocation(false)) | 12276 if (!surface_->SetBackbufferAllocation(false)) |
| 12226 return error::kLostContext; | 12277 return error::kLostContext; |
| 12227 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; | 12278 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; |
| 12228 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; | 12279 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; |
| 12229 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; | 12280 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; |
| (...skipping 2811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15041 return error::kNoError; | 15092 return error::kNoError; |
| 15042 } | 15093 } |
| 15043 | 15094 |
| 15044 // Include the auto-generated part of this file. We split this because it means | 15095 // Include the auto-generated part of this file. We split this because it means |
| 15045 // we can easily edit the non-auto generated parts right here in this file | 15096 // we can easily edit the non-auto generated parts right here in this file |
| 15046 // instead of having to edit some template or the code generator. | 15097 // instead of having to edit some template or the code generator. |
| 15047 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 15098 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
| 15048 | 15099 |
| 15049 } // namespace gles2 | 15100 } // namespace gles2 |
| 15050 } // namespace gpu | 15101 } // namespace gpu |
| OLD | NEW |