From b335dfdd9eef81afd1358e282bbf05f34fded772 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 6 Aug 2024 16:59:45 +0300 Subject: [PATCH] mesa: cherry-pick patch to fix broken video decoding on AMD iGPUs --- pkgs/development/libraries/mesa/default.nix | 5 +++++ pkgs/development/libraries/mesa/vcn-pagefault.patch | 10 ++++++++++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/mesa/vcn-pagefault.patch diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 5782ec9fbedf..6f3f7b45b569 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -138,6 +138,11 @@ in stdenv.mkDerivation { patches = [ ./opencl.patch + + # Manual backport of https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30510 + # Fixes video corruption / crashes when decoding video on AMD iGPUs + # FIXME: remove when merged + ./vcn-pagefault.patch ]; postPatch = '' diff --git a/pkgs/development/libraries/mesa/vcn-pagefault.patch b/pkgs/development/libraries/mesa/vcn-pagefault.patch new file mode 100644 index 000000000000..9b8c7b99c564 --- /dev/null +++ b/pkgs/development/libraries/mesa/vcn-pagefault.patch @@ -0,0 +1,10 @@ +--- a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c ++++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c +@@ -1390,6 +1390,7 @@ static unsigned rvcn_dec_dynamic_dpb_t2_message(struct radeon_decoder *dec, rvcn + dummy->dpb.res; + addr = dec->ws->buffer_get_virtual_address(dummy_res->buf); + } ++ dec->ws->cs_add_buffer(&dec->cs, d->dpb.res->buf, RADEON_USAGE_READWRITE | RADEON_USAGE_SYNCHRONIZED, RADEON_DOMAIN_VRAM); + dynamic_dpb_t2->dpbAddrLo[i] = addr; + dynamic_dpb_t2->dpbAddrHi[i] = addr >> 32; + ++dynamic_dpb_t2->dpbArraySize;