gpu_memory_buffer_impl_win.cc revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "content/common/gpu/client/gpu_memory_buffer_impl.h" 6 7#include "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h" 8 9namespace content { 10 11// static 12scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::Create( 13 const gfx::Size& size, 14 unsigned internalformat, 15 unsigned usage) { 16 if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported( 17 size, internalformat, usage)) { 18 scoped_ptr<GpuMemoryBufferImplSharedMemory> buffer( 19 new GpuMemoryBufferImplSharedMemory(size, internalformat)); 20 if (!buffer->Initialize()) 21 return scoped_ptr<GpuMemoryBufferImpl>(); 22 23 return buffer.PassAs<GpuMemoryBufferImpl>(); 24 } 25 26 return scoped_ptr<GpuMemoryBufferImpl>(); 27} 28 29// static 30void GpuMemoryBufferImpl::AllocateForChildProcess( 31 const gfx::Size& size, 32 unsigned internalformat, 33 unsigned usage, 34 base::ProcessHandle child_process, 35 int child_id, 36 const AllocationCallback& callback) { 37 if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported( 38 size, internalformat, usage)) { 39 GpuMemoryBufferImplSharedMemory::AllocateSharedMemoryForChildProcess( 40 size, internalformat, child_process, callback); 41 return; 42 } 43 44 callback.Run(gfx::GpuMemoryBufferHandle()); 45} 46 47// static 48void GpuMemoryBufferImpl::DeletedByChildProcess( 49 gfx::GpuMemoryBufferType type, 50 const gfx::GpuMemoryBufferId& id, 51 base::ProcessHandle child_process) { 52} 53 54// static 55scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::CreateFromHandle( 56 const gfx::GpuMemoryBufferHandle& handle, 57 const gfx::Size& size, 58 unsigned internalformat) { 59 switch (handle.type) { 60 case gfx::SHARED_MEMORY_BUFFER: { 61 scoped_ptr<GpuMemoryBufferImplSharedMemory> buffer( 62 new GpuMemoryBufferImplSharedMemory(size, internalformat)); 63 if (!buffer->InitializeFromHandle(handle)) 64 return scoped_ptr<GpuMemoryBufferImpl>(); 65 66 return buffer.PassAs<GpuMemoryBufferImpl>(); 67 } 68 default: 69 return scoped_ptr<GpuMemoryBufferImpl>(); 70 } 71} 72 73} // namespace content 74