| Index: services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc
|
| diff --git a/services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc b/services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc
|
| index 1c4d027e3feceb6aa259742e29fe005a75fdfdb1..e61ae8d5f608afd3eeba264c6abc35d0c9bbdf66 100644
|
| --- a/services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc
|
| +++ b/services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc
|
| @@ -31,8 +31,9 @@ void OnGpuMemoryBufferAllocated(gfx::GpuMemoryBufferHandle* ret_handle,
|
| MojoGpuMemoryBufferManager::MojoGpuMemoryBufferManager(
|
| service_manager::Connector* connector)
|
| : thread_("GpuMemoryThread"),
|
| - connector_(connector->Clone()),
|
| - weak_ptr_factory_(this) {
|
| + gpu_memory_buffer_manager_(
|
| + make_scoped_refptr(new gpu::ClientGpuMemoryBufferManager(this))),
|
| + connector_(connector->Clone()) {
|
| CHECK(thread_.Start());
|
| // The thread is owned by this object. Which means the test will not run if
|
| // the object has been destroyed. So Unretained() is safe.
|
| @@ -46,6 +47,7 @@ MojoGpuMemoryBufferManager::~MojoGpuMemoryBufferManager() {
|
| FROM_HERE, base::Bind(&MojoGpuMemoryBufferManager::TearDownThread,
|
| base::Unretained(this)));
|
| thread_.Stop();
|
| + gpu_memory_buffer_manager_->reset_delegate();
|
| }
|
|
|
| void MojoGpuMemoryBufferManager::InitThread() {
|
| @@ -71,28 +73,10 @@ void MojoGpuMemoryBufferManager::AllocateGpuMemoryBufferOnThread(
|
| base::Bind(&OnGpuMemoryBufferAllocated, handle, wait));
|
| }
|
|
|
| -void MojoGpuMemoryBufferManager::DeletedGpuMemoryBuffer(
|
| - gfx::GpuMemoryBufferId id,
|
| - const gpu::SyncToken& sync_token) {
|
| - if (!thread_.task_runner()->BelongsToCurrentThread()) {
|
| - thread_.task_runner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&MojoGpuMemoryBufferManager::DeletedGpuMemoryBuffer,
|
| - base::Unretained(this), id, sync_token));
|
| - return;
|
| - }
|
| - gpu_service_->DestroyGpuMemoryBuffer(id, sync_token);
|
| -}
|
| -
|
| -std::unique_ptr<gfx::GpuMemoryBuffer>
|
| -MojoGpuMemoryBufferManager::AllocateGpuMemoryBuffer(
|
| +gfx::GpuMemoryBufferHandle MojoGpuMemoryBufferManager::GetSharedMemoryHandle(
|
| const gfx::Size& size,
|
| gfx::BufferFormat format,
|
| - gfx::BufferUsage usage,
|
| - gpu::SurfaceHandle surface_handle) {
|
| - // Note: this can be called from multiple threads at the same time. Some of
|
| - // those threads may not have a TaskRunner set.
|
| - DCHECK_EQ(gpu::kNullSurfaceHandle, surface_handle);
|
| + gfx::BufferUsage usage) {
|
| CHECK(!thread_.task_runner()->BelongsToCurrentThread());
|
| gfx::GpuMemoryBufferHandle gmb_handle;
|
| base::WaitableEvent wait(base::WaitableEvent::ResetPolicy::AUTOMATIC,
|
| @@ -103,40 +87,20 @@ MojoGpuMemoryBufferManager::AllocateGpuMemoryBuffer(
|
| base::Unretained(this), size, format, usage, &gmb_handle,
|
| &wait));
|
| wait.Wait();
|
| - if (gmb_handle.is_null())
|
| - return nullptr;
|
| - std::unique_ptr<gpu::GpuMemoryBufferImpl> buffer(
|
| - gpu::GpuMemoryBufferImpl::CreateFromHandle(
|
| - gmb_handle, size, format, usage,
|
| - base::Bind(&MojoGpuMemoryBufferManager::DeletedGpuMemoryBuffer,
|
| - weak_ptr_factory_.GetWeakPtr(), gmb_handle.id)));
|
| - if (!buffer) {
|
| - DeletedGpuMemoryBuffer(gmb_handle.id, gpu::SyncToken());
|
| - return nullptr;
|
| - }
|
| - return std::move(buffer);
|
| + return gmb_handle;
|
| }
|
|
|
| -std::unique_ptr<gfx::GpuMemoryBuffer>
|
| -MojoGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle(
|
| - const gfx::GpuMemoryBufferHandle& handle,
|
| - const gfx::Size& size,
|
| - gfx::BufferFormat format) {
|
| - NOTIMPLEMENTED();
|
| - return nullptr;
|
| -}
|
| -
|
| -gfx::GpuMemoryBuffer*
|
| -MojoGpuMemoryBufferManager::GpuMemoryBufferFromClientBuffer(
|
| - ClientBuffer buffer) {
|
| - return gpu::GpuMemoryBufferImpl::FromClientBuffer(buffer);
|
| -}
|
| -
|
| -void MojoGpuMemoryBufferManager::SetDestructionSyncToken(
|
| - gfx::GpuMemoryBuffer* buffer,
|
| +void MojoGpuMemoryBufferManager::DeletedGpuMemoryBuffer(
|
| + gfx::GpuMemoryBufferId id,
|
| const gpu::SyncToken& sync_token) {
|
| - static_cast<gpu::GpuMemoryBufferImpl*>(buffer)->set_destruction_sync_token(
|
| - sync_token);
|
| + if (!thread_.task_runner()->BelongsToCurrentThread()) {
|
| + thread_.task_runner()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&MojoGpuMemoryBufferManager::DeletedGpuMemoryBuffer,
|
| + base::Unretained(this), id, sync_token));
|
| + return;
|
| + }
|
| + gpu_service_->DestroyGpuMemoryBuffer(id, sync_token);
|
| }
|
|
|
| } // namespace ui
|
|
|