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..fad3ea0797257b7928def6a9f3a12ee8da74273e 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, |
@@ -53,6 +54,21 @@ std::unique_ptr<gfx::GpuMemoryBuffer> MojoGpuMemoryBufferImpl::Create( |
new 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::WrapUnique<gfx::GpuMemoryBuffer>( |
dcheng
2016/08/17 22:59:00
Nit: Omit the template parameter here (WrapUnique
Peng
2016/08/17 23:28:17
Done.
|
+ new MojoGpuMemoryBufferImpl(size, format, std::move(shared_memory))); |
+} |
+ |
MojoGpuMemoryBufferImpl* MojoGpuMemoryBufferImpl::FromClientBuffer( |
ClientBuffer buffer) { |
return reinterpret_cast<MojoGpuMemoryBufferImpl*>(buffer); |