Commit 3e3dfdc1 authored by Eliot Courtney's avatar Eliot Courtney Committed by Commit Bot

[ozone/wayland] Don't use RGBA8 or RGBX8 when running on ChromiumOS.

In particular, the RGBX8 format doesn't seem to be supported. RGBA
ordering support also seems to vary depending on device.

Bug: 1127558
Test: can launch lacros
Change-Id: Iff175b455444b6cfc3cc5c487080b5d42a4b2bc1
Fixed: 2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2409532
Commit-Queue: Eliot Courtney <edcourtney@chromium.org>
Reviewed-by: default avatarRobert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#806602}
parent 87d50404
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include <vector> #include <vector>
#include "base/stl_util.h" #include "base/stl_util.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "ui/display/display.h" #include "ui/display/display.h"
#include "ui/display/display_finder.h" #include "ui/display/display_finder.h"
#include "ui/display/display_list.h" #include "ui/display/display_list.h"
...@@ -37,14 +39,19 @@ WaylandScreen::WaylandScreen(WaylandConnection* connection) ...@@ -37,14 +39,19 @@ WaylandScreen::WaylandScreen(WaylandConnection* connection)
connection_->buffer_manager_host()->GetSupportedBufferFormats(); connection_->buffer_manager_host()->GetSupportedBufferFormats();
for (const auto& buffer_format : buffer_formats) { for (const auto& buffer_format : buffer_formats) {
auto format = buffer_format.first; auto format = buffer_format.first;
// RGBA_8888 is the preferred format.
// TODO(crbug.com/1127822): Investigate a better fix for this.
#if !BUILDFLAG(IS_LACROS)
// RGBA_8888 is the preferred format, except when running on ChromiumOS. See
// crbug.com/1127558.
if (format == gfx::BufferFormat::RGBA_8888) if (format == gfx::BufferFormat::RGBA_8888)
image_format_alpha_ = gfx::BufferFormat::RGBA_8888; image_format_alpha_ = gfx::BufferFormat::RGBA_8888;
if (!image_format_alpha_ && format == gfx::BufferFormat::BGRA_8888)
image_format_alpha_ = gfx::BufferFormat::BGRA_8888;
if (format == gfx::BufferFormat::RGBX_8888) if (format == gfx::BufferFormat::RGBX_8888)
image_format_no_alpha_ = format; image_format_no_alpha_ = format;
#endif // !BUILDFLAG(IS_LACROS)
if (!image_format_alpha_ && format == gfx::BufferFormat::BGRA_8888)
image_format_alpha_ = gfx::BufferFormat::BGRA_8888;
if (image_format_alpha_ && image_format_no_alpha_) if (image_format_alpha_ && image_format_no_alpha_)
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment