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 1281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |