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

Side by Side Diff: gpu/ipc/common/gpu_memory_buffer_support.cc

Issue 2551743002: gpu: Move native memory buffer configuration into //gpu (Closed)
Patch Set: . Created 4 years 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
« no previous file with comments | « gpu/ipc/common/gpu_memory_buffer_support.h ('k') | gpu/ipc/common/gpu_switches.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "gpu/ipc/common/gpu_memory_buffer_support.h" 5 #include "gpu/ipc/common/gpu_memory_buffer_support.h"
6 6
7 #include "base/command_line.h"
7 #include "base/logging.h" 8 #include "base/logging.h"
8 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "gpu/ipc/common/gpu_switches.h"
11 #include "ui/gl/gl_switches.h"
9 12
10 #if defined(USE_OZONE) 13 #if defined(USE_OZONE)
11 #include "ui/ozone/public/client_native_pixmap_factory.h" 14 #include "ui/ozone/public/client_native_pixmap_factory.h"
12 #endif 15 #endif
13 16
14 namespace gpu { 17 namespace gpu {
15 18
19 bool IsNativeGpuMemoryBuffersEnabled() {
Tom Sepez 2016/12/07 17:13:48 nit: Grammar authoritarians would say AreNativeGpu
sadrul 2016/12/07 18:58:45 Done.
20 // Disable native buffers when using Mesa.
21 if (base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
22 switches::kUseGL) == gl::kGLImplementationOSMesaName) {
23 return false;
24 }
25
26 #if defined(OS_MACOSX)
27 return !base::CommandLine::ForCurrentProcess()->HasSwitch(
28 switches::kDisableNativeGpuMemoryBuffers);
29 #else
30 return base::CommandLine::ForCurrentProcess()->HasSwitch(
31 switches::kEnableNativeGpuMemoryBuffers);
32 #endif
33 }
34
16 gfx::GpuMemoryBufferType GetNativeGpuMemoryBufferType() { 35 gfx::GpuMemoryBufferType GetNativeGpuMemoryBufferType() {
17 #if defined(OS_MACOSX) 36 #if defined(OS_MACOSX)
18 return gfx::IO_SURFACE_BUFFER; 37 return gfx::IO_SURFACE_BUFFER;
19 #endif 38 #endif
20 #if defined(USE_OZONE) 39 #if defined(USE_OZONE)
21 return gfx::OZONE_NATIVE_PIXMAP; 40 return gfx::OZONE_NATIVE_PIXMAP;
22 #endif 41 #endif
23 return gfx::EMPTY_BUFFER; 42 return gfx::EMPTY_BUFFER;
24 } 43 }
25 44
(...skipping 25 matching lines...) Expand all
51 return false; 70 return false;
52 } 71 }
53 return ui::ClientNativePixmapFactory::GetInstance()->IsConfigurationSupported( 72 return ui::ClientNativePixmapFactory::GetInstance()->IsConfigurationSupported(
54 format, usage); 73 format, usage);
55 #endif 74 #endif
56 75
57 NOTREACHED(); 76 NOTREACHED();
58 return false; 77 return false;
59 } 78 }
60 79
80 GpuMemoryBufferConfigurationSet GetNativeGpuMemoryBufferConfigurations() {
81 GpuMemoryBufferConfigurationSet configurations;
82
83 if (IsNativeGpuMemoryBuffersEnabled()) {
84 const gfx::BufferFormat kNativeFormats[] = {
85 gfx::BufferFormat::R_8,
86 gfx::BufferFormat::RG_88,
87 gfx::BufferFormat::BGR_565,
88 gfx::BufferFormat::RGBA_4444,
89 gfx::BufferFormat::RGBA_8888,
90 gfx::BufferFormat::BGRA_8888,
91 gfx::BufferFormat::UYVY_422,
92 gfx::BufferFormat::YVU_420,
93 gfx::BufferFormat::YUV_420_BIPLANAR};
94 const gfx::BufferUsage kNativeUsages[] = {
95 gfx::BufferUsage::GPU_READ, gfx::BufferUsage::SCANOUT,
96 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
97 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT};
98 for (auto& format : kNativeFormats) {
99 for (auto& usage : kNativeUsages) {
100 if (IsNativeGpuMemoryBufferConfigurationSupported(format, usage))
101 configurations.insert(std::make_pair(format, usage));
102 }
103 }
104 }
105
106 #if defined(USE_OZONE) || defined(OS_MACOSX)
107 // Disable native buffers only when using Mesa.
108 bool force_native_gpu_read_write_formats =
109 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
110 switches::kUseGL) != gl::kGLImplementationOSMesaName;
111 #else
112 bool force_native_gpu_read_write_formats = false;
113 #endif
114 if (force_native_gpu_read_write_formats) {
115 const gfx::BufferFormat kGPUReadWriteFormats[] = {
116 gfx::BufferFormat::BGR_565, gfx::BufferFormat::RGBA_8888,
117 gfx::BufferFormat::RGBX_8888, gfx::BufferFormat::BGRA_8888,
118 gfx::BufferFormat::BGRX_8888, gfx::BufferFormat::UYVY_422,
119 gfx::BufferFormat::YVU_420, gfx::BufferFormat::YUV_420_BIPLANAR};
120 const gfx::BufferUsage kGPUReadWriteUsages[] = {gfx::BufferUsage::GPU_READ,
121 gfx::BufferUsage::SCANOUT};
122 for (auto& format : kGPUReadWriteFormats) {
123 for (auto& usage : kGPUReadWriteUsages) {
124 if (IsNativeGpuMemoryBufferConfigurationSupported(format, usage))
125 configurations.insert(std::make_pair(format, usage));
126 }
127 }
128 }
129
130 return configurations;
131 }
132
61 } // namespace gpu 133 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/ipc/common/gpu_memory_buffer_support.h ('k') | gpu/ipc/common/gpu_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698