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

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

Issue 782583003: List sync points to wait on in AsyncFlush message Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 <list> 10 #include <list>
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 647
648 Logger* GetLogger() override; 648 Logger* GetLogger() override;
649 649
650 void BeginDecoding() override; 650 void BeginDecoding() override;
651 void EndDecoding() override; 651 void EndDecoding() override;
652 652
653 ErrorState* GetErrorState() override; 653 ErrorState* GetErrorState() override;
654 const ContextState* GetContextState() override { return &state_; } 654 const ContextState* GetContextState() override { return &state_; }
655 655
656 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override; 656 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override;
657 void SetWaitSyncPointCallback(const WaitSyncPointCallback& callback) override;
658 657
659 AsyncPixelTransferManager* GetAsyncPixelTransferManager() override; 658 AsyncPixelTransferManager* GetAsyncPixelTransferManager() override;
660 void ResetAsyncPixelTransferManagerForTest() override; 659 void ResetAsyncPixelTransferManagerForTest() override;
661 void SetAsyncPixelTransferManagerForTest( 660 void SetAsyncPixelTransferManagerForTest(
662 AsyncPixelTransferManager* manager) override; 661 AsyncPixelTransferManager* manager) override;
663 void SetIgnoreCachedStateForTest(bool ignore) override; 662 void SetIgnoreCachedStateForTest(bool ignore) override;
664 void ProcessFinishedAsyncTransfers(); 663 void ProcessFinishedAsyncTransfers();
665 664
666 bool GetServiceTextureId(uint32 client_texture_id, 665 bool GetServiceTextureId(uint32 client_texture_id,
667 uint32* service_texture_id) override; 666 uint32* service_texture_id) override;
(...skipping 1112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1780 GLenum offscreen_saved_color_format_; 1779 GLenum offscreen_saved_color_format_;
1781 1780
1782 scoped_ptr<QueryManager> query_manager_; 1781 scoped_ptr<QueryManager> query_manager_;
1783 1782
1784 scoped_ptr<VertexArrayManager> vertex_array_manager_; 1783 scoped_ptr<VertexArrayManager> vertex_array_manager_;
1785 1784
1786 scoped_ptr<ImageManager> image_manager_; 1785 scoped_ptr<ImageManager> image_manager_;
1787 1786
1788 base::Callback<void(gfx::Size, float)> resize_callback_; 1787 base::Callback<void(gfx::Size, float)> resize_callback_;
1789 1788
1790 WaitSyncPointCallback wait_sync_point_callback_;
1791
1792 ShaderCacheCallback shader_cache_callback_; 1789 ShaderCacheCallback shader_cache_callback_;
1793 1790
1794 scoped_ptr<AsyncPixelTransferManager> async_pixel_transfer_manager_; 1791 scoped_ptr<AsyncPixelTransferManager> async_pixel_transfer_manager_;
1795 1792
1796 // The format of the back buffer_ 1793 // The format of the back buffer_
1797 GLenum back_buffer_color_format_; 1794 GLenum back_buffer_color_format_;
1798 bool back_buffer_has_depth_; 1795 bool back_buffer_has_depth_;
1799 bool back_buffer_has_stencil_; 1796 bool back_buffer_has_stencil_;
1800 1797
1801 bool surfaceless_; 1798 bool surfaceless_;
(...skipping 1690 matching lines...) Expand 10 before | Expand all | Expand 10 after
3492 3489
3493 ErrorState* GLES2DecoderImpl::GetErrorState() { 3490 ErrorState* GLES2DecoderImpl::GetErrorState() {
3494 return state_.GetErrorState(); 3491 return state_.GetErrorState();
3495 } 3492 }
3496 3493
3497 void GLES2DecoderImpl::SetShaderCacheCallback( 3494 void GLES2DecoderImpl::SetShaderCacheCallback(
3498 const ShaderCacheCallback& callback) { 3495 const ShaderCacheCallback& callback) {
3499 shader_cache_callback_ = callback; 3496 shader_cache_callback_ = callback;
3500 } 3497 }
3501 3498
3502 void GLES2DecoderImpl::SetWaitSyncPointCallback(
3503 const WaitSyncPointCallback& callback) {
3504 wait_sync_point_callback_ = callback;
3505 }
3506
3507 AsyncPixelTransferManager* 3499 AsyncPixelTransferManager*
3508 GLES2DecoderImpl::GetAsyncPixelTransferManager() { 3500 GLES2DecoderImpl::GetAsyncPixelTransferManager() {
3509 return async_pixel_transfer_manager_.get(); 3501 return async_pixel_transfer_manager_.get();
3510 } 3502 }
3511 3503
3512 void GLES2DecoderImpl::ResetAsyncPixelTransferManagerForTest() { 3504 void GLES2DecoderImpl::ResetAsyncPixelTransferManagerForTest() {
3513 async_pixel_transfer_manager_.reset(); 3505 async_pixel_transfer_manager_.reset();
3514 } 3506 }
3515 3507
3516 void GLES2DecoderImpl::SetAsyncPixelTransferManagerForTest( 3508 void GLES2DecoderImpl::SetAsyncPixelTransferManagerForTest(
(...skipping 6415 matching lines...) Expand 10 before | Expand all | Expand 10 after
9932 reset_status_ = reset_status; 9924 reset_status_ = reset_status;
9933 current_decoder_error_ = error::kLostContext; 9925 current_decoder_error_ = error::kLostContext;
9934 } 9926 }
9935 9927
9936 error::Error GLES2DecoderImpl::HandleInsertSyncPointCHROMIUM( 9928 error::Error GLES2DecoderImpl::HandleInsertSyncPointCHROMIUM(
9937 uint32 immediate_data_size, 9929 uint32 immediate_data_size,
9938 const void* cmd_data) { 9930 const void* cmd_data) {
9939 return error::kUnknownCommand; 9931 return error::kUnknownCommand;
9940 } 9932 }
9941 9933
9942 error::Error GLES2DecoderImpl::HandleWaitSyncPointCHROMIUM(
9943 uint32 immediate_data_size,
9944 const void* cmd_data) {
9945 const gles2::cmds::WaitSyncPointCHROMIUM& c =
9946 *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data);
9947 uint32 sync_point = c.sync_point;
9948 if (wait_sync_point_callback_.is_null())
9949 return error::kNoError;
9950
9951 return wait_sync_point_callback_.Run(sync_point) ?
9952 error::kNoError : error::kDeferCommandUntilLater;
9953 }
9954
9955 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( 9934 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM(
9956 uint32 immediate_data_size, 9935 uint32 immediate_data_size,
9957 const void* cmd_data) { 9936 const void* cmd_data) {
9958 if (surface_->DeferDraws()) 9937 if (surface_->DeferDraws())
9959 return error::kDeferCommandUntilLater; 9938 return error::kDeferCommandUntilLater;
9960 if (!surface_->SetBackbufferAllocation(false)) 9939 if (!surface_->SetBackbufferAllocation(false))
9961 return error::kLostContext; 9940 return error::kLostContext;
9962 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; 9941 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT;
9963 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT; 9942 backbuffer_needs_clear_bits_ |= GL_DEPTH_BUFFER_BIT;
9964 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT; 9943 backbuffer_needs_clear_bits_ |= GL_STENCIL_BUFFER_BIT;
(...skipping 21 matching lines...) Expand all
9986 if (it != state_.current_queries.end()) 9965 if (it != state_.current_queries.end())
9987 state_.current_queries.erase(it); 9966 state_.current_queries.erase(it);
9988 9967
9989 query->Destroy(true); 9968 query->Destroy(true);
9990 } 9969 }
9991 query_manager_->RemoveQuery(client_ids[ii]); 9970 query_manager_->RemoveQuery(client_ids[ii]);
9992 } 9971 }
9993 } 9972 }
9994 9973
9995 bool GLES2DecoderImpl::ProcessPendingQueries(bool did_finish) { 9974 bool GLES2DecoderImpl::ProcessPendingQueries(bool did_finish) {
9975 MakeCurrent();
9996 if (query_manager_.get() == NULL) { 9976 if (query_manager_.get() == NULL) {
9997 return false; 9977 return false;
9998 } 9978 }
9999 if (!query_manager_->ProcessPendingQueries(did_finish)) { 9979 if (!query_manager_->ProcessPendingQueries(did_finish)) {
10000 current_decoder_error_ = error::kOutOfBounds; 9980 current_decoder_error_ = error::kOutOfBounds;
10001 } 9981 }
10002 return query_manager_->HavePendingQueries(); 9982 return query_manager_->HavePendingQueries();
10003 } 9983 }
10004 9984
10005 // Note that if there are no pending readpixels right now, 9985 // Note that if there are no pending readpixels right now,
(...skipping 1490 matching lines...) Expand 10 before | Expand all | Expand 10 after
11496 } 11476 }
11497 } 11477 }
11498 11478
11499 // Include the auto-generated part of this file. We split this because it means 11479 // Include the auto-generated part of this file. We split this because it means
11500 // we can easily edit the non-auto generated parts right here in this file 11480 // we can easily edit the non-auto generated parts right here in this file
11501 // instead of having to edit some template or the code generator. 11481 // instead of having to edit some template or the code generator.
11502 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 11482 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
11503 11483
11504 } // namespace gles2 11484 } // namespace gles2
11505 } // namespace gpu 11485 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder_mock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698