diff options
Diffstat (limited to 'chromium/content/common/gpu/client/gpu_memory_buffer_impl_win.cc')
-rw-r--r-- | chromium/content/common/gpu/client/gpu_memory_buffer_impl_win.cc | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/chromium/content/common/gpu/client/gpu_memory_buffer_impl_win.cc b/chromium/content/common/gpu/client/gpu_memory_buffer_impl_win.cc index ffd4e381c7d..d885f3f8676 100644 --- a/chromium/content/common/gpu/client/gpu_memory_buffer_impl_win.cc +++ b/chromium/content/common/gpu/client/gpu_memory_buffer_impl_win.cc @@ -8,15 +8,51 @@ namespace content { +// static scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::Create( + const gfx::Size& size, + unsigned internalformat, + unsigned usage) { + if (GpuMemoryBufferImplShm::IsConfigurationSupported( + size, internalformat, usage)) { + scoped_ptr<GpuMemoryBufferImplShm> buffer( + new GpuMemoryBufferImplShm(size, internalformat)); + if (!buffer->Initialize()) + return scoped_ptr<GpuMemoryBufferImpl>(); + + return buffer.PassAs<GpuMemoryBufferImpl>(); + } + + return scoped_ptr<GpuMemoryBufferImpl>(); +} + +// static +void GpuMemoryBufferImpl::AllocateForChildProcess( + const gfx::Size& size, + unsigned internalformat, + unsigned usage, + base::ProcessHandle child_process, + const AllocationCallback& callback) { + if (GpuMemoryBufferImplShm::IsConfigurationSupported( + size, internalformat, usage)) { + GpuMemoryBufferImplShm::AllocateSharedMemoryForChildProcess( + size, internalformat, child_process, callback); + return; + } + + callback.Run(gfx::GpuMemoryBufferHandle()); +} + +// static +scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::CreateFromHandle( gfx::GpuMemoryBufferHandle handle, - gfx::Size size, + const gfx::Size& size, unsigned internalformat) { switch (handle.type) { case gfx::SHARED_MEMORY_BUFFER: { scoped_ptr<GpuMemoryBufferImplShm> buffer( new GpuMemoryBufferImplShm(size, internalformat)); - if (!buffer->Initialize(handle)) + if (!buffer->InitializeFromHandle(handle)) return scoped_ptr<GpuMemoryBufferImpl>(); return buffer.PassAs<GpuMemoryBufferImpl>(); |