xref: /OK3568_Linux_fs/buildroot/package/efl/0011-gl_drm-Support-external-dmabuf.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1From 75b3b3fba88f13d1bf4ffe1091af061758561000 Mon Sep 17 00:00:00 2001
2From: Jeffy Chen <jeffy.chen@rock-chips.com>
3Date: Mon, 11 Jul 2022 19:19:56 +0800
4Subject: [PATCH 11/11] gl_drm: Support external dmabuf
5
6Tested with gstreamer mppvideodec + waylandsink.
7
8Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
9---
10 src/lib/ector/gl/shader/ector_gl_shaders.x                | 8 ++++----
11 src/lib/ector/gl/shader/include.glsl                      | 8 ++++----
12 src/modules/evas/engines/gl_common/evas_gl_shader.c       | 4 ++--
13 .../evas/engines/gl_common/shader/evas_gl_shaders.x       | 8 ++++----
14 src/modules/evas/engines/gl_common/shader/include.glsl    | 8 ++++----
15 src/modules/evas/engines/gl_drm/evas_engine.c             | 4 ++--
16 6 files changed, 20 insertions(+), 20 deletions(-)
17
18diff --git a/src/lib/ector/gl/shader/ector_gl_shaders.x b/src/lib/ector/gl/shader/ector_gl_shaders.x
19index 19120e26c3..a6dc50415b 100644
20--- a/src/lib/ector/gl/shader/ector_gl_shaders.x
21+++ b/src/lib/ector/gl/shader/ector_gl_shaders.x
22@@ -8,15 +8,15 @@ static const char fragment_glsl[] =
23    " * through cpp first (in which case the precision must be manually added).\n"
24    " */\n"
25    "#ifdef GL_ES\n"
26+   "# ifdef SHD_EXTERNAL\n"
27+   "#extension GL_OES_EGL_image_external : require\n"
28+   "#  define SAMPLER_EXTERNAL_OES samplerExternalOES\n"
29+   "# endif\n"
30    "# ifdef GL_FRAGMENT_PRECISION_HIGH\n"
31    "precision highp float;\n"
32    "# else\n"
33    "precision mediump float;\n"
34    "# endif\n"
35-   "# ifdef SHD_EXTERNAL\n"
36-   "extension GL_OES_EGL_image_external : require\n"
37-   "#  define SAMPLER_EXTERNAL_OES samplerExternalOES\n"
38-   "# endif\n"
39    "#else\n"
40    "# define SAMPLER_EXTERNAL_OES sampler2D\n"
41    "#endif\n"
42diff --git a/src/lib/ector/gl/shader/include.glsl b/src/lib/ector/gl/shader/include.glsl
43index b8f8ac115e..f987544080 100644
44--- a/src/lib/ector/gl/shader/include.glsl
45+++ b/src/lib/ector/gl/shader/include.glsl
46@@ -1,14 +1,14 @@
47 define(`FRAGMENT_SHADER',`
48 #ifdef GL_ES
49+# ifdef SHD_EXTERNAL
50+#extension GL_OES_EGL_image_external : require
51+#  define SAMPLER_EXTERNAL_OES samplerExternalOES
52+# endif
53 # ifdef GL_FRAGMENT_PRECISION_HIGH
54 precision highp float;
55 # else
56 precision mediump float;
57 # endif
58-# ifdef SHD_EXTERNAL
59-extension GL_OES_EGL_image_external : require
60-#  define SAMPLER_EXTERNAL_OES samplerExternalOES
61-# endif
62 #else
63 # define SAMPLER_EXTERNAL_OES sampler2D
64 #endif
65diff --git a/src/modules/evas/engines/gl_common/evas_gl_shader.c b/src/modules/evas/engines/gl_common/evas_gl_shader.c
66index 5d84504817..65dd25800f 100644
67--- a/src/modules/evas/engines/gl_common/evas_gl_shader.c
68+++ b/src/modules/evas/engines/gl_common/evas_gl_shader.c
69@@ -896,8 +896,8 @@ evas_gl_common_shader_flags_get(Evas_GL_Shared *shared, Shader_Type type,
70      {
71         if (tex->im && tex->im->native.target == GL_TEXTURE_EXTERNAL_OES)
72           flags |= SHADER_FLAG_EXTERNAL;
73-        else
74-          bgra = 1;
75+
76+        bgra = 1;
77      }
78    else
79      bgra = shared->info.bgra;
80diff --git a/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x b/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x
81index 411a680e78..abde490e0b 100644
82--- a/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x
83+++ b/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x
84@@ -8,15 +8,15 @@ static const char fragment_glsl[] =
85    " * through cpp first (in which case the precision must be manually added).\n"
86    " */\n"
87    "#ifdef GL_ES\n"
88+   "# ifdef SHD_EXTERNAL\n"
89+   "#extension GL_OES_EGL_image_external : require\n"
90+   "#  define SAMPLER_EXTERNAL_OES samplerExternalOES\n"
91+   "# endif\n"
92    "# ifdef GL_FRAGMENT_PRECISION_HIGH\n"
93    "precision highp float;\n"
94    "# else\n"
95    "precision mediump float;\n"
96    "# endif\n"
97-   "# ifdef SHD_EXTERNAL\n"
98-   "extension GL_OES_EGL_image_external : require\n"
99-   "#  define SAMPLER_EXTERNAL_OES samplerExternalOES\n"
100-   "# endif\n"
101    "#else\n"
102    "# define SAMPLER_EXTERNAL_OES sampler2D\n"
103    "#endif\n"
104diff --git a/src/modules/evas/engines/gl_common/shader/include.glsl b/src/modules/evas/engines/gl_common/shader/include.glsl
105index b8f8ac115e..f987544080 100644
106--- a/src/modules/evas/engines/gl_common/shader/include.glsl
107+++ b/src/modules/evas/engines/gl_common/shader/include.glsl
108@@ -1,14 +1,14 @@
109 define(`FRAGMENT_SHADER',`
110 #ifdef GL_ES
111+# ifdef SHD_EXTERNAL
112+#extension GL_OES_EGL_image_external : require
113+#  define SAMPLER_EXTERNAL_OES samplerExternalOES
114+# endif
115 # ifdef GL_FRAGMENT_PRECISION_HIGH
116 precision highp float;
117 # else
118 precision mediump float;
119 # endif
120-# ifdef SHD_EXTERNAL
121-extension GL_OES_EGL_image_external : require
122-#  define SAMPLER_EXTERNAL_OES samplerExternalOES
123-# endif
124 #else
125 # define SAMPLER_EXTERNAL_OES sampler2D
126 #endif
127diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c b/src/modules/evas/engines/gl_drm/evas_engine.c
128index d59f762160..7ebde60c6f 100644
129--- a/src/modules/evas/engines/gl_drm/evas_engine.c
130+++ b/src/modules/evas/engines/gl_drm/evas_engine.c
131@@ -808,7 +808,7 @@ _native_cb_bind(void *image)
132              return;
133           }
134         img->native.invalid = EINA_FALSE;
135-        glsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, n->ns_data.wl_surface_dmabuf.image);
136+        glsym_glEGLImageTargetTexture2DOES(img->native.target, n->ns_data.wl_surface_dmabuf.image);
137      }
138    else if (n->ns.type == EVAS_NATIVE_SURFACE_WL)
139      {
140@@ -1400,7 +1400,7 @@ eng_image_native_set(void *engine, void *image, void *native)
141                   img->native.func.bind = _native_cb_bind;
142                   img->native.func.unbind = _native_cb_unbind;
143                   img->native.func.free = _native_cb_free;
144-                  img->native.target = GL_TEXTURE_2D;
145+                  img->native.target = GL_TEXTURE_EXTERNAL_OES;
146                   img->native.mipmap = 0;
147
148                   glsym_evas_gl_common_image_native_enable(img);
149--
1502.20.1
151
152