Date: Monday, December 6, 2021 @ 09:22:40 Author: lcarlier Revision: 430721
upgpkg: mesa 21.3.1-1: upstream update 21.3.1 Added: mesa/trunk/gbm-fix-with-old-nvidia-drivers.patch Modified: mesa/trunk/PKGBUILD ---------------------------------------+ PKGBUILD | 9 ++- gbm-fix-with-old-nvidia-drivers.patch | 77 ++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 2 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2021-12-06 09:11:53 UTC (rev 430720) +++ PKGBUILD 2021-12-06 09:22:40 UTC (rev 430721) @@ -6,7 +6,7 @@ pkgbase=mesa pkgname=('vulkan-mesa-layers' 'opencl-mesa' 'vulkan-intel' 'vulkan-radeon' 'vulkan-swrast' 'libva-mesa-driver' 'mesa-vdpau' 'mesa') pkgdesc="An open-source implementation of the OpenGL specification" -pkgver=21.3.0 +pkgver=21.3.1 pkgrel=1 arch=('x86_64') makedepends=('python-mako' 'libxml2' 'libx11' 'xorgproto' 'libdrm' 'libxshmfence' 'libxxf86vm' @@ -18,11 +18,13 @@ source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig} swr-llvm13-patch1.patch swr-llvm13-patch2.patch + gbm-fix-with-old-nvidia-drivers.patch LICENSE) -sha512sums=('b27c0ccf2fc9b96bbece715612cec4f4e267ab25dc5386c3debd2346c385afa0146317c67a3d2eec198dbf5338fb182b458c5fe5567216b265153c0b7b560de1' +sha512sums=('43f019d4810bafd177b1a41207ae20a77982e4e6df3ab2b7a700273748cbc766694bd44594c898c4bd7848a94200fd28237a67d290c4e06595e6eab71cb716e8' 'SKIP' '073ea2bb4778b3151717b26e0ec737abb4916ea340c7193a7382c2e2197534e93e95622d530e2f731ae156fd6ca1fc86f315f6ecae0baaeab88846773fb98bba' 'b59f18f4bc69b872e97b5f33a53b9c2398143bc1d0a1b42787ca2a0c204fc11b2837ca40f6f773a0b1bd49756754f9d755ac14d4eb10df6269570477ba8484fc' + '8484be4d1d3dc38cefe22edea33c5cfce98bb71711370e502cc812f41b0d5536857749cb337cb6a8feb370d87e38d6f2c294bea3470370e25dc2ddd1ab691bf2' 'f9f0d0ccf166fe6cb684478b6f1e1ab1f2850431c06aa041738563eb1808a004e52cdec823c103c9e180f03ffc083e95974d291353f0220fe52ae6d4897fecc7') validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov <emil.l.veli...@gmail.com> '946D09B5E4C9845E63075FF1D961C596A7203456' # Andres Gomez <ta...@igalia.com> @@ -38,6 +40,9 @@ patch -Np1 -i ../swr-llvm13-patch1.patch # https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13267 patch -Np1 -i ../swr-llvm13-patch2.patch + + # Fix KDE with old nvidia drivers + patch -Np1 -i ../gbm-fix-with-old-nvidia-drivers.patch } build() { Added: gbm-fix-with-old-nvidia-drivers.patch =================================================================== --- gbm-fix-with-old-nvidia-drivers.patch (rev 0) +++ gbm-fix-with-old-nvidia-drivers.patch 2021-12-06 09:22:40 UTC (rev 430721) @@ -0,0 +1,77 @@ +From 873ce884fd217f2ca2a5fe9764b65e75102124d6 Mon Sep 17 00:00:00 2001 +From: James Jones <jajo...@nvidia.com> +Date: Fri, 19 Nov 2021 11:50:18 -0800 +Subject: [PATCH] gbm: Don't pass default usage flags on ABIs < 1 + +Older drivers will not expect any flags from the +GBM front-end when modifiers are in use, and will +likely fail the allocation or handle them +incorrectly as a result. Only specify usage flags +when allocating from a backend with an ABI >= 1, +as that's the ABI version that added support for +specifying usage flags along with modifiers. + +Fixes: d50b47a14e9 ("gbm: assume USE_SCANOUT in create_with_modifiers") +Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5709 +Signed-off-by: James Jones <jajo...@nvidia.com> +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14049> +--- + src/gbm/main/gbm.c | 32 ++++++++++++++++++++++++++++++-- + 1 file changed, 30 insertions(+), 2 deletions(-) + +diff --git a/src/gbm/main/gbm.c b/src/gbm/main/gbm.c +index 476a03cb5b8..6b1b3248142 100644 +--- a/src/gbm/main/gbm.c ++++ b/src/gbm/main/gbm.c +@@ -500,8 +500,22 @@ gbm_bo_create_with_modifiers(struct gbm_device *gbm, + const uint64_t *modifiers, + const unsigned int count) + { ++ uint32_t flags = 0; ++ ++ /* ++ * ABI version 1 added the modifiers+flags capability. Backends from ++ * prior versions may fail if "unknown" flags are provided along with ++ * modifiers, but assume scanout is required when modifiers are used. ++ * Newer backends expect scanout to be explicitly requested if required, ++ * but applications using this older interface rely on the older implied ++ * requirement, so that behavior must be preserved. ++ */ ++ if (gbm->v0.backend_version >= 1) { ++ flags |= GBM_BO_USE_SCANOUT; ++ } ++ + return gbm_bo_create_with_modifiers2(gbm, width, height, format, modifiers, +- count, GBM_BO_USE_SCANOUT); ++ count, flags); + } + + GBM_EXPORT struct gbm_bo * +@@ -651,9 +665,23 @@ gbm_surface_create_with_modifiers(struct gbm_device *gbm, + const uint64_t *modifiers, + const unsigned int count) + { ++ uint32_t flags = 0; ++ ++ /* ++ * ABI version 1 added the modifiers+flags capability. Backends from ++ * prior versions may fail if "unknown" flags are provided along with ++ * modifiers, but assume scanout is required when modifiers are used. ++ * Newer backends expect scanout to be explicitly requested if required, ++ * but applications using this older interface rely on the older implied ++ * requirement, so that behavior must be preserved. ++ */ ++ if (gbm->v0.backend_version >= 1) { ++ flags |= GBM_BO_USE_SCANOUT; ++ } ++ + return gbm_surface_create_with_modifiers2(gbm, width, height, format, + modifiers, count, +- GBM_BO_USE_SCANOUT); ++ flags); + } + + GBM_EXPORT struct gbm_surface * +-- +GitLab +