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 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
680 Logger* GetLogger() override; | 680 Logger* GetLogger() override; |
681 | 681 |
682 void BeginDecoding() override; | 682 void BeginDecoding() override; |
683 void EndDecoding() override; | 683 void EndDecoding() override; |
684 | 684 |
685 ErrorState* GetErrorState() override; | 685 ErrorState* GetErrorState() override; |
686 const ContextState* GetContextState() override { return &state_; } | 686 const ContextState* GetContextState() override { return &state_; } |
687 | 687 |
688 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override; | 688 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override; |
689 void SetWaitSyncPointCallback(const WaitSyncPointCallback& callback) override; | 689 void SetWaitSyncPointCallback(const WaitSyncPointCallback& callback) override; |
| 690 void SetFenceSyncReleaseCallback( |
| 691 const FenceSyncReleaseCallback& callback) override; |
| 692 void SetWaitFenceSyncCallback(const WaitFenceSyncCallback& callback) override; |
690 | 693 |
691 void SetIgnoreCachedStateForTest(bool ignore) override; | 694 void SetIgnoreCachedStateForTest(bool ignore) override; |
692 void ProcessFinishedAsyncTransfers(); | 695 void ProcessFinishedAsyncTransfers(); |
693 | 696 |
694 bool GetServiceTextureId(uint32 client_texture_id, | 697 bool GetServiceTextureId(uint32 client_texture_id, |
695 uint32* service_texture_id) override; | 698 uint32* service_texture_id) override; |
696 | 699 |
697 uint32 GetTextureUploadCount() override; | 700 uint32 GetTextureUploadCount() override; |
698 base::TimeDelta GetTotalTextureUploadTime() override; | 701 base::TimeDelta GetTotalTextureUploadTime() override; |
699 base::TimeDelta GetTotalProcessingCommandsTime() override; | 702 base::TimeDelta GetTotalProcessingCommandsTime() override; |
(...skipping 1258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1958 | 1961 |
1959 scoped_ptr<QueryManager> query_manager_; | 1962 scoped_ptr<QueryManager> query_manager_; |
1960 | 1963 |
1961 scoped_ptr<VertexArrayManager> vertex_array_manager_; | 1964 scoped_ptr<VertexArrayManager> vertex_array_manager_; |
1962 | 1965 |
1963 scoped_ptr<ImageManager> image_manager_; | 1966 scoped_ptr<ImageManager> image_manager_; |
1964 | 1967 |
1965 base::Callback<void(gfx::Size, float)> resize_callback_; | 1968 base::Callback<void(gfx::Size, float)> resize_callback_; |
1966 | 1969 |
1967 WaitSyncPointCallback wait_sync_point_callback_; | 1970 WaitSyncPointCallback wait_sync_point_callback_; |
| 1971 FenceSyncReleaseCallback fence_sync_release_callback_; |
| 1972 WaitFenceSyncCallback wait_fence_sync_callback_; |
1968 | 1973 |
1969 ShaderCacheCallback shader_cache_callback_; | 1974 ShaderCacheCallback shader_cache_callback_; |
1970 | 1975 |
1971 // The format of the back buffer_ | 1976 // The format of the back buffer_ |
1972 GLenum back_buffer_color_format_; | 1977 GLenum back_buffer_color_format_; |
1973 bool back_buffer_has_depth_; | 1978 bool back_buffer_has_depth_; |
1974 bool back_buffer_has_stencil_; | 1979 bool back_buffer_has_stencil_; |
1975 | 1980 |
1976 // Tracks read buffer and draw buffer for backbuffer, whether it's onscreen | 1981 // Tracks read buffer and draw buffer for backbuffer, whether it's onscreen |
1977 // or offscreen. | 1982 // or offscreen. |
(...skipping 1944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3922 void GLES2DecoderImpl::SetShaderCacheCallback( | 3927 void GLES2DecoderImpl::SetShaderCacheCallback( |
3923 const ShaderCacheCallback& callback) { | 3928 const ShaderCacheCallback& callback) { |
3924 shader_cache_callback_ = callback; | 3929 shader_cache_callback_ = callback; |
3925 } | 3930 } |
3926 | 3931 |
3927 void GLES2DecoderImpl::SetWaitSyncPointCallback( | 3932 void GLES2DecoderImpl::SetWaitSyncPointCallback( |
3928 const WaitSyncPointCallback& callback) { | 3933 const WaitSyncPointCallback& callback) { |
3929 wait_sync_point_callback_ = callback; | 3934 wait_sync_point_callback_ = callback; |
3930 } | 3935 } |
3931 | 3936 |
| 3937 void GLES2DecoderImpl::SetFenceSyncReleaseCallback( |
| 3938 const FenceSyncReleaseCallback& callback) { |
| 3939 fence_sync_release_callback_ = callback; |
| 3940 } |
| 3941 |
| 3942 void GLES2DecoderImpl::SetWaitFenceSyncCallback( |
| 3943 const WaitFenceSyncCallback& callback) { |
| 3944 wait_fence_sync_callback_ = callback; |
| 3945 } |
| 3946 |
3932 bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id, | 3947 bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id, |
3933 uint32* service_texture_id) { | 3948 uint32* service_texture_id) { |
3934 TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id); | 3949 TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id); |
3935 if (texture_ref) { | 3950 if (texture_ref) { |
3936 *service_texture_id = texture_ref->service_id(); | 3951 *service_texture_id = texture_ref->service_id(); |
3937 return true; | 3952 return true; |
3938 } | 3953 } |
3939 return false; | 3954 return false; |
3940 } | 3955 } |
3941 | 3956 |
(...skipping 8053 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11995 const gles2::cmds::WaitSyncPointCHROMIUM& c = | 12010 const gles2::cmds::WaitSyncPointCHROMIUM& c = |
11996 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); | 12011 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); |
11997 uint32 sync_point = c.sync_point; | 12012 uint32 sync_point = c.sync_point; |
11998 if (wait_sync_point_callback_.is_null()) | 12013 if (wait_sync_point_callback_.is_null()) |
11999 return error::kNoError; | 12014 return error::kNoError; |
12000 | 12015 |
12001 return wait_sync_point_callback_.Run(sync_point) ? | 12016 return wait_sync_point_callback_.Run(sync_point) ? |
12002 error::kNoError : error::kDeferCommandUntilLater; | 12017 error::kNoError : error::kDeferCommandUntilLater; |
12003 } | 12018 } |
12004 | 12019 |
| 12020 error::Error GLES2DecoderImpl::HandleInsertFenceSyncCHROMIUM( |
| 12021 uint32 immediate_data_size, |
| 12022 const void* cmd_data) { |
| 12023 const gles2::cmds::InsertFenceSyncCHROMIUM& c = |
| 12024 *static_cast<const gles2::cmds::InsertFenceSyncCHROMIUM*>(cmd_data); |
| 12025 |
| 12026 const uint32_t release_count = c.release_count; |
| 12027 if (!fence_sync_release_callback_.is_null()) |
| 12028 fence_sync_release_callback_.Run(release_count); |
| 12029 return error::kNoError; |
| 12030 } |
| 12031 |
| 12032 error::Error GLES2DecoderImpl::HandleGenSyncTokenCHROMIUMImmediate( |
| 12033 uint32_t fence_sync, |
| 12034 const void* sync_token) { |
| 12035 return error::kUnknownCommand; |
| 12036 } |
| 12037 |
| 12038 error::Error GLES2DecoderImpl::HandleWaitSyncTokenCHROMIUM( |
| 12039 uint32 immediate_data_size, |
| 12040 const void* cmd_data) { |
| 12041 const gles2::cmds::WaitSyncTokenCHROMIUM& c = |
| 12042 *static_cast<const gles2::cmds::WaitSyncTokenCHROMIUM*>(cmd_data); |
| 12043 |
| 12044 const int channel_client_id = c.channel_id; |
| 12045 const uint32_t route_id = c.routing_id; |
| 12046 const uint32_t release = c.release_count; |
| 12047 if (wait_fence_sync_callback_.is_null()) |
| 12048 return error::kNoError; |
| 12049 |
| 12050 return wait_fence_sync_callback_.Run(channel_client_id, route_id, release) |
| 12051 ? error::kNoError |
| 12052 : error::kDeferCommandUntilLater; |
| 12053 } |
| 12054 |
12005 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( | 12055 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( |
12006 uint32 immediate_data_size, | 12056 uint32 immediate_data_size, |
12007 const void* cmd_data) { | 12057 const void* cmd_data) { |
12008 if (surface_->DeferDraws()) | 12058 if (surface_->DeferDraws()) |
12009 return error::kDeferCommandUntilLater; | 12059 return error::kDeferCommandUntilLater; |
12010 if (!surface_->SetBackbufferAllocation(false)) | 12060 if (!surface_->SetBackbufferAllocation(false)) |
12011 return error::kLostContext; | 12061 return error::kLostContext; |
12012 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; | 12062 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; |
12013 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; | 12063 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; |
12014 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; | 12064 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; |
(...skipping 2800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14815 return error::kNoError; | 14865 return error::kNoError; |
14816 } | 14866 } |
14817 | 14867 |
14818 // Include the auto-generated part of this file. We split this because it means | 14868 // Include the auto-generated part of this file. We split this because it means |
14819 // we can easily edit the non-auto generated parts right here in this file | 14869 // we can easily edit the non-auto generated parts right here in this file |
14820 // instead of having to edit some template or the code generator. | 14870 // instead of having to edit some template or the code generator. |
14821 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 14871 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
14822 | 14872 |
14823 } // namespace gles2 | 14873 } // namespace gles2 |
14824 } // namespace gpu | 14874 } // namespace gpu |
OLD | NEW |