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

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

Issue 2722883002: gpu: Allow waiting on sync tokens without sync token client. (Closed)
Patch Set: review Created 3 years, 9 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 <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
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
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
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
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
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
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
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