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

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 1331843005: Implemented new fence syncs which replaces the old sync points. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reverted mojo readme, changed wait() to take a pointer Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/gles2_cmd_decoder.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index fc12bfe2584ad0f85f485d59a09731588fc15e2f..e737b4b41b48185325e0a70fe853e15fdd2129c5 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -688,6 +688,9 @@ class GLES2DecoderImpl : public GLES2Decoder,
void SetShaderCacheCallback(const ShaderCacheCallback& callback) override;
void SetWaitSyncPointCallback(const WaitSyncPointCallback& callback) override;
+ void SetFenceSyncReleaseCallback(
+ const FenceSyncReleaseCallback& callback) override;
+ void SetWaitFenceSyncCallback(const WaitFenceSyncCallback& callback) override;
void SetIgnoreCachedStateForTest(bool ignore) override;
void ProcessFinishedAsyncTransfers();
@@ -1989,6 +1992,8 @@ class GLES2DecoderImpl : public GLES2Decoder,
base::Callback<void(gfx::Size, float)> resize_callback_;
WaitSyncPointCallback wait_sync_point_callback_;
+ FenceSyncReleaseCallback fence_sync_release_callback_;
+ WaitFenceSyncCallback wait_fence_sync_callback_;
ShaderCacheCallback shader_cache_callback_;
@@ -3948,6 +3953,16 @@ void GLES2DecoderImpl::SetWaitSyncPointCallback(
wait_sync_point_callback_ = callback;
}
+void GLES2DecoderImpl::SetFenceSyncReleaseCallback(
+ const FenceSyncReleaseCallback& callback) {
+ fence_sync_release_callback_ = callback;
+}
+
+void GLES2DecoderImpl::SetWaitFenceSyncCallback(
+ const WaitFenceSyncCallback& callback) {
+ wait_fence_sync_callback_ = callback;
+}
+
bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id,
uint32* service_texture_id) {
TextureRef* texture_ref = texture_manager()->GetTexture(client_texture_id);
@@ -12242,6 +12257,42 @@ error::Error GLES2DecoderImpl::HandleWaitSyncPointCHROMIUM(
error::kNoError : error::kDeferCommandUntilLater;
}
+error::Error GLES2DecoderImpl::HandleInsertFenceSyncCHROMIUM(
+ uint32 immediate_data_size,
+ const void* cmd_data) {
+ const gles2::cmds::InsertFenceSyncCHROMIUM& c =
+ *static_cast<const gles2::cmds::InsertFenceSyncCHROMIUM*>(cmd_data);
+
+ const uint64_t release_count = c.release_count;
+ if (!fence_sync_release_callback_.is_null())
+ fence_sync_release_callback_.Run(release_count);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleGenSyncTokenCHROMIUMImmediate(
+ uint32 immediate_data_size,
+ const void* cmd_data) {
+ return error::kUnknownCommand;
+}
+
+error::Error GLES2DecoderImpl::HandleWaitSyncTokenCHROMIUM(
+ uint32 immediate_data_size,
+ const void* cmd_data) {
+ const gles2::cmds::WaitSyncTokenCHROMIUM& c =
+ *static_cast<const gles2::cmds::WaitSyncTokenCHROMIUM*>(cmd_data);
+
+ const gpu::CommandBufferNamespace namespace_id =
+ static_cast<gpu::CommandBufferNamespace>(c.namespace_id);
+ const uint64_t command_buffer_id = c.command_buffer_id;
+ const uint64_t release = c.release_count;
+ if (wait_fence_sync_callback_.is_null())
+ return error::kNoError;
+
+ return wait_fence_sync_callback_.Run(namespace_id, command_buffer_id, release)
+ ? error::kNoError
+ : error::kDeferCommandUntilLater;
+}
+
error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM(
uint32 immediate_data_size,
const void* cmd_data) {
« 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