| 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(
|
|
|