Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(241)

Side by Side Diff: content/common/gpu/client/gpu_memory_buffer_impl_ozone.cc

Issue 701033005: content: Move type selection logic out of GpuMemoryBufferImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove blank line and add missing CONTENT_EXPORT Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/common/gpu/client/gpu_memory_buffer_impl.h" 5 #include "content/common/gpu/client/gpu_memory_buffer_impl.h"
6 6
7 #include "content/common/gpu/client/gpu_memory_buffer_impl_ozone_native_buffer.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" 8 #include "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h"
9 9
10 namespace content { 10 namespace content {
11 11
12 // static 12 // static
13 void GpuMemoryBufferImpl::Create(gfx::GpuMemoryBufferId id, 13 void GpuMemoryBufferImpl::GetSupportedTypes(
14 std::vector<gfx::GpuMemoryBufferType>* types) {
15 const gfx::GpuMemoryBufferType supported_types[] = {
16 gfx::OZONE_NATIVE_BUFFER,
17 gfx::SHARED_MEMORY_BUFFER
18 };
19 types->assign(supported_types, supported_types + arraysize(supported_types));
20 }
21
22 // static
23 bool GpuMemoryBufferImpl::IsConfigurationSupported(
24 gfx::GpuMemoryBufferType type,
25 Format format,
26 Usage usage) {
27 switch (type) {
28 case gfx::SHARED_MEMORY_BUFFER:
29 return GpuMemoryBufferImplSharedMemory::IsFormatSupported(format) &&
30 GpuMemoryBufferImplSharedMemory::IsUsageSupported(usage);
31 case gfx::OZONE_NATIVE_BUFFER:
32 return GpuMemoryBufferImplOzoneNativeBuffer::IsFormatSupported(format) &&
33 GpuMemoryBufferImplOzoneNativeBuffer::IsUsageSupported(usage);
34 default:
35 NOTREACHED();
36 return false;
37 }
38 }
39
40 // static
41 void GpuMemoryBufferImpl::Create(gfx::GpuMemoryBufferType type,
42 gfx::GpuMemoryBufferId id,
14 const gfx::Size& size, 43 const gfx::Size& size,
15 Format format, 44 Format format,
16 Usage usage, 45 Usage usage,
17 int client_id, 46 int client_id,
18 const CreationCallback& callback) { 47 const CreationCallback& callback) {
19 if (GpuMemoryBufferImplOzoneNativeBuffer::IsConfigurationSupported(format, 48 switch (type) {
20 usage)) { 49 case gfx::SHARED_MEMORY_BUFFER:
21 GpuMemoryBufferImplOzoneNativeBuffer::Create( 50 GpuMemoryBufferImplSharedMemory::Create(id, size, format, callback);
22 id, size, format, client_id, callback); 51 break;
23 return; 52 case gfx::OZONE_NATIVE_BUFFER:
53 GpuMemoryBufferImplOzoneNativeBuffer::Create(
54 id, size, format, client_id, callback);
55 break;
56 default:
57 NOTREACHED();
58 break;
24 } 59 }
25
26 if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
27 size, format, usage)) {
28 GpuMemoryBufferImplSharedMemory::Create(id, size, format, callback);
29 return;
30 }
31
32 callback.Run(scoped_ptr<GpuMemoryBufferImpl>());
33 } 60 }
34 61
35 // static 62 // static
36 void GpuMemoryBufferImpl::AllocateForChildProcess( 63 void GpuMemoryBufferImpl::AllocateForChildProcess(
64 gfx::GpuMemoryBufferType type,
37 gfx::GpuMemoryBufferId id, 65 gfx::GpuMemoryBufferId id,
38 const gfx::Size& size, 66 const gfx::Size& size,
39 Format format, 67 Format format,
40 Usage usage, 68 Usage usage,
41 base::ProcessHandle child_process, 69 base::ProcessHandle child_process,
42 int child_client_id, 70 int child_client_id,
43 const AllocationCallback& callback) { 71 const AllocationCallback& callback) {
44 if (GpuMemoryBufferImplOzoneNativeBuffer::IsConfigurationSupported(format, 72 switch (type) {
45 usage)) { 73 case gfx::SHARED_MEMORY_BUFFER:
46 GpuMemoryBufferImplOzoneNativeBuffer::AllocateForChildProcess( 74 GpuMemoryBufferImplSharedMemory::AllocateForChildProcess(
47 id, size, format, child_client_id, callback); 75 id, size, format, child_process, callback);
48 return; 76 break;
77 case gfx::OZONE_NATIVE_BUFFER:
78 GpuMemoryBufferImplOzoneNativeBuffer::AllocateForChildProcess(
79 id, size, format, child_client_id, callback);
80 break;
81 default:
82 NOTREACHED();
83 break;
49 } 84 }
50
51 if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
52 size, format, usage)) {
53 GpuMemoryBufferImplSharedMemory::AllocateForChildProcess(
54 id, size, format, child_process, callback);
55 return;
56 }
57
58 callback.Run(gfx::GpuMemoryBufferHandle());
59 } 85 }
60 86
61 // static 87 // static
62 void GpuMemoryBufferImpl::DeletedByChildProcess( 88 void GpuMemoryBufferImpl::DeletedByChildProcess(
63 gfx::GpuMemoryBufferType type, 89 gfx::GpuMemoryBufferType type,
64 gfx::GpuMemoryBufferId id, 90 gfx::GpuMemoryBufferId id,
65 base::ProcessHandle child_process, 91 base::ProcessHandle child_process,
66 int child_client_id, 92 int child_client_id,
67 uint32_t sync_point) { 93 uint32_t sync_point) {
68 switch (type) { 94 switch (type) {
(...skipping 16 matching lines...) Expand all
85 Format format, 111 Format format,
86 const DestructionCallback& callback) { 112 const DestructionCallback& callback) {
87 switch (handle.type) { 113 switch (handle.type) {
88 case gfx::SHARED_MEMORY_BUFFER: 114 case gfx::SHARED_MEMORY_BUFFER:
89 return GpuMemoryBufferImplSharedMemory::CreateFromHandle( 115 return GpuMemoryBufferImplSharedMemory::CreateFromHandle(
90 handle, size, format, callback); 116 handle, size, format, callback);
91 case gfx::OZONE_NATIVE_BUFFER: 117 case gfx::OZONE_NATIVE_BUFFER:
92 return GpuMemoryBufferImplOzoneNativeBuffer::CreateFromHandle( 118 return GpuMemoryBufferImplOzoneNativeBuffer::CreateFromHandle(
93 handle, size, format, callback); 119 handle, size, format, callback);
94 default: 120 default:
121 NOTREACHED();
95 return scoped_ptr<GpuMemoryBufferImpl>(); 122 return scoped_ptr<GpuMemoryBufferImpl>();
96 } 123 }
97 } 124 }
98 125
99 } // namespace content 126 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698