| 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 <limits.h> | 7 #include <limits.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <stdio.h> | 10 #include <stdio.h> |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include "base/numerics/safe_math.h" | 24 #include "base/numerics/safe_math.h" |
| 25 #include "base/strings/string_number_conversions.h" | 25 #include "base/strings/string_number_conversions.h" |
| 26 #include "base/strings/stringprintf.h" | 26 #include "base/strings/stringprintf.h" |
| 27 #include "base/trace_event/trace_event.h" | 27 #include "base/trace_event/trace_event.h" |
| 28 #include "base/trace_event/trace_event_synthetic_delay.h" | 28 #include "base/trace_event/trace_event_synthetic_delay.h" |
| 29 #include "build/build_config.h" | 29 #include "build/build_config.h" |
| 30 #include "gpu/command_buffer/common/debug_marker_manager.h" | 30 #include "gpu/command_buffer/common/debug_marker_manager.h" |
| 31 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 31 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
| 32 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 32 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
| 33 #include "gpu/command_buffer/common/mailbox.h" | 33 #include "gpu/command_buffer/common/mailbox.h" |
| 34 #include "gpu/command_buffer/common/sync_token.h" |
| 34 #include "gpu/command_buffer/service/buffer_manager.h" | 35 #include "gpu/command_buffer/service/buffer_manager.h" |
| 35 #include "gpu/command_buffer/service/context_group.h" | 36 #include "gpu/command_buffer/service/context_group.h" |
| 36 #include "gpu/command_buffer/service/context_state.h" | 37 #include "gpu/command_buffer/service/context_state.h" |
| 37 #include "gpu/command_buffer/service/error_state.h" | 38 #include "gpu/command_buffer/service/error_state.h" |
| 38 #include "gpu/command_buffer/service/feature_info.h" | 39 #include "gpu/command_buffer/service/feature_info.h" |
| 39 #include "gpu/command_buffer/service/framebuffer_manager.h" | 40 #include "gpu/command_buffer/service/framebuffer_manager.h" |
| 40 #include "gpu/command_buffer/service/gl_stream_texture_image.h" | 41 #include "gpu/command_buffer/service/gl_stream_texture_image.h" |
| 41 #include "gpu/command_buffer/service/gl_utils.h" | 42 #include "gpu/command_buffer/service/gl_utils.h" |
| 42 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa
_intel.h" | 43 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa
_intel.h" |
| 43 #include "gpu/command_buffer/service/gles2_cmd_clear_framebuffer.h" | 44 #include "gpu/command_buffer/service/gles2_cmd_clear_framebuffer.h" |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 void BeginDecoding() override; | 588 void BeginDecoding() override; |
| 588 void EndDecoding() override; | 589 void EndDecoding() override; |
| 589 | 590 |
| 590 ErrorState* GetErrorState() override; | 591 ErrorState* GetErrorState() override; |
| 591 const ContextState* GetContextState() override { return &state_; } | 592 const ContextState* GetContextState() override { return &state_; } |
| 592 scoped_refptr<ShaderTranslatorInterface> GetTranslator(GLenum type) override; | 593 scoped_refptr<ShaderTranslatorInterface> GetTranslator(GLenum type) override; |
| 593 | 594 |
| 594 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override; | 595 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override; |
| 595 void SetFenceSyncReleaseCallback( | 596 void SetFenceSyncReleaseCallback( |
| 596 const FenceSyncReleaseCallback& callback) override; | 597 const FenceSyncReleaseCallback& callback) override; |
| 597 void SetWaitFenceSyncCallback(const WaitFenceSyncCallback& callback) override; | 598 void SetWaitSyncTokenCallback(const WaitSyncTokenCallback& callback) override; |
| 598 | 599 |
| 599 void SetDescheduleUntilFinishedCallback( | 600 void SetDescheduleUntilFinishedCallback( |
| 600 const NoParamCallback& callback) override; | 601 const NoParamCallback& callback) override; |
| 601 void SetRescheduleAfterFinishedCallback( | 602 void SetRescheduleAfterFinishedCallback( |
| 602 const NoParamCallback& callback) override; | 603 const NoParamCallback& callback) override; |
| 603 | 604 |
| 604 void SetIgnoreCachedStateForTest(bool ignore) override; | 605 void SetIgnoreCachedStateForTest(bool ignore) override; |
| 605 void SetForceShaderNameHashingForTest(bool force) override; | 606 void SetForceShaderNameHashingForTest(bool force) override; |
| 606 uint32_t GetAndClearBackbufferClearBitsForTest() override; | 607 uint32_t GetAndClearBackbufferClearBitsForTest() override; |
| 607 void ProcessFinishedAsyncTransfers(); | 608 void ProcessFinishedAsyncTransfers(); |
| (...skipping 1684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2292 // Whether the client requested an offscreen buffer with an alpha channel. | 2293 // Whether the client requested an offscreen buffer with an alpha channel. |
| 2293 bool offscreen_buffer_should_have_alpha_; | 2294 bool offscreen_buffer_should_have_alpha_; |
| 2294 | 2295 |
| 2295 std::unique_ptr<QueryManager> query_manager_; | 2296 std::unique_ptr<QueryManager> query_manager_; |
| 2296 | 2297 |
| 2297 std::unique_ptr<VertexArrayManager> vertex_array_manager_; | 2298 std::unique_ptr<VertexArrayManager> vertex_array_manager_; |
| 2298 | 2299 |
| 2299 std::unique_ptr<ImageManager> image_manager_; | 2300 std::unique_ptr<ImageManager> image_manager_; |
| 2300 | 2301 |
| 2301 FenceSyncReleaseCallback fence_sync_release_callback_; | 2302 FenceSyncReleaseCallback fence_sync_release_callback_; |
| 2302 WaitFenceSyncCallback wait_fence_sync_callback_; | 2303 WaitSyncTokenCallback wait_sync_token_callback_; |
| 2303 NoParamCallback deschedule_until_finished_callback_; | 2304 NoParamCallback deschedule_until_finished_callback_; |
| 2304 NoParamCallback reschedule_after_finished_callback_; | 2305 NoParamCallback reschedule_after_finished_callback_; |
| 2305 | 2306 |
| 2306 ShaderCacheCallback shader_cache_callback_; | 2307 ShaderCacheCallback shader_cache_callback_; |
| 2307 | 2308 |
| 2308 // The format of the back buffer_ | 2309 // The format of the back buffer_ |
| 2309 GLenum back_buffer_color_format_; | 2310 GLenum back_buffer_color_format_; |
| 2310 bool back_buffer_has_depth_; | 2311 bool back_buffer_has_depth_; |
| 2311 bool back_buffer_has_stencil_; | 2312 bool back_buffer_has_stencil_; |
| 2312 | 2313 |
| (...skipping 2332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4645 void GLES2DecoderImpl::SetShaderCacheCallback( | 4646 void GLES2DecoderImpl::SetShaderCacheCallback( |
| 4646 const ShaderCacheCallback& callback) { | 4647 const ShaderCacheCallback& callback) { |
| 4647 shader_cache_callback_ = callback; | 4648 shader_cache_callback_ = callback; |
| 4648 } | 4649 } |
| 4649 | 4650 |
| 4650 void GLES2DecoderImpl::SetFenceSyncReleaseCallback( | 4651 void GLES2DecoderImpl::SetFenceSyncReleaseCallback( |
| 4651 const FenceSyncReleaseCallback& callback) { | 4652 const FenceSyncReleaseCallback& callback) { |
| 4652 fence_sync_release_callback_ = callback; | 4653 fence_sync_release_callback_ = callback; |
| 4653 } | 4654 } |
| 4654 | 4655 |
| 4655 void GLES2DecoderImpl::SetWaitFenceSyncCallback( | 4656 void GLES2DecoderImpl::SetWaitSyncTokenCallback( |
| 4656 const WaitFenceSyncCallback& callback) { | 4657 const WaitSyncTokenCallback& callback) { |
| 4657 wait_fence_sync_callback_ = callback; | 4658 wait_sync_token_callback_ = callback; |
| 4658 } | 4659 } |
| 4659 | 4660 |
| 4660 void GLES2DecoderImpl::SetDescheduleUntilFinishedCallback( | 4661 void GLES2DecoderImpl::SetDescheduleUntilFinishedCallback( |
| 4661 const NoParamCallback& callback) { | 4662 const NoParamCallback& callback) { |
| 4662 deschedule_until_finished_callback_ = callback; | 4663 deschedule_until_finished_callback_ = callback; |
| 4663 } | 4664 } |
| 4664 | 4665 |
| 4665 void GLES2DecoderImpl::SetRescheduleAfterFinishedCallback( | 4666 void GLES2DecoderImpl::SetRescheduleAfterFinishedCallback( |
| 4666 const NoParamCallback& callback) { | 4667 const NoParamCallback& callback) { |
| 4667 reschedule_after_finished_callback_ = callback; | 4668 reschedule_after_finished_callback_ = callback; |
| (...skipping 11117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15785 | 15786 |
| 15786 gpu::CommandBufferNamespace namespace_id = | 15787 gpu::CommandBufferNamespace namespace_id = |
| 15787 static_cast<gpu::CommandBufferNamespace>(c.namespace_id); | 15788 static_cast<gpu::CommandBufferNamespace>(c.namespace_id); |
| 15788 if ((namespace_id < static_cast<int32_t>(kMinNamespaceId)) || | 15789 if ((namespace_id < static_cast<int32_t>(kMinNamespaceId)) || |
| 15789 (namespace_id >= static_cast<int32_t>(kMaxNamespaceId))) { | 15790 (namespace_id >= static_cast<int32_t>(kMaxNamespaceId))) { |
| 15790 namespace_id = gpu::CommandBufferNamespace::INVALID; | 15791 namespace_id = gpu::CommandBufferNamespace::INVALID; |
| 15791 } | 15792 } |
| 15792 const CommandBufferId command_buffer_id = | 15793 const CommandBufferId command_buffer_id = |
| 15793 CommandBufferId::FromUnsafeValue(c.command_buffer_id()); | 15794 CommandBufferId::FromUnsafeValue(c.command_buffer_id()); |
| 15794 const uint64_t release = c.release_count(); | 15795 const uint64_t release = c.release_count(); |
| 15795 if (wait_fence_sync_callback_.is_null()) | 15796 if (wait_sync_token_callback_.is_null()) |
| 15796 return error::kNoError; | 15797 return error::kNoError; |
| 15797 | 15798 |
| 15798 return wait_fence_sync_callback_.Run(namespace_id, command_buffer_id, release) | 15799 gpu::SyncToken sync_token; |
| 15799 ? error::kNoError | 15800 sync_token.Set(namespace_id, 0, command_buffer_id, release); |
| 15800 : error::kDeferCommandUntilLater; | 15801 return wait_sync_token_callback_.Run(sync_token) |
| 15802 ? error::kDeferCommandUntilLater |
| 15803 : error::kNoError; |
| 15801 } | 15804 } |
| 15802 | 15805 |
| 15803 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( | 15806 error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( |
| 15804 uint32_t immediate_data_size, | 15807 uint32_t immediate_data_size, |
| 15805 const volatile void* cmd_data) { | 15808 const volatile void* cmd_data) { |
| 15806 if (surface_->DeferDraws()) | 15809 if (surface_->DeferDraws()) |
| 15807 return error::kDeferCommandUntilLater; | 15810 return error::kDeferCommandUntilLater; |
| 15808 if (!surface_->SetBackbufferAllocation(false)) | 15811 if (!surface_->SetBackbufferAllocation(false)) |
| 15809 return error::kLostContext; | 15812 return error::kLostContext; |
| 15810 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; | 15813 backbuffer_needs_clear_bits_ |= GL_COLOR_BUFFER_BIT; |
| (...skipping 3479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19290 } | 19293 } |
| 19291 | 19294 |
| 19292 // Include the auto-generated part of this file. We split this because it means | 19295 // Include the auto-generated part of this file. We split this because it means |
| 19293 // we can easily edit the non-auto generated parts right here in this file | 19296 // we can easily edit the non-auto generated parts right here in this file |
| 19294 // instead of having to edit some template or the code generator. | 19297 // instead of having to edit some template or the code generator. |
| 19295 #include "base/macros.h" | 19298 #include "base/macros.h" |
| 19296 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 19299 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
| 19297 | 19300 |
| 19298 } // namespace gles2 | 19301 } // namespace gles2 |
| 19299 } // namespace gpu | 19302 } // namespace gpu |
| OLD | NEW |