diff options
Diffstat (limited to 'meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch')
-rw-r--r-- | meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch b/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch deleted file mode 100644 index b3e1d06f57..0000000000 --- a/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch +++ /dev/null @@ -1,55 +0,0 @@ -Multi-plane sub-sampled textures have partial width/height, e.g. -YUV420/I420 has a full-size Y plane, followed by a half-width/height U -plane, and a half-width/height V plane. - -zwp_linux_dmabuf_v1 allows clients to pass an explicit pitch for each -plane, but for wl_shm this must be inferred. gl-renderer was correctly -accounting for the width and height when subsampling, but the pitch was -being taken as the pitch for the first plane. - -This does not match the requirements for GStreamer's waylandsink, in -particular, as well as other clients. Fix the SHM upload path to -correctly set the pitch for each plane, according to subsampling. - -Tested with: - $ gst-launch-1.0 videotestsrc ! waylandsink - -Upstream-Status: Backport [https://patchwork.freedesktop.org/patch/180767/] - -Signed-off-by: Daniel Stone <daniels@collabora.com> -Fixes: fdeefe42418 ("gl-renderer: add support of WL_SHM_FORMAT_YUV420") -Reported-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk> -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103063 - ---- - libweston/gl-renderer.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c -index 244ce309..40bf0bb6 100644 ---- a/libweston/gl-renderer.c -+++ b/libweston/gl-renderer.c -@@ -1445,14 +1445,13 @@ gl_renderer_flush_damage(struct weston_surface *surface) - goto done; - } - -- glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch); -- - if (gs->needs_full_upload) { - glPixelStorei(GL_UNPACK_SKIP_PIXELS_EXT, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, 0); - wl_shm_buffer_begin_access(buffer->shm_buffer); - for (j = 0; j < gs->num_textures; j++) { - glBindTexture(GL_TEXTURE_2D, gs->textures[j]); -+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]); - glTexImage2D(GL_TEXTURE_2D, 0, - gs->gl_format[j], - gs->pitch / gs->hsub[j], -@@ -1477,6 +1476,7 @@ gl_renderer_flush_damage(struct weston_surface *surface) - glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, r.y1); - for (j = 0; j < gs->num_textures; j++) { - glBindTexture(GL_TEXTURE_2D, gs->textures[j]); -+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]); - glTexSubImage2D(GL_TEXTURE_2D, 0, - r.x1 / gs->hsub[j], - r.y1 / gs->vsub[j], |