Index: services/ui/public/cpp/mojo_gpu_memory_buffer.cc |
diff --git a/services/ui/public/cpp/mojo_gpu_memory_buffer.cc b/services/ui/public/cpp/mojo_gpu_memory_buffer.cc |
index fcc89b5d614eb862450b70a5c9628b473c8728dd..2b559a2d775d086cd27b82be37914427aa197f32 100644 |
--- a/services/ui/public/cpp/mojo_gpu_memory_buffer.cc |
+++ b/services/ui/public/cpp/mojo_gpu_memory_buffer.cc |
@@ -27,6 +27,7 @@ MojoGpuMemoryBufferImpl::MojoGpuMemoryBufferImpl( |
// TODO(rjkroege): Support running a destructor callback as necessary. |
MojoGpuMemoryBufferImpl::~MojoGpuMemoryBufferImpl() {} |
+// static |
std::unique_ptr<gfx::GpuMemoryBuffer> MojoGpuMemoryBufferImpl::Create( |
const gfx::Size& size, |
gfx::BufferFormat format, |
@@ -49,8 +50,23 @@ std::unique_ptr<gfx::GpuMemoryBuffer> MojoGpuMemoryBufferImpl::Create( |
auto shared_memory = |
base::MakeUnique<base::SharedMemory>(platform_handle, readonly); |
- return base::WrapUnique<gfx::GpuMemoryBuffer>( |
- new MojoGpuMemoryBufferImpl(size, format, std::move(shared_memory))); |
+ return base::MakeUnique<MojoGpuMemoryBufferImpl>( |
+ size, format, std::move(shared_memory)); |
+} |
+ |
+// static |
+std::unique_ptr<gfx::GpuMemoryBuffer> MojoGpuMemoryBufferImpl::CreateFromHandle( |
+ const gfx::GpuMemoryBufferHandle& handle, |
+ const gfx::Size& size, |
+ gfx::BufferFormat format, |
+ gfx::BufferUsage usage) { |
+ DCHECK_EQ(handle.type, gfx::SHARED_MEMORY_BUFFER); |
+ DCHECK(base::SharedMemory::IsHandleValid(handle.handle)); |
+ const bool readonly = false; |
+ auto shared_memory = |
+ base::MakeUnique<base::SharedMemory>(handle.handle, readonly); |
+ return base::MakeUnique<MojoGpuMemoryBufferImpl>( |
+ size, format, std::move(shared_memory)); |
} |
MojoGpuMemoryBufferImpl* MojoGpuMemoryBufferImpl::FromClientBuffer( |