From d510c9ab724af62e98700f55f819e95f305bdb1c Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Thu, 15 Dec 2022 17:33:10 +0100 Subject: [PATCH] wayland: update recipes to STM version v22.11.23 Signed-off-by: Mike Engel https://onedigi.atlassian.net/browse/DEL-8235 --- ...get-hdmi-output-with-several-outputs.patch | 6 +- ...seless-code-from-new-Fragment-Shader.patch | 191 ------------------ .../0002-Force-to-close-all-output.patch | 4 +- .../wayland/weston/0003-Disable-gles3.patch | 45 ----- ...uest-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch | 30 +++ ...er-Add-EGL_IMAGE_PRESERVED_KHR-to-ou.patch | 52 ----- ...gl-call-eglSwapInterval-after-eglMak.patch | 40 ++++ .../wayland/weston_10.0.2.bbappend | 6 +- 8 files changed, 78 insertions(+), 296 deletions(-) delete mode 100644 meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Remove-useless-code-from-new-Fragment-Shader.patch delete mode 100644 meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0003-Disable-gles3.patch create mode 100644 meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch delete mode 100644 meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Revert-gl-renderer-Add-EGL_IMAGE_PRESERVED_KHR-to-ou.patch create mode 100644 meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Allow-to-get-hdmi-output-with-several-outputs.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Allow-to-get-hdmi-output-with-several-outputs.patch index 192c553fc..dab69288a 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Allow-to-get-hdmi-output-with-several-outputs.patch +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Allow-to-get-hdmi-output-with-several-outputs.patch @@ -1,6 +1,6 @@ From: Christophe Priouzeau Date: Thu, 19 Mar 2020 12:15:19 +0100 -Subject: [PATCH] Allow to get hdmi output with several outputs +Subject: [PATCH 1/4] Allow to get hdmi output with several outputs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -15,7 +15,7 @@ Signed-off-by: Yannick Fertré 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/compositor/main.c b/compositor/main.c -index 322f2ff57b28..055eed3bf7c2 100644 +index 322f2ff..055eed3 100644 --- a/compositor/main.c +++ b/compositor/main.c @@ -2246,8 +2246,14 @@ drm_process_layoutput(struct wet_compositor *wet, struct wet_layoutput *lo) @@ -33,4 +33,4 @@ index 322f2ff57b28..055eed3bf7c2 100644 + //return -1; } } - + diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Remove-useless-code-from-new-Fragment-Shader.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Remove-useless-code-from-new-Fragment-Shader.patch deleted file mode 100644 index f53a0d2cf..000000000 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Remove-useless-code-from-new-Fragment-Shader.patch +++ /dev/null @@ -1,191 +0,0 @@ -From: Pierre-Yves MORDRET -Date: Mon, 23 May 2022 14:27:13 +0200 -Subject: [PATCH] Remove useless code from new Fragment Shader - -Generic Weston 10.0 consumes more GPU than before (8.0). -The compilation doesn't get rid from unreachable code. -Since not used and not optimized during compilation -state, we simply remove the code. - -Change-Id: I37880d5fcb8487c77e084b289db8d2fb945c21ab -Signed-off-by: Pierre-Yves MORDRET ---- - libweston/renderer-gl/fragment.glsl | 110 ++-------------------------- - libweston/renderer-gl/gl-shaders.c | 5 -- - 2 files changed, 5 insertions(+), 110 deletions(-) - -diff --git a/libweston/renderer-gl/fragment.glsl b/libweston/renderer-gl/fragment.glsl -index cfadb8859567..f735ab3a0a44 100644 ---- a/libweston/renderer-gl/fragment.glsl -+++ b/libweston/renderer-gl/fragment.glsl -@@ -42,33 +42,17 @@ - #define SHADER_VARIANT_SOLID 7 - #define SHADER_VARIANT_EXTERNAL 8 - --/* enum gl_shader_color_curve */ --#define SHADER_COLOR_CURVE_IDENTITY 0 --#define SHADER_COLOR_CURVE_LUT_3x1D 1 -- - #if DEF_VARIANT == SHADER_VARIANT_EXTERNAL - #extension GL_OES_EGL_image_external : require - #endif - --#ifdef GL_FRAGMENT_PRECISION_HIGH --#define HIGHPRECISION highp --#else --#define HIGHPRECISION mediump --#endif -- --precision HIGHPRECISION float; -+precision mediump float; - - /* - * These undeclared identifiers will be #defined by a runtime generated code - * snippet. - */ - compile_const int c_variant = DEF_VARIANT; --compile_const bool c_input_is_premult = DEF_INPUT_IS_PREMULT; --compile_const bool c_green_tint = DEF_GREEN_TINT; --compile_const int c_color_pre_curve = DEF_COLOR_PRE_CURVE; -- --compile_const bool c_need_color_pipeline = -- c_color_pre_curve != SHADER_COLOR_CURVE_IDENTITY; - - vec4 - yuva2rgba(vec4 yuva) -@@ -94,6 +78,7 @@ yuva2rgba(vec4 yuva) - color_out.g = Y - 0.39176229 * su - 0.81296764 * sv; - color_out.b = Y + 2.01723214 * su; - -+ color_out.rgb *= yuva.w; - color_out.a = yuva.w; - - return color_out; -@@ -110,8 +95,6 @@ uniform sampler2D tex1; - uniform sampler2D tex2; - uniform float alpha; - uniform vec4 unicolor; --uniform HIGHPRECISION sampler2D color_pre_curve_lut_2d; --uniform HIGHPRECISION vec2 color_pre_curve_lut_scale_offset; - - vec4 - sample_input_texture() -@@ -157,99 +140,16 @@ sample_input_texture() - return yuva2rgba(yuva); - } - --/* -- * Texture coordinates go from 0.0 to 1.0 corresponding to texture edges. -- * When we do LUT look-ups with linear filtering, the correct range to sample -- * from is not from edge to edge, but center of first texel to center of last -- * texel. This follows because with LUTs, you have the exact end points given, -- * you never extrapolate but only interpolate. -- * The scale and offset are precomputed to achieve this mapping. -- */ --float --lut_texcoord(float x, vec2 scale_offset) --{ -- return x * scale_offset.s + scale_offset.t; --} -- --/* -- * Sample a 1D LUT which is a single row of a 2D texture. The 2D texture has -- * four rows so that the centers of texels have precise y-coordinates. -- */ --float --sample_color_pre_curve_lut_2d(float x, compile_const int row) --{ -- float tx = lut_texcoord(x, color_pre_curve_lut_scale_offset); -- -- return texture2D(color_pre_curve_lut_2d, -- vec2(tx, (float(row) + 0.5) / 4.0)).x; --} -- --vec3 --color_pre_curve(vec3 color) --{ -- vec3 ret; -- -- if (c_color_pre_curve == SHADER_COLOR_CURVE_IDENTITY) { -- return color; -- } else if (c_color_pre_curve == SHADER_COLOR_CURVE_LUT_3x1D) { -- ret.r = sample_color_pre_curve_lut_2d(color.r, 0); -- ret.g = sample_color_pre_curve_lut_2d(color.g, 1); -- ret.b = sample_color_pre_curve_lut_2d(color.b, 2); -- return ret; -- } else { -- /* Never reached, bad c_color_pre_curve. */ -- return vec3(1.0, 0.3, 1.0); -- } --} -- --vec4 --color_pipeline(vec4 color) --{ -- color.rgb = color_pre_curve(color.rgb); -- -- return color; --} -- - void - main() - { - vec4 color; - -- /* Electrical (non-linear) RGBA values, may be premult or not */ -+ /* Electrical (non-linear) RGBA values, pre-multiplied */ - color = sample_input_texture(); - -- if (c_need_color_pipeline) { -- /* Ensure straight alpha */ -- if (c_input_is_premult) { -- if (color.a == 0.0) -- color.rgb = vec3(0, 0, 0); -- else -- color.rgb *= 1.0 / color.a; -- } -- -- color = color_pipeline(color); -- -- /* View alpha (opacity) */ -- color.a *= alpha; -- -- /* pre-multiply for blending */ -- color.rgb *= color.a; -- } else { -- /* Fast path for disabled color management */ -- -- if (c_input_is_premult) { -- /* View alpha (opacity) */ -- color *= alpha; -- } else { -- /* View alpha (opacity) */ -- color.a *= alpha; -- /* pre-multiply for blending */ -- color.rgb *= color.a; -- } -- } -- -- if (c_green_tint) -- color = vec4(0.0, 0.3, 0.0, 0.2) + color * 0.8; -+ /* View alpha (opacity) */ -+ color *= alpha; - - gl_FragColor = color; - } -diff --git a/libweston/renderer-gl/gl-shaders.c b/libweston/renderer-gl/gl-shaders.c -index 97f288c07c9e..c8e3d297e29c 100644 ---- a/libweston/renderer-gl/gl-shaders.c -+++ b/libweston/renderer-gl/gl-shaders.c -@@ -263,11 +263,6 @@ gl_shader_create(struct gl_renderer *gr, - shader->alpha_uniform = glGetUniformLocation(shader->program, "alpha"); - shader->color_uniform = glGetUniformLocation(shader->program, - "unicolor"); -- shader->color_pre_curve_lut_2d_uniform = -- glGetUniformLocation(shader->program, "color_pre_curve_lut_2d"); -- shader->color_pre_curve_lut_scale_offset_uniform = -- glGetUniformLocation(shader->program, "color_pre_curve_lut_scale_offset"); -- - free(conf); - - wl_list_insert(&gr->shader_list, &shader->link); diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Force-to-close-all-output.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Force-to-close-all-output.patch index d684f82cc..f2e71c43a 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Force-to-close-all-output.patch +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Force-to-close-all-output.patch @@ -1,6 +1,6 @@ From: Christophe Priouzeau Date: Thu, 19 Mar 2020 12:20:32 +0100 -Subject: [PATCH] Force to close all output +Subject: [PATCH 2/4] Force to close all output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -14,7 +14,7 @@ Signed-off-by: Yannick Fertré 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compositor/main.c b/compositor/main.c -index 055eed3bf7c2..ac366a01f8e6 100644 +index 055eed3..ac366a0 100644 --- a/compositor/main.c +++ b/compositor/main.c @@ -2322,7 +2322,11 @@ drm_heads_changed(struct wl_listener *listener, void *arg) diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0003-Disable-gles3.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0003-Disable-gles3.patch deleted file mode 100644 index 0034ae8e4..000000000 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0003-Disable-gles3.patch +++ /dev/null @@ -1,45 +0,0 @@ -From: Christophe Priouzeau -Date: Tue, 26 Apr 2022 09:59:10 +0200 -Subject: [PATCH] Disable gles3 - -Signed-off-by: Christophe Priouzeau ---- - libweston/renderer-gl/gl-renderer.c | 6 ++++++ - .../renderer-gl/gl-shader-config-color-transformation.c | 5 +++++ - 2 files changed, 11 insertions(+) - -diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c -index a5f5eae44f83..2f7941f942eb 100644 ---- a/libweston/renderer-gl/gl-renderer.c -+++ b/libweston/renderer-gl/gl-renderer.c -@@ -29,7 +29,13 @@ - - #include - #include -+#if 0 - #include -+#else -+#define GL_RGBA16F 0x881A -+#define GL_RGB10_A2 0x8059 -+#define GL_HALF_FLOAT 0x140B -+#endif - - #include - #include -diff --git a/libweston/renderer-gl/gl-shader-config-color-transformation.c b/libweston/renderer-gl/gl-shader-config-color-transformation.c -index 21a4565393fe..d5f249169219 100644 ---- a/libweston/renderer-gl/gl-shader-config-color-transformation.c -+++ b/libweston/renderer-gl/gl-shader-config-color-transformation.c -@@ -25,7 +25,12 @@ - - #include "config.h" - -+#if 0 - #include -+#else -+#include -+#define GL_R32F 0x822E -+#endif - #include - - #include diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch new file mode 100644 index 000000000..af56105b0 --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch @@ -0,0 +1,30 @@ +From: Christophe Priouzeau +Date: Thu, 25 Aug 2022 09:34:23 +0200 +Subject: [PATCH 4/4] Disable request to EGL_DRM_RENDER_NODE_FILE_EXT + +Depending on GPU userland implementationn the reqest of EGL_DRM_RENDER_NODE_FILE_EXT +return /dev/dri/renderD128 but this interface are not always present. + +Signed-off-by: Christophe Priouzeau +--- + libweston/renderer-gl/egl-glue.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/libweston/renderer-gl/egl-glue.c b/libweston/renderer-gl/egl-glue.c +index 013172a..46063c5 100644 +--- a/libweston/renderer-gl/egl-glue.c ++++ b/libweston/renderer-gl/egl-glue.c +@@ -480,9 +480,9 @@ gl_renderer_set_egl_device(struct gl_renderer *gr) + gl_renderer_log_extensions("EGL device extensions", extensions); + + /* Try to query the render node using EGL_DRM_RENDER_NODE_FILE_EXT */ +- if (weston_check_egl_extension(extensions, "EGL_EXT_device_drm_render_node")) +- gr->drm_device = gr->query_device_string(gr->egl_device, +- EGL_DRM_RENDER_NODE_FILE_EXT); ++/* if (weston_check_egl_extension(extensions, "EGL_EXT_device_drm_render_node"))*/ ++/* gr->drm_device = gr->query_device_string(gr->egl_device,*/ ++/* EGL_DRM_RENDER_NODE_FILE_EXT);*/ + + /* The extension is not supported by the Mesa version of the system or + * the query failed. Fallback to EGL_DRM_DEVICE_FILE_EXT */ +-- diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Revert-gl-renderer-Add-EGL_IMAGE_PRESERVED_KHR-to-ou.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Revert-gl-renderer-Add-EGL_IMAGE_PRESERVED_KHR-to-ou.patch deleted file mode 100644 index 995b2d6b1..000000000 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Revert-gl-renderer-Add-EGL_IMAGE_PRESERVED_KHR-to-ou.patch +++ /dev/null @@ -1,52 +0,0 @@ -From: Christophe Priouzeau -Date: Fri, 6 May 2022 11:41:10 +0200 -Subject: [PATCH] Revert gl-renderer: Add EGL_IMAGE_PRESERVED_KHR to our - attributes - -Signed-off-by: Christophe Priouzeau ---- - libweston/renderer-gl/gl-renderer.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c -index 2f7941f942eb..2ab707c5650d 100644 ---- a/libweston/renderer-gl/gl-renderer.c -+++ b/libweston/renderer-gl/gl-renderer.c -@@ -2152,7 +2152,7 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer, - struct weston_compositor *ec = es->compositor; - struct gl_renderer *gr = get_renderer(ec); - struct gl_surface_state *gs = get_surface_state(es); -- EGLint attribs[5]; -+ EGLint attribs[3]; - GLenum target; - int i, num_planes; - -@@ -2205,9 +2205,7 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer, - for (i = 0; i < num_planes; i++) { - attribs[0] = EGL_WAYLAND_PLANE_WL; - attribs[1] = i; -- attribs[2] = EGL_IMAGE_PRESERVED_KHR; -- attribs[3] = EGL_TRUE; -- attribs[4] = EGL_NONE; -+ attribs[2] = EGL_NONE; - - gs->images[i] = egl_image_create(gr, - EGL_WAYLAND_BUFFER_WL, -@@ -2242,7 +2240,7 @@ import_simple_dmabuf(struct gl_renderer *gr, - struct dmabuf_attributes *attributes) - { - struct egl_image *image; -- EGLint attribs[52]; -+ EGLint attribs[50]; - int atti = 0; - bool has_modifier; - -@@ -2260,8 +2258,6 @@ import_simple_dmabuf(struct gl_renderer *gr, - attribs[atti++] = attributes->height; - attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT; - attribs[atti++] = attributes->format; -- attribs[atti++] = EGL_IMAGE_PRESERVED_KHR; -- attribs[atti++] = EGL_TRUE; - - if (attributes->modifier[0] != DRM_FORMAT_MOD_INVALID) { - if (!gr->has_dmabuf_import_modifiers) diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch new file mode 100644 index 000000000..102269603 --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch @@ -0,0 +1,40 @@ +From: Erik Kurzinger +Date: Fri, 12 Aug 2022 08:22:26 -0700 +Subject: [PATCH] clients/simple-egl: call eglSwapInterval after eglMakeCurrent + +If weston-simple-egl is run with the "-b" flag, it will attempt to set +the swap interval to 0 during create_surface. However, at that point, it +will not have made its EGLContext current yet, causing the +eglSwapInterval call to have no effect. To fix this, wait until the +EGLContext has been made current in init_gl before updating the swap +interval. + +Signed-off-by: Erik Kurzinger +--- + clients/simple-egl.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/clients/simple-egl.c b/clients/simple-egl.c +index 2c7059c0..79d296a9 100644 +--- a/clients/simple-egl.c ++++ b/clients/simple-egl.c +@@ -276,6 +276,9 @@ init_gl(struct window *window) + window->egl_surface, window->display->egl.ctx); + assert(ret == EGL_TRUE); + ++ if (!window->frame_sync) ++ eglSwapInterval(window->display->egl.dpy, 0); ++ + frag = create_shader(window, frag_shader_text, GL_FRAGMENT_SHADER); + vert = create_shader(window, vert_shader_text, GL_VERTEX_SHADER); + +@@ -399,9 +402,6 @@ create_surface(struct window *window) + + window->wait_for_configure = true; + wl_surface_commit(window->surface); +- +- if (!window->frame_sync) +- eglSwapInterval(display->egl.dpy, 0); + } + + static void diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_10.0.2.bbappend b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_10.0.2.bbappend index d48d6c9dd..9de6ca79c 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_10.0.2.bbappend +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_10.0.2.bbappend @@ -3,10 +3,10 @@ FILESEXTRAPATHS:prepend:stm32mpcommon := "${THISDIR}/${PN}:" SRC_URI:append:stm32mpcommon = " \ file://0001-Allow-to-get-hdmi-output-with-several-outputs.patch \ file://0002-Force-to-close-all-output.patch \ - file://0003-Disable-gles3.patch \ - file://0004-Revert-gl-renderer-Add-EGL_IMAGE_PRESERVED_KHR-to-ou.patch \ - file://0001-Remove-useless-code-from-new-Fragment-Shader.patch \ + file://0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch \ + file://0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch \ " + SIMPLECLIENTS="egl,touch,dmabuf-v4l,dmabuf-egl" PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms wayland egl clients', '', d)} \