[mutter] wayland-dma-buf: Fix 32bpp channel order inversion
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] wayland-dma-buf: Fix 32bpp channel order inversion
- Date: Thu, 24 Aug 2017 13:17:23 +0000 (UTC)
commit 06d09890147b48bfa23f122ff86cf7fc43ff84f2
Author: Daniel Stone <daniels collabora com>
Date: Thu Aug 24 10:14:31 2017 +0100
wayland-dma-buf: Fix 32bpp channel order inversion
Apparently my understanding of Cogl pixel formats, or at least their
use, was somewhat shaky.
Un-invert the inversion of the DRM FourCC -> Cogl pixel format mapping
when creating dmabufs from clients, fixing inverted channel ordering
seen from GL clients, e.g. gold highlights in gtk4-demo when using the
GSK GL backend when they should be blue.
https://bugzilla.gnome.org/show_bug.cgi?id=786677
src/wayland/meta-wayland-dma-buf.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
---
diff --git a/src/wayland/meta-wayland-dma-buf.c b/src/wayland/meta-wayland-dma-buf.c
index 93bf32b..e5d2f7c 100644
--- a/src/wayland/meta-wayland-dma-buf.c
+++ b/src/wayland/meta-wayland-dma-buf.c
@@ -83,16 +83,13 @@ meta_wayland_dma_buf_buffer_attach (MetaWaylandBuffer *buffer,
if (buffer->texture)
return TRUE;
- /* DRM_FORMAT_* enums consider the entire pixel as a single packed quantity,
- * with little-endian ordering. COGL_PIXEL_FORMAT_* is in byte order when
- * each channel is an 8-byte unit. Hence these have order swapped. */
switch (dma_buf->drm_format)
{
case DRM_FORMAT_XRGB8888:
- cogl_format = COGL_PIXEL_FORMAT_BGR_888;
+ cogl_format = COGL_PIXEL_FORMAT_RGB_888;
break;
case DRM_FORMAT_ARGB8888:
- cogl_format = COGL_PIXEL_FORMAT_BGRA_8888_PRE;
+ cogl_format = COGL_PIXEL_FORMAT_ARGB_8888_PRE;
break;
case DRM_FORMAT_ARGB2101010:
cogl_format = COGL_PIXEL_FORMAT_ARGB_2101010_PRE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]