From 30104bd89ad7a1bcf8b75adf80343be5d172ceea Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Mon, 8 Feb 2021 16:29:51 +0200 Subject: [PATCH] gl-renderer: support XYUV8888 wl_shm format This support is added so that the XYUV shader variant can be tested with wl_shm from the test suite. Libwayland version requirement is bumped to get WL_SHM_FORMAT_XYUV8888. Libwayland is bumped to 1.18 too in the CI image. libwayland-dev package is dropped, because we build wayland anyway. Signed-off-by: Pekka Paalanen --- .gitlab-ci.yml | 2 +- .gitlab-ci/debian-install.sh | 3 +-- libweston/renderer-gl/gl-renderer.c | 12 ++++++++++++ meson.build | 4 ++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c7a54772..755bb874 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,7 +20,7 @@ stages: variables: FDO_DISTRIBUTION_VERSION: buster FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/debian-install.sh' - FDO_DISTRIBUTION_TAG: '2021-02-25.0' + FDO_DISTRIBUTION_TAG: '2021-02-25.1' container_prep: diff --git a/.gitlab-ci/debian-install.sh b/.gitlab-ci/debian-install.sh index 0cb9bb64..9ac9446e 100644 --- a/.gitlab-ci/debian-install.sh +++ b/.gitlab-ci/debian-install.sh @@ -70,7 +70,6 @@ apt-get -y --no-install-recommends install \ libva-dev \ libvpx-dev \ libvulkan-dev \ - libwayland-dev \ libwebp-dev \ libx11-dev \ libx11-xcb-dev \ @@ -132,7 +131,7 @@ git checkout -b snapshot 69e3cb83b3405edc99fcf9611f50012a4f210f78 ./setup.py install cd .. -git clone --branch 1.17.0 --depth=1 https://gitlab.freedesktop.org/wayland/wayland +git clone --branch 1.18.0 --depth=1 https://gitlab.freedesktop.org/wayland/wayland export MAKEFLAGS="-j4" cd wayland git show -s HEAD diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c index 869fdc3e..8f4af371 100644 --- a/libweston/renderer-gl/gl-renderer.c +++ b/libweston/renderer-gl/gl-renderer.c @@ -2078,6 +2078,17 @@ gl_renderer_attach_shm(struct weston_surface *es, struct weston_buffer *buffer, gl_format[1] = GL_BGRA_EXT; es->is_opaque = true; break; + case WL_SHM_FORMAT_XYUV8888: + /* + * [31:0] X:Y:Cb:Cr 8:8:8:8 little endian + * a:b: g: r in SHADER_VARIANT_XYUV + */ + gs->shader_requirements.variant = SHADER_VARIANT_XYUV; + pitch = wl_shm_buffer_get_stride(shm_buffer) / 4; + gl_format[0] = GL_RGBA; + gl_pixel_type = GL_UNSIGNED_BYTE; + es->is_opaque = true; + break; default: weston_log("warning: unknown shm buffer format: %08x\n", wl_shm_buffer_get_format(shm_buffer)); @@ -3674,6 +3685,7 @@ gl_renderer_display_create(struct weston_compositor *ec, wl_display_add_shm_format(ec->wl_display, WL_SHM_FORMAT_YUV420); wl_display_add_shm_format(ec->wl_display, WL_SHM_FORMAT_NV12); wl_display_add_shm_format(ec->wl_display, WL_SHM_FORMAT_YUYV); + wl_display_add_shm_format(ec->wl_display, WL_SHM_FORMAT_XYUV8888); wl_signal_init(&gr->destroy_signal); diff --git a/meson.build b/meson.build index 1b5c2e00..5a2db937 100644 --- a/meson.build +++ b/meson.build @@ -138,8 +138,8 @@ if dep_xkbcommon.version().version_compare('>= 0.5.0') config_h.set('HAVE_XKBCOMMON_COMPOSE', '1') endif -dep_wayland_server = dependency('wayland-server', version: '>= 1.17.0') -dep_wayland_client = dependency('wayland-client', version: '>= 1.17.0') +dep_wayland_server = dependency('wayland-server', version: '>= 1.18.0') +dep_wayland_client = dependency('wayland-client', version: '>= 1.18.0') dep_pixman = dependency('pixman-1', version: '>= 0.25.2') dep_libinput = dependency('libinput', version: '>= 0.8.0') dep_libevdev = dependency('libevdev')