Accepting request 930159 from X11:XOrg
- Update to version 21.1.3 * Most notable change is a fix for the GBM backend to work with the Nvidia driver series 495. - supersedes U_glamor-Fix-handling-of-1-bit-pixmaps.patch OBS-URL: https://build.opensuse.org/request/show/930159 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xwayland?expand=0&rev=7
This commit is contained in:
commit
2b4f3ca0e2
@ -1,192 +0,0 @@
|
|||||||
From e59e24c8779de65db87b8c07bc3f2abb479be082 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Povilas Kanapickas <povilas@radix.lt>
|
|
||||||
Date: Mon, 6 Sep 2021 22:41:32 +0300
|
|
||||||
Subject: [PATCH] glamor: Fix handling of 1-bit pixmaps
|
|
||||||
|
|
||||||
Since 8702c938b33b9ec180d64754eb922515c7c4a98b the pixmap formats are
|
|
||||||
handled in a single place. In the process of conversion the difference
|
|
||||||
between pixmap formats that can be uploaded and those that can be
|
|
||||||
rendered on GL side has been lost. This affects only 1-bit pixmaps: as
|
|
||||||
they aren't supported on GL, but can be converted to a R8 or A8 format
|
|
||||||
for rendering (see glamor_get_tex_format_type_from_pictformat()).
|
|
||||||
|
|
||||||
To work around this we add a separate flag that specifies whether the
|
|
||||||
format actually supports rendering in GL, convert all checks to use this
|
|
||||||
flag and then add 1-bit pixmap formats that don't support rendering in
|
|
||||||
GL.
|
|
||||||
|
|
||||||
Fixes: 8702c938b33b9ec180d64754eb922515c7c4a98b
|
|
||||||
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1210
|
|
||||||
Acked-by: Olivier Fourdan <ofourdan@redhat.com>
|
|
||||||
Tested-by: Olivier Fourdan <ofourdan@redhat.com>
|
|
||||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
|
||||||
Signed-off-by: Povilas Kanapickas <povilas@radix.lt>
|
|
||||||
---
|
|
||||||
glamor/glamor.c | 35 +++++++++++++++++++++--------------
|
|
||||||
glamor/glamor_priv.h | 10 ++++++++++
|
|
||||||
glamor/glamor_render.c | 9 +++++++--
|
|
||||||
3 files changed, 38 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
Index: xwayland-21.1.2/glamor/glamor.c
|
|
||||||
===================================================================
|
|
||||||
--- xwayland-21.1.2.orig/glamor/glamor.c
|
|
||||||
+++ xwayland-21.1.2/glamor/glamor.c
|
|
||||||
@@ -216,7 +216,7 @@ glamor_create_pixmap(ScreenPtr screen, i
|
|
||||||
w <= glamor_priv->glyph_max_dim &&
|
|
||||||
h <= glamor_priv->glyph_max_dim)
|
|
||||||
|| (w == 0 && h == 0)
|
|
||||||
- || !glamor_priv->formats[depth].format))
|
|
||||||
+ || !glamor_priv->formats[depth].rendering_supported))
|
|
||||||
return fbCreatePixmap(screen, w, h, depth, usage);
|
|
||||||
else
|
|
||||||
pixmap = fbCreatePixmap(screen, 0, 0, depth, usage);
|
|
||||||
@@ -461,7 +461,8 @@ glamor_format_for_pixmap(PixmapPtr pixma
|
|
||||||
|
|
||||||
static void
|
|
||||||
glamor_add_format(ScreenPtr screen, int depth, CARD32 render_format,
|
|
||||||
- GLenum internalformat, GLenum format, GLenum type)
|
|
||||||
+ GLenum internalformat, GLenum format, GLenum type,
|
|
||||||
+ Bool rendering_supported)
|
|
||||||
{
|
|
||||||
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
|
|
||||||
struct glamor_format *f = &glamor_priv->formats[depth];
|
|
||||||
@@ -476,7 +477,7 @@ glamor_add_format(ScreenPtr screen, int
|
|
||||||
* Note that we can't just create a pixmap because we're in
|
|
||||||
* screeninit.
|
|
||||||
*/
|
|
||||||
- if (glamor_priv->is_gles) {
|
|
||||||
+ if (rendering_supported && glamor_priv->is_gles) {
|
|
||||||
unsigned fbo, tex;
|
|
||||||
int read_format, read_type;
|
|
||||||
GLenum status;
|
|
||||||
@@ -521,6 +522,7 @@ glamor_add_format(ScreenPtr screen, int
|
|
||||||
f->internalformat = internalformat;
|
|
||||||
f->format = format;
|
|
||||||
f->type = type;
|
|
||||||
+ f->rendering_supported = rendering_supported;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set up the GL format/types that glamor will use for the various depths
|
|
||||||
@@ -551,11 +553,15 @@ glamor_setup_formats(ScreenPtr screen)
|
|
||||||
* only falling back to a8 if we can't do them.
|
|
||||||
*/
|
|
||||||
if (glamor_priv->is_gles || epoxy_has_gl_extension("GL_ARB_texture_rg")) {
|
|
||||||
+ glamor_add_format(screen, 1, PICT_a1,
|
|
||||||
+ GL_R8, GL_RED, GL_UNSIGNED_BYTE, FALSE);
|
|
||||||
glamor_add_format(screen, 8, PICT_a8,
|
|
||||||
- GL_R8, GL_RED, GL_UNSIGNED_BYTE);
|
|
||||||
+ GL_R8, GL_RED, GL_UNSIGNED_BYTE, TRUE);
|
|
||||||
} else {
|
|
||||||
+ glamor_add_format(screen, 1, PICT_a1,
|
|
||||||
+ GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE, FALSE);
|
|
||||||
glamor_add_format(screen, 8, PICT_a8,
|
|
||||||
- GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE);
|
|
||||||
+ GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (glamor_priv->is_gles) {
|
|
||||||
@@ -569,40 +575,41 @@ glamor_setup_formats(ScreenPtr screen)
|
|
||||||
* disable render accel for now.
|
|
||||||
*/
|
|
||||||
glamor_add_format(screen, 15, PICT_x1r5g5b5,
|
|
||||||
- GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1);
|
|
||||||
+ GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, TRUE);
|
|
||||||
} else {
|
|
||||||
glamor_add_format(screen, 15, PICT_x1r5g5b5,
|
|
||||||
- GL_RGBA, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV);
|
|
||||||
+ GL_RGBA, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
glamor_add_format(screen, 16, PICT_r5g6b5,
|
|
||||||
- GL_RGB, GL_RGB, GL_UNSIGNED_SHORT_5_6_5);
|
|
||||||
+ GL_RGB, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, TRUE);
|
|
||||||
|
|
||||||
if (glamor_priv->is_gles) {
|
|
||||||
assert(X_BYTE_ORDER == X_LITTLE_ENDIAN);
|
|
||||||
glamor_add_format(screen, 24, PICT_x8b8g8r8,
|
|
||||||
- GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE);
|
|
||||||
+ GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, TRUE);
|
|
||||||
glamor_add_format(screen, 32, PICT_a8b8g8r8,
|
|
||||||
- GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE);
|
|
||||||
+ GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, TRUE);
|
|
||||||
} else {
|
|
||||||
glamor_add_format(screen, 24, PICT_x8r8g8b8,
|
|
||||||
- GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV);
|
|
||||||
+ GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, TRUE);
|
|
||||||
glamor_add_format(screen, 32, PICT_a8r8g8b8,
|
|
||||||
- GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV);
|
|
||||||
+ GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (glamor_priv->is_gles) {
|
|
||||||
glamor_add_format(screen, 30, PICT_x2b10g10r10,
|
|
||||||
- GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV);
|
|
||||||
+ GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, TRUE);
|
|
||||||
} else {
|
|
||||||
glamor_add_format(screen, 30, PICT_x2r10g10b10,
|
|
||||||
- GL_RGB10_A2, GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV);
|
|
||||||
+ GL_RGB10_A2, GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
glamor_priv->cbcr_format.depth = 16;
|
|
||||||
glamor_priv->cbcr_format.internalformat = GL_RG8;
|
|
||||||
glamor_priv->cbcr_format.format = GL_RG;
|
|
||||||
glamor_priv->cbcr_format.type = GL_UNSIGNED_BYTE;
|
|
||||||
+ glamor_priv->cbcr_format.rendering_supported = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set up glamor for an already-configured GL context. */
|
|
||||||
Index: xwayland-21.1.2/glamor/glamor_priv.h
|
|
||||||
===================================================================
|
|
||||||
--- xwayland-21.1.2.orig/glamor/glamor_priv.h
|
|
||||||
+++ xwayland-21.1.2/glamor/glamor_priv.h
|
|
||||||
@@ -170,6 +170,11 @@ struct glamor_format {
|
|
||||||
* transferred using format/type.
|
|
||||||
*/
|
|
||||||
CARD32 render_format;
|
|
||||||
+ /**
|
|
||||||
+ * Whether rendering is supported in GL at all (i.e. without pixel data conversion
|
|
||||||
+ * just before upload)
|
|
||||||
+ */
|
|
||||||
+ Bool rendering_supported;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct glamor_saved_procs {
|
|
||||||
@@ -215,6 +220,11 @@ typedef struct glamor_screen_private {
|
|
||||||
Bool can_copyplane;
|
|
||||||
int max_fbo_size;
|
|
||||||
|
|
||||||
+ /**
|
|
||||||
+ * Stores information about supported formats. Note, that this list contains all
|
|
||||||
+ * supported pixel formats, including these that are not supported on GL side
|
|
||||||
+ * directly, but are converted to another format instead.
|
|
||||||
+ */
|
|
||||||
struct glamor_format formats[33];
|
|
||||||
struct glamor_format cbcr_format;
|
|
||||||
|
|
||||||
Index: xwayland-21.1.2/glamor/glamor_render.c
|
|
||||||
===================================================================
|
|
||||||
--- xwayland-21.1.2.orig/glamor/glamor_render.c
|
|
||||||
+++ xwayland-21.1.2/glamor/glamor_render.c
|
|
||||||
@@ -773,14 +773,19 @@ glamor_render_format_is_supported(Pictur
|
|
||||||
{
|
|
||||||
PictFormatShort storage_format;
|
|
||||||
glamor_screen_private *glamor_priv;
|
|
||||||
+ struct glamor_format *f;
|
|
||||||
|
|
||||||
/* Source-only pictures should always work */
|
|
||||||
if (!picture->pDrawable)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
glamor_priv = glamor_get_screen_private(picture->pDrawable->pScreen);
|
|
||||||
- storage_format =
|
|
||||||
- glamor_priv->formats[picture->pDrawable->depth].render_format;
|
|
||||||
+ f = &glamor_priv->formats[picture->pDrawable->depth];
|
|
||||||
+
|
|
||||||
+ if (!f->rendering_supported)
|
|
||||||
+ return FALSE;
|
|
||||||
+
|
|
||||||
+ storage_format = f->render_format;
|
|
||||||
|
|
||||||
switch (picture->format) {
|
|
||||||
case PICT_a2r10g10b10:
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:b81cbdd5ad60b8b7ad8c3ecc7ec2a28c9bf021448670735cebb501f08bebd18b
|
|
||||||
size 1258732
|
|
Binary file not shown.
3
xwayland-21.1.3.tar.xz
Normal file
3
xwayland-21.1.3.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ebc2757f39fd4c7db1654fd86591589c211aa20172d43a54f77ae567cedbf8a2
|
||||||
|
size 1261776
|
BIN
xwayland-21.1.3.tar.xz.sig
Normal file
BIN
xwayland-21.1.3.tar.xz.sig
Normal file
Binary file not shown.
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Nov 8 11:45:16 UTC 2021 - Stefan Dirsch <sndirsch@suse.com>
|
||||||
|
|
||||||
|
- Update to version 21.1.3
|
||||||
|
* Most notable change is a fix for the GBM backend to work with
|
||||||
|
the Nvidia driver series 495.
|
||||||
|
- supersedes U_glamor-Fix-handling-of-1-bit-pixmaps.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Oct 7 12:22:22 UTC 2021 - Joan Torres <joan.torres@suse.com>
|
Thu Oct 7 12:22:22 UTC 2021 - Joan Torres <joan.torres@suse.com>
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: xwayland
|
Name: xwayland
|
||||||
Version: 21.1.2
|
Version: 21.1.3
|
||||||
Release: 0
|
Release: 0
|
||||||
URL: http://xorg.freedesktop.org/
|
URL: http://xorg.freedesktop.org/
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
@ -34,7 +34,6 @@ License: MIT
|
|||||||
Group: System/X11/Servers/XF86_4
|
Group: System/X11/Servers/XF86_4
|
||||||
Source0: %{name}-%{version}.tar.xz
|
Source0: %{name}-%{version}.tar.xz
|
||||||
Source1: %{name}-%{version}.tar.xz.sig
|
Source1: %{name}-%{version}.tar.xz.sig
|
||||||
Patch0: U_glamor-Fix-handling-of-1-bit-pixmaps.patch
|
|
||||||
BuildRequires: meson
|
BuildRequires: meson
|
||||||
BuildRequires: ninja
|
BuildRequires: ninja
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
@ -132,7 +131,6 @@ This package contains the Xwayland Server development files.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{version}
|
%setup -q -n %{name}-%{version}
|
||||||
%patch0 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%define _lto_cflags %{nil}
|
%define _lto_cflags %{nil}
|
||||||
|
Loading…
Reference in New Issue
Block a user