| 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..2b227687a671fd0c88f4c9276dc47758e13445ff 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/ozone_client.h"
|
| +#include "ui/ozone/public/surface_client_factory_ozone.h"
|
|
|
| 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::SurfaceClientFactoryOzone::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::SurfaceClientFactoryOzone::Configuration>
|
| + ozone_configurations = ui::OzoneClient::GetInstance()
|
| + ->GetSurfaceClientFactoryOzone()
|
| + ->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
|
|
|