Chromium Code Reviews| Index: content/common/gpu/gpu_memory_buffer_factory_ozone_native_pixmap.cc |
| diff --git a/content/common/gpu/gpu_memory_buffer_factory_ozone_native_pixmap.cc b/content/common/gpu/gpu_memory_buffer_factory_ozone_native_pixmap.cc |
| index 113eead43534fa7f4281b6e62063d45f58b20e43..7bf1d31e47cdf3afe2201a85fdd9f3142886fe3e 100644 |
| --- a/content/common/gpu/gpu_memory_buffer_factory_ozone_native_pixmap.cc |
| +++ b/content/common/gpu/gpu_memory_buffer_factory_ozone_native_pixmap.cc |
| @@ -6,15 +6,58 @@ |
| #include "base/logging.h" |
| #include "ui/gl/gl_image.h" |
| -#include "ui/ozone/public/ozone_platform.h" |
| -#include "ui/ozone/public/surface_factory_ozone.h" |
| +#include "ui/ozone/public/native_pixmap_manager.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 FormatFromOzoneBufferFormat( |
| + 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; |
| + case ui::SurfaceFactoryOzone::UNKNOWN: |
| + NOTREACHED(); |
| + break; |
| + } |
| + NOTREACHED(); |
| + return gfx::GpuMemoryBuffer::BGRA_8888; |
| +} |
| + |
| +gfx::GpuMemoryBuffer::Usage UsageFromOzoneBufferUsage( |
| + 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::NativePixmapManager::Configuration>& |
| + ozone_configurations, |
| + std::vector<GpuMemoryBufferFactory::Configuration>* configurations) { |
|
reveman
2015/07/22 16:59:55
not sure this helper function is worth much. just
dshwang
2015/07/23 14:02:28
Done.
|
| + for (auto& ozone_conf : ozone_configurations) { |
|
reveman
2015/07/22 16:59:55
nit: s/ozone_conf/ozone_configuration/ or maybe na
dshwang
2015/07/23 14:02:28
Done.
|
| + configurations->push_back({FormatFromOzoneBufferFormat(ozone_conf.format), |
| + UsageFromOzoneBufferUsage(ozone_conf.usage)}); |
| + } |
| +} |
| + |
| +void GetSupportedConfigurations( |
| + std::vector<GpuMemoryBufferFactory::Configuration>* configurations) { |
| + DCHECK(ui::NativePixmapManager::GetInstance()); |
| + std::vector<ui::NativePixmapManager::Configuration> ozone_configurations = |
| + ui::NativePixmapManager::GetInstance() |
| + ->GetSupportedNativePixmapConfigurations(); |
| + ConvertConfigurations(ozone_configurations, configurations); |
| +} |
| } // namespace |
| @@ -28,7 +71,9 @@ GpuMemoryBufferFactoryOzoneNativePixmap:: |
| bool GpuMemoryBufferFactoryOzoneNativePixmap:: |
| 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; |
| } |
| @@ -39,14 +84,7 @@ bool GpuMemoryBufferFactoryOzoneNativePixmap:: |
| void GpuMemoryBufferFactoryOzoneNativePixmap:: |
| GetSupportedGpuMemoryBufferConfigurations( |
| std::vector<Configuration>* configurations) { |
| - if (!ui::OzonePlatform::GetInstance() |
| - ->GetSurfaceFactoryOzone() |
| - ->CanCreateNativePixmap(ui::SurfaceFactoryOzone::SCANOUT)) |
| - return; |
| - |
| - configurations->assign( |
| - kSupportedConfigurations, |
| - kSupportedConfigurations + arraysize(kSupportedConfigurations)); |
| + GetSupportedConfigurations(configurations); |
| } |
| gfx::GpuMemoryBufferHandle |