Index: content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc |
diff --git a/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc b/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc |
index efa641b706e839d3ef920e3fcbe17e9e0a2f3273..02437ffec15a3b53d48e1b95f237aa907ded084e 100644 |
--- a/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc |
+++ b/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc |
@@ -11,6 +11,11 @@ |
#include "ui/gl/gl_bindings.h" |
namespace content { |
+namespace { |
+ |
+void Noop() {} |
+ |
+} // namespace |
GpuMemoryBufferImplSharedMemory::GpuMemoryBufferImplSharedMemory( |
gfx::GpuMemoryBufferId id, |
@@ -28,11 +33,11 @@ GpuMemoryBufferImplSharedMemory::~GpuMemoryBufferImplSharedMemory() { |
} |
// static |
-scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImplSharedMemory::Create( |
- gfx::GpuMemoryBufferId id, |
- const gfx::Size& size, |
- gfx::BufferFormat format, |
- const DestructionCallback& callback) { |
+scoped_ptr<GpuMemoryBufferImplSharedMemory> |
+GpuMemoryBufferImplSharedMemory::Create(gfx::GpuMemoryBufferId id, |
+ const gfx::Size& size, |
+ gfx::BufferFormat format, |
+ const DestructionCallback& callback) { |
size_t buffer_size = 0u; |
if (!gfx::BufferSizeForBufferFormatChecked(size, format, &buffer_size)) |
return nullptr; |
@@ -68,11 +73,12 @@ GpuMemoryBufferImplSharedMemory::AllocateForChildProcess( |
} |
// static |
-scoped_ptr<GpuMemoryBufferImpl> |
+scoped_ptr<GpuMemoryBufferImplSharedMemory> |
GpuMemoryBufferImplSharedMemory::CreateFromHandle( |
const gfx::GpuMemoryBufferHandle& handle, |
const gfx::Size& size, |
gfx::BufferFormat format, |
+ gfx::BufferUsage usage, |
const DestructionCallback& callback) { |
if (!base::SharedMemory::IsHandleValid(handle.handle)) |
return nullptr; |
@@ -83,13 +89,8 @@ GpuMemoryBufferImplSharedMemory::CreateFromHandle( |
if (!shared_memory->Map(buffer_size)) |
base::TerminateBecauseOutOfMemory(buffer_size); |
- return make_scoped_ptr<GpuMemoryBufferImpl>( |
- new GpuMemoryBufferImplSharedMemory( |
- handle.id, |
- size, |
- format, |
- callback, |
- shared_memory.Pass())); |
+ return make_scoped_ptr(new GpuMemoryBufferImplSharedMemory( |
+ handle.id, size, format, callback, shared_memory.Pass())); |
} |
// static |
@@ -131,6 +132,13 @@ bool GpuMemoryBufferImplSharedMemory::IsUsageSupported(gfx::BufferUsage usage) { |
} |
// static |
+bool GpuMemoryBufferImplSharedMemory::IsConfigurationSupported( |
+ gfx::BufferFormat format, |
+ gfx::BufferUsage usage) { |
+ return IsFormatSupported(format) && IsUsageSupported(usage); |
+} |
+ |
+// static |
bool GpuMemoryBufferImplSharedMemory::IsSizeValidForFormat( |
const gfx::Size& size, |
gfx::BufferFormat format) { |
@@ -167,6 +175,21 @@ bool GpuMemoryBufferImplSharedMemory::IsSizeValidForFormat( |
return false; |
} |
+// static |
+base::Closure GpuMemoryBufferImplSharedMemory::AllocateForTesting( |
+ const gfx::Size& size, |
+ gfx::BufferFormat format, |
+ gfx::BufferUsage usage, |
+ gfx::GpuMemoryBufferHandle* handle) { |
+ base::SharedMemory shared_memory; |
+ bool rv = shared_memory.CreateAnonymous( |
+ gfx::BufferSizeForBufferFormat(size, format)); |
+ DCHECK(rv); |
+ handle->type = gfx::SHARED_MEMORY_BUFFER; |
+ handle->handle = base::SharedMemory::DuplicateHandle(shared_memory.handle()); |
+ return base::Bind(&Noop); |
+} |
+ |
bool GpuMemoryBufferImplSharedMemory::Map(void** data) { |
DCHECK(!mapped_); |
size_t offset = 0; |