1From 438f21fcc62898d19d0619b420eb3a0578031e55 Mon Sep 17 00:00:00 2001
2From: Jeffy Chen <jeffy.chen@rock-chips.com>
3Date: Mon, 25 Jul 2022 10:46:43 +0800
4Subject: [PATCH 11/11] pixmap: Fix alpha error for drm formats
5
6Tested with chromium-ozone-wayland.
7
8Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
9---
10 src/bin/e_pixmap.c | 9 ++++++++-
11 1 file changed, 8 insertions(+), 1 deletion(-)
12
13diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
14index 3d9177f4a..f8c2a01ed 100644
15--- a/src/bin/e_pixmap.c
16+++ b/src/bin/e_pixmap.c
17@@ -609,8 +609,8 @@ e_pixmap_refresh(E_Pixmap *cp)
18
19            switch (format)
20              {
21-              case DRM_FORMAT_ARGB8888:
22               case WL_SHM_FORMAT_ARGB8888:
23+              case WL_SHM_FORMAT_ABGR8888:
24               case EGL_TEXTURE_RGBA:
25                 cp->image_argb = EINA_TRUE;
26                 break;
27@@ -619,6 +619,13 @@ e_pixmap_refresh(E_Pixmap *cp)
28                 break;
29              }
30
31+           /* HACK: Check DRM fourcc for alpha channel */
32+           if (buffer->dmabuf_buffer)
33+             {
34+                if ((format >> 24) == 'A' || ((format >> 16) & 0xFF) == 'A')
35+                  cp->image_argb = EINA_TRUE;
36+             }
37+
38            success = ((cp->w > 0) && (cp->h > 0));
39         }
40 #endif
41--
422.20.1
43
44