| 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 |