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 <list> | 10 #include <list> |
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |