Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 1331843005: Implemented new fence syncs which replaces the old sync points. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Some fixes Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698