Chromium Code Reviews| Index: components/mus/gles2/command_buffer_driver.cc |
| diff --git a/components/mus/gles2/command_buffer_driver.cc b/components/mus/gles2/command_buffer_driver.cc |
| index d634fcb21b23ca42ae6164ec79b878db0e958d7f..9fcfdb1c84e9538872cefaa42fffaa1c81255e69 100644 |
| --- a/components/mus/gles2/command_buffer_driver.cc |
| +++ b/components/mus/gles2/command_buffer_driver.cc |
| @@ -11,7 +11,6 @@ |
| #include "components/mus/gles2/gpu_memory_tracker.h" |
| #include "components/mus/gles2/gpu_state.h" |
| #include "components/mus/gles2/mojo_buffer_backing.h" |
| -#include "gpu/command_buffer/common/constants.h" |
| #include "gpu/command_buffer/common/value_state.h" |
| #include "gpu/command_buffer/service/command_buffer_service.h" |
| #include "gpu/command_buffer/service/context_group.h" |
| @@ -116,6 +115,10 @@ bool CommandBufferDriver::DoInitialize( |
| base::Bind(&CommandBufferDriver::OnResize, base::Unretained(this))); |
| decoder_->SetWaitSyncPointCallback(base::Bind( |
| &CommandBufferDriver::OnWaitSyncPoint, base::Unretained(this))); |
| + decoder_->SetFenceSyncReleaseCallback(base::Bind( |
| + &CommandBufferDriver::OnFenceSyncRelease, base::Unretained(this))); |
| + decoder_->SetWaitFenceSyncCallback(base::Bind( |
| + &CommandBufferDriver::OnWaitFenceSync, base::Unretained(this))); |
| gpu::gles2::DisallowedFeatures disallowed_features; |
| @@ -291,6 +294,44 @@ bool CommandBufferDriver::OnWaitSyncPoint(uint32_t sync_point) { |
| return scheduler_->scheduled(); |
| } |
| +void CommandBufferDriver::OnFenceSyncRelease(uint32_t release) { |
| + // TODO(dyen): Implement once CommandBufferID has been figured out and |
| + // we have a SyncPointClient. It would probably look like what is commented |
| + // out below: |
| + // if (!sync_point_client_->client_state()->IsFenceSyncReleased(release)) |
| + // sync_point_client_->ReleaseFenceSync(release); |
| + NOTIMPLEMENTED(); |
| +} |
| + |
| +bool CommandBufferDriver::OnWaitFenceSync( |
| + gpu::CommandBufferNamespace namespace_id, |
| + uint64_t command_buffer_id, |
| + uint32_t release) { |
| + gpu::SyncPointManager* sync_point_manager = gpu_state_->sync_point_manager(); |
| + DCHECK(sync_point_manager); |
| + |
| + scoped_refptr<gpu::SyncPointClientState> release_state = |
| + sync_point_manager->GetSyncPointClientState(namespace_id, |
| + command_buffer_id); |
| + |
| + if (!release_state.get()) |
|
dcheng
2015/09/28 07:39:33
No .get()
David Yen
2015/09/28 17:38:18
Done.
|
| + return true; |
| + |
| + if (release_state->IsFenceSyncReleased(release)) |
| + return true; |
| + |
| + // TODO(dyen): Implement once CommandBufferID has been figured out and |
| + // we have a SyncPointClient. It would probably look like what is commented |
| + // out below: |
| + // sync_point_client_->Wait( |
| + // release_state, |
| + // release, |
| + // base::Bind(&CommandBufferDriver::OnSyncPointRetired, |
| + // weak_factory_.GetWeakPtr())); |
| + NOTIMPLEMENTED(); |
| + return scheduler_->scheduled(); |
| +} |
| + |
| void CommandBufferDriver::OnSyncPointRetired() { |
| scheduler_->SetScheduled(true); |
| } |