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;