Index: content/common/gpu/gpu_memory_buffer_factory_ozone_native_buffer.cc |
diff --git a/content/common/gpu/gpu_memory_buffer_factory_ozone_native_buffer.cc b/content/common/gpu/gpu_memory_buffer_factory_ozone_native_buffer.cc |
index 6185150e5cf71764ea4ffcef46548084ae8253e3..eb5223819f1a805f28d203b46016c9d463c8ca9b 100644 |
--- a/content/common/gpu/gpu_memory_buffer_factory_ozone_native_buffer.cc |
+++ b/content/common/gpu/gpu_memory_buffer_factory_ozone_native_buffer.cc |
@@ -11,10 +11,49 @@ |
namespace content { |
namespace { |
-const GpuMemoryBufferFactory::Configuration kSupportedConfigurations[] = { |
- { gfx::GpuMemoryBuffer::RGBA_8888, gfx::GpuMemoryBuffer::SCANOUT }, |
- { gfx::GpuMemoryBuffer::RGBX_8888, gfx::GpuMemoryBuffer::SCANOUT } |
-}; |
+gfx::GpuMemoryBuffer::Format ConvertFormat( |
+ ui::SurfaceFactoryOzone::BufferFormat ozone_format) { |
+ switch (ozone_format) { |
+ case ui::SurfaceFactoryOzone::BGRA_8888: |
+ return gfx::GpuMemoryBuffer::BGRA_8888; |
+ case ui::SurfaceFactoryOzone::RGBX_8888: |
+ return gfx::GpuMemoryBuffer::RGBX_8888; |
+ default: |
+ NOTREACHED(); |
+ } |
+ NOTREACHED(); |
+ return gfx::GpuMemoryBuffer::BGRA_8888; |
+} |
+ |
+gfx::GpuMemoryBuffer::Usage ConvertUsage( |
+ ui::SurfaceFactoryOzone::BufferUsage ozone_usage) { |
+ switch (ozone_usage) { |
+ case ui::SurfaceFactoryOzone::MAP: |
+ return gfx::GpuMemoryBuffer::MAP; |
+ case ui::SurfaceFactoryOzone::SCANOUT: |
+ return gfx::GpuMemoryBuffer::SCANOUT; |
+ } |
+ NOTREACHED(); |
+ return gfx::GpuMemoryBuffer::MAP; |
+} |
+ |
+void ConvertConfigurations( |
+ const std::vector<ui::SurfaceFactoryOzone::Configuration>& |
+ ozone_configurations, |
+ std::vector<GpuMemoryBufferFactory::Configuration>* configurations) { |
+ for (auto& ozone_conf : ozone_configurations) { |
+ configurations->push_back( |
+ {ConvertFormat(ozone_conf.format), ConvertUsage(ozone_conf.usage)}); |
+ } |
+} |
+ |
+void GetSupportedConfigurations( |
+ std::vector<GpuMemoryBufferFactory::Configuration>* configurations) { |
+ std::vector<ui::SurfaceFactoryOzone::Configuration> ozone_configurations = |
+ ui::SurfaceFactoryOzone::GetInstance() |
+ ->GetSupportedNativePixmapConfigurations(); |
+ ConvertConfigurations(ozone_configurations, configurations); |
+} |
} // namespace |
@@ -30,7 +69,9 @@ GpuMemoryBufferFactoryOzoneNativeBuffer:: |
bool GpuMemoryBufferFactoryOzoneNativeBuffer:: |
IsGpuMemoryBufferConfigurationSupported(gfx::GpuMemoryBuffer::Format format, |
gfx::GpuMemoryBuffer::Usage usage) { |
- for (auto& configuration : kSupportedConfigurations) { |
+ std::vector<Configuration> configurations; |
+ GetSupportedConfigurations(&configurations); |
+ for (auto& configuration : configurations) { |
if (configuration.format == format && configuration.usage == usage) |
return true; |
} |
@@ -41,13 +82,7 @@ bool GpuMemoryBufferFactoryOzoneNativeBuffer:: |
void GpuMemoryBufferFactoryOzoneNativeBuffer:: |
GetSupportedGpuMemoryBufferConfigurations( |
std::vector<Configuration>* configurations) { |
- if (!ui::SurfaceFactoryOzone::GetInstance()->CanCreateNativePixmap( |
- ui::SurfaceFactoryOzone::SCANOUT)) |
- return; |
- |
- configurations->assign( |
- kSupportedConfigurations, |
- kSupportedConfigurations + arraysize(kSupportedConfigurations)); |
+ GetSupportedConfigurations(configurations); |
} |
gfx::GpuMemoryBufferHandle |
@@ -58,14 +93,8 @@ GpuMemoryBufferFactoryOzoneNativeBuffer::CreateGpuMemoryBuffer( |
gfx::GpuMemoryBuffer::Usage usage, |
int client_id, |
gfx::PluginWindowHandle surface_handle) { |
- if (!ozone_native_buffer_factory_.CreateGpuMemoryBuffer( |
- id, size, format, usage, client_id, surface_handle)) { |
- return gfx::GpuMemoryBufferHandle(); |
- } |
- gfx::GpuMemoryBufferHandle handle; |
- handle.type = gfx::OZONE_NATIVE_BUFFER; |
- handle.id = id; |
- return handle; |
+ return ozone_native_buffer_factory_.CreateGpuMemoryBuffer( |
+ id, size, format, usage, client_id, surface_handle); |
} |
void GpuMemoryBufferFactoryOzoneNativeBuffer::DestroyGpuMemoryBuffer( |