Chromium Code Reviews| 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 fa12bf90c4f1661bfa32e688b7b63de0b4074c51..ad688efd7a88b82ce139e4575068bfa4c7030fcd 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 |
| @@ -6,15 +6,56 @@ |
| #include "base/logging.h" |
| #include "ui/gl/gl_image.h" |
| -#include "ui/ozone/public/surface_factory_ozone.h" |
| +#include "ui/ozone/public/native_pixmap_client.h" |
| namespace content { |
| namespace { |
| -const GpuMemoryBufferFactory::Configuration kSupportedConfigurations[] = { |
| - { gfx::GpuMemoryBuffer::BGRA_8888, gfx::GpuMemoryBuffer::SCANOUT }, |
| - { gfx::GpuMemoryBuffer::RGBX_8888, gfx::GpuMemoryBuffer::SCANOUT } |
| -}; |
| +gfx::GpuMemoryBuffer::Format ConvertFormat( |
|
reveman
2015/06/05 20:26:06
nit: the name ConvertFormat is a bit ambiguous. ma
dshwang
2015/06/08 11:15:14
Done.
|
| + 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: |
|
reveman
2015/06/05 20:26:07
nit: avoid a default case if possible
dshwang
2015/06/08 11:15:14
Done.
|
| + NOTREACHED(); |
| + } |
| + NOTREACHED(); |
| + return gfx::GpuMemoryBuffer::BGRA_8888; |
| +} |
| + |
| +gfx::GpuMemoryBuffer::Usage ConvertUsage( |
|
reveman
2015/06/05 20:26:06
nit: maybe UsageFromOzoneBufferUsage
dshwang
2015/06/08 11:15:14
Done.
|
| + ui::SurfaceFactoryOzone::BufferUsage ozone_usage) { |
| + switch (ozone_usage) { |
| + case ui::SurfaceFactoryOzone::MAP: |
| + return gfx::GpuMemoryBuffer::MAP; |
| + case ui::SurfaceFactoryOzone::PERSISTENT_MAP: |
| + return gfx::GpuMemoryBuffer::PERSISTENT_MAP; |
| + case ui::SurfaceFactoryOzone::SCANOUT: |
| + return gfx::GpuMemoryBuffer::SCANOUT; |
| + } |
| + NOTREACHED(); |
| + return gfx::GpuMemoryBuffer::MAP; |
| +} |
| + |
| +void ConvertConfigurations( |
| + const std::vector<ui::NativePixmapClient::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::NativePixmapClient::Configuration> ozone_configurations = |
| + ui::NativePixmapClient::GetInstance() |
| + ->GetSupportedNativePixmapConfigurations(); |
| + ConvertConfigurations(ozone_configurations, configurations); |
| +} |
| } // namespace |
| @@ -30,7 +71,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 +84,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 |