Index: gpu/ipc/in_process_command_buffer.cc |
diff --git a/gpu/ipc/in_process_command_buffer.cc b/gpu/ipc/in_process_command_buffer.cc |
index 6f1f7f52d4baffab481f4e531a1f48b764ba96a2..b74a021153f05b4c666b83a82de2370c33487886 100644 |
--- a/gpu/ipc/in_process_command_buffer.cc |
+++ b/gpu/ipc/in_process_command_buffer.cc |
@@ -180,8 +180,8 @@ gpu::gles2::ProgramCache* InProcessCommandBuffer::Service::program_cache() { |
InProcessCommandBuffer::InProcessCommandBuffer( |
const scoped_refptr<Service>& service) |
- : command_buffer_id_( |
- CommandBufferId::FromUnsafeValue(g_next_command_buffer_id.GetNext())), |
+ : command_buffer_id_(CommandBufferId::FromUnsafeValue( |
+ g_next_command_buffer_id.GetNext() + 1)), |
delayed_work_pending_(false), |
image_factory_(nullptr), |
gpu_control_client_(nullptr), |
@@ -347,10 +347,12 @@ bool InProcessCommandBuffer::InitializeOnGpuThread( |
return false; |
} |
- sync_point_order_data_ = SyncPointOrderData::Create(); |
- sync_point_client_ = base::MakeUnique<SyncPointClient>( |
- service_->sync_point_manager(), sync_point_order_data_, GetNamespaceID(), |
- GetCommandBufferID()); |
+ sync_point_order_data_ = |
+ service_->sync_point_manager()->CreateSyncPointOrderData(); |
+ sync_point_client_state_ = |
+ service_->sync_point_manager()->CreateSyncPointClientState( |
+ GetNamespaceID(), GetCommandBufferID(), |
+ sync_point_order_data_->sequence_id()); |
if (service_->UseVirtualizedGLContexts() || |
decoder_->GetContextGroup() |
@@ -459,11 +461,14 @@ bool InProcessCommandBuffer::DestroyOnGpuThread() { |
} |
context_ = nullptr; |
surface_ = nullptr; |
- sync_point_client_ = nullptr; |
if (sync_point_order_data_) { |
sync_point_order_data_->Destroy(); |
sync_point_order_data_ = nullptr; |
} |
+ if (sync_point_client_state_) { |
+ sync_point_client_state_->Destroy(); |
+ sync_point_client_state_ = nullptr; |
+ } |
gl_share_group_ = nullptr; |
context_group_ = nullptr; |
@@ -507,9 +512,7 @@ void InProcessCommandBuffer::QueueTask(bool out_of_order, |
} |
// Release the |task_queue_lock_| before calling ScheduleTask because |
// the callback may get called immediately and attempt to acquire the lock. |
- SyncPointManager* sync_manager = service_->sync_point_manager(); |
- uint32_t order_num = |
- sync_point_order_data_->GenerateUnprocessedOrderNumber(sync_manager); |
+ uint32_t order_num = sync_point_order_data_->GenerateUnprocessedOrderNumber(); |
{ |
base::AutoLock lock(task_queue_lock_); |
task_queue_.push(base::MakeUnique<GpuTask>(task, order_num)); |
@@ -802,7 +805,7 @@ void InProcessCommandBuffer::CreateImageOnGpuThread( |
} |
if (fence_sync) |
- sync_point_client_->ReleaseFenceSync(fence_sync); |
+ sync_point_client_state_->ReleaseFenceSync(fence_sync); |
} |
void InProcessCommandBuffer::DestroyImage(int32_t id) { |
@@ -834,7 +837,7 @@ void InProcessCommandBuffer::FenceSyncReleaseOnGpuThread(uint64_t release) { |
decoder_->GetContextGroup()->mailbox_manager(); |
mailbox_manager->PushTextureUpdates(sync_token); |
- sync_point_client_->ReleaseFenceSync(release); |
+ sync_point_client_state_->ReleaseFenceSync(release); |
} |
bool InProcessCommandBuffer::WaitSyncTokenOnGpuThread( |
@@ -849,7 +852,7 @@ bool InProcessCommandBuffer::WaitSyncTokenOnGpuThread( |
if (service_->BlockThreadOnWaitSyncToken()) { |
// Wait if sync point wait is valid. |
- if (sync_point_client_->Wait( |
+ if (sync_point_client_state_->Wait( |
sync_token, |
base::Bind(&base::WaitableEvent::Signal, |
base::Unretained(&fence_sync_wait_event_)))) { |
@@ -860,7 +863,7 @@ bool InProcessCommandBuffer::WaitSyncTokenOnGpuThread( |
return false; |
} |
- waiting_for_sync_point_ = sync_point_client_->Wait( |
+ waiting_for_sync_point_ = sync_point_client_state_->Wait( |
sync_token, |
base::Bind(&InProcessCommandBuffer::OnWaitSyncTokenCompleted, |
gpu_thread_weak_ptr_factory_.GetWeakPtr(), sync_token)); |
@@ -906,7 +909,7 @@ void InProcessCommandBuffer::RescheduleAfterFinishedOnGpuThread() { |
void InProcessCommandBuffer::SignalSyncTokenOnGpuThread( |
const SyncToken& sync_token, |
const base::Closure& callback) { |
- if (!sync_point_client_->Wait(sync_token, WrapCallback(callback))) |
+ if (!sync_point_client_state_->Wait(sync_token, WrapCallback(callback))) |
callback.Run(); |
} |