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 e787be94aa3d27b6892d4428ceebdd83e8894e8d..5e5a44a3ba94e3ebe791e04fff2da2658cba3c42 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,53 @@ |
| #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 GetSupportedConfigurations( |
| + std::vector<GpuMemoryBufferFactory::Configuration>* configurations) { |
| + DCHECK(ui::NativePixmapManager::GetInstance()); |
|
reveman
2015/07/23 14:46:12
nit: you don't need a !nullptr DCHECK when you der
dshwang
2015/07/23 16:42:09
Done.
|
| + std::vector<ui::NativePixmapManager::Configuration> |
| + native_pixmap_configurations = |
| + ui::NativePixmapManager::GetInstance() |
| + ->GetSupportedNativePixmapConfigurations(); |
| + for (auto& native_pixmap_configuration : native_pixmap_configurations) { |
| + configurations->push_back( |
| + {FormatFromOzoneBufferFormat(native_pixmap_configuration.format), |
| + UsageFromOzoneBufferUsage(native_pixmap_configuration.usage)}); |
| + } |
| +} |
| } // namespace |
| @@ -28,7 +66,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 +79,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 |