1 // Copyright 2014 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.
5 #include "content/common/gpu/client/gpu_memory_buffer_impl.h"
7 #include "content/common/gpu/client/gpu_memory_buffer_impl_ozone_native_buffer.h"
8 #include "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h"
13 void GpuMemoryBufferImpl::Create(const gfx::Size
& size
,
14 unsigned internalformat
,
17 const CreationCallback
& callback
) {
18 if (GpuMemoryBufferImplOzoneNativeBuffer::IsConfigurationSupported(
19 internalformat
, usage
)) {
20 GpuMemoryBufferImplOzoneNativeBuffer::Create(
21 size
, internalformat
, usage
, client_id
, callback
);
25 if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
26 size
, internalformat
, usage
)) {
27 GpuMemoryBufferImplSharedMemory::Create(
28 size
, internalformat
, usage
, callback
);
32 callback
.Run(scoped_ptr
<GpuMemoryBufferImpl
>());
36 void GpuMemoryBufferImpl::AllocateForChildProcess(
37 const gfx::Size
& size
,
38 unsigned internalformat
,
40 base::ProcessHandle child_process
,
42 const AllocationCallback
& callback
) {
43 if (GpuMemoryBufferImplOzoneNativeBuffer::IsConfigurationSupported(
44 internalformat
, usage
)) {
45 GpuMemoryBufferImplOzoneNativeBuffer::AllocateForChildProcess(
46 size
, internalformat
, usage
, child_client_id
, callback
);
49 if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
50 size
, internalformat
, usage
)) {
51 GpuMemoryBufferImplSharedMemory::AllocateForChildProcess(
52 size
, internalformat
, child_process
, callback
);
56 callback
.Run(gfx::GpuMemoryBufferHandle());
60 void GpuMemoryBufferImpl::DeletedByChildProcess(
61 gfx::GpuMemoryBufferType type
,
62 const gfx::GpuMemoryBufferId
& id
,
63 base::ProcessHandle child_process
) {
67 scoped_ptr
<GpuMemoryBufferImpl
> GpuMemoryBufferImpl::CreateFromHandle(
68 const gfx::GpuMemoryBufferHandle
& handle
,
69 const gfx::Size
& size
,
70 unsigned internalformat
,
71 const DestructionCallback
& callback
) {
72 switch (handle
.type
) {
73 case gfx::SHARED_MEMORY_BUFFER
:
74 return GpuMemoryBufferImplSharedMemory::CreateFromHandle(
75 handle
, size
, internalformat
, callback
);
76 case gfx::OZONE_NATIVE_BUFFER
:
77 return GpuMemoryBufferImplOzoneNativeBuffer::CreateFromHandle(
78 handle
, size
, internalformat
, callback
);
80 return scoped_ptr
<GpuMemoryBufferImpl
>();
84 } // namespace content