wayland: update recipes to STM version v22.11.23

Signed-off-by: Mike Engel <Mike.Engel@digi.com>

https://onedigi.atlassian.net/browse/DEL-8235
This commit is contained in:
Mike Engel 2022-12-15 17:33:10 +01:00
parent 54f3aebd2c
commit d510c9ab72
8 changed files with 78 additions and 296 deletions

View File

@ -1,6 +1,6 @@
From: Christophe Priouzeau <christophe.priouzeau@st.com>
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é <yannick.fertre@st.com>
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)

View File

@ -1,191 +0,0 @@
From: Pierre-Yves MORDRET <pierre-yves.mordret@st.som>
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 <pierre-yves.mordret@st.som>
---
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);

View File

@ -1,6 +1,6 @@
From: Christophe Priouzeau <christophe.priouzeau@st.com>
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é <yannick.fertre@st.com>
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)

View File

@ -1,45 +0,0 @@
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
Date: Tue, 26 Apr 2022 09:59:10 +0200
Subject: [PATCH] Disable gles3
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
---
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 <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
+#if 0
#include <GLES3/gl3.h>
+#else
+#define GL_RGBA16F 0x881A
+#define GL_RGB10_A2 0x8059
+#define GL_HALF_FLOAT 0x140B
+#endif
#include <stdbool.h>
#include <stdint.h>
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 <GLES3/gl3.h>
+#else
+#include <GLES2/gl2.h>
+#define GL_R32F 0x822E
+#endif
#include <GLES2/gl2ext.h>
#include <assert.h>

View File

@ -0,0 +1,30 @@
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
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 <christophe.priouzeau@foss.st.com>
---
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 */
--

View File

@ -1,52 +0,0 @@
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
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 <christophe.priouzeau@foss.st.com>
---
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)

View File

@ -0,0 +1,40 @@
From: Erik Kurzinger <ekurzinger@nvidia.com>
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 <ekurzinger@nvidia.com>
---
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

View File

@ -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)} \