Index: content/common/gpu/client/command_buffer_proxy_impl.cc |
diff --git a/content/common/gpu/client/command_buffer_proxy_impl.cc b/content/common/gpu/client/command_buffer_proxy_impl.cc |
index 9acf05a9b314b1c6b4362152804814b1d8354d4e..336488373490b19452fc9b5372bd2b3f07e6443c 100644 |
--- a/content/common/gpu/client/command_buffer_proxy_impl.cc |
+++ b/content/common/gpu/client/command_buffer_proxy_impl.cc |
@@ -308,17 +308,19 @@ int32_t CommandBufferProxyImpl::CreateImage(ClientBuffer buffer, |
int32 new_id = channel_->ReserveImageId(); |
+ gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager = |
+ channel_->gpu_memory_buffer_manager(); |
gfx::GpuMemoryBuffer* gpu_memory_buffer = |
- channel_->gpu_memory_buffer_manager()->GpuMemoryBufferFromClientBuffer( |
- buffer); |
+ gpu_memory_buffer_manager->GpuMemoryBufferFromClientBuffer(buffer); |
DCHECK(gpu_memory_buffer); |
// This handle is owned by the GPU process and must be passed to it or it |
// will leak. In otherwords, do not early out on error between here and the |
// sending of the CreateImage IPC below. |
+ bool requires_sync_point = false; |
gfx::GpuMemoryBufferHandle handle = |
- channel_->ShareGpuMemoryBufferToGpuProcess( |
- gpu_memory_buffer->GetHandle()); |
+ channel_->ShareGpuMemoryBufferToGpuProcess(gpu_memory_buffer->GetHandle(), |
+ &requires_sync_point); |
DCHECK(gpu::ImageFactory::IsImageFormatCompatibleWithGpuMemoryBufferFormat( |
internalformat, gpu_memory_buffer->GetFormat())); |
@@ -331,6 +333,11 @@ int32_t CommandBufferProxyImpl::CreateImage(ClientBuffer buffer, |
return -1; |
} |
+ if (requires_sync_point) { |
+ gpu_memory_buffer_manager->SetDestructionSyncPoint(gpu_memory_buffer, |
+ InsertSyncPoint()); |
+ } |
+ |
return new_id; |
} |