diff --git a/extra/mesa/.SRCINFO b/extra/mesa/.SRCINFO
index fcf6b5a04..2045d248a 100644
--- a/extra/mesa/.SRCINFO
+++ b/extra/mesa/.SRCINFO
@@ -1,34 +1,39 @@
 pkgbase = mesa
 	pkgdesc = Open-source OpenGL drivers
-	pkgver = 24.0.3
-	pkgrel = 2
+	pkgver = 24.0.4
+	pkgrel = 1
 	epoch = 1
 	url = https://www.mesa3d.org/
 	arch = x86_64
 	license = MIT AND BSD-3-Clause AND SGI-B-2.0
 	makedepends = clang
 	makedepends = expat
+	makedepends = gcc-libs
+	makedepends = glibc
 	makedepends = libdrm
 	makedepends = libelf
 	makedepends = libglvnd
-	makedepends = libunwind
 	makedepends = libva
 	makedepends = libvdpau
 	makedepends = libx11
-	makedepends = libxdamage
+	makedepends = libxcb
+	makedepends = libxext
+	makedepends = libxfixes
 	makedepends = libxml2
 	makedepends = libxrandr
 	makedepends = libxshmfence
 	makedepends = libxxf86vm
 	makedepends = llvm
+	makedepends = llvm-libs
 	makedepends = lm_sensors
 	makedepends = rust
 	makedepends = spirv-llvm-translator
 	makedepends = spirv-tools
-	makedepends = systemd
+	makedepends = systemd-libs
 	makedepends = vulkan-icd-loader
 	makedepends = wayland
 	makedepends = xcb-util-keysyms
+	makedepends = zlib
 	makedepends = zstd
 	makedepends = clang
 	makedepends = cmake
@@ -44,9 +49,8 @@ pkgbase = mesa
 	makedepends = valgrind
 	makedepends = directx-headers
 	makedepends = libomxil-bellagio
-	source = https://mesa.freedesktop.org/archive/mesa-24.0.3.tar.xz
-	source = https://mesa.freedesktop.org/archive/mesa-24.0.3.tar.xz.sig
-	source = radeon_bo_can_reclaim_slab.diff
+	source = https://mesa.freedesktop.org/archive/mesa-24.0.4.tar.xz
+	source = https://mesa.freedesktop.org/archive/mesa-24.0.4.tar.xz.sig
 	source = proc-macro2-1.0.70.tar.gz::https://crates.io/api/v1/crates/proc-macro2/1.0.70/download
 	source = unicode-ident-1.0.12.tar.gz::https://crates.io/api/v1/crates/unicode-ident/1.0.12/download
 	source = quote-1.0.33.tar.gz::https://crates.io/api/v1/crates/quote/1.0.33/download
@@ -57,16 +61,14 @@ pkgbase = mesa
 	validpgpkeys = A5CC9FEC93F2F837CB044912336909B6B25FADFA
 	validpgpkeys = 71C4B75620BC75708B4BDB254C95FAAB3EB073EC
 	validpgpkeys = 57551DE15B968F6341C248F68D8E31AFC32428A6
-	sha256sums = 77aec9a2a37b7d3596ea1640b3cc53d0b5d9b3b52abed89de07e3717e91bfdbe
+	sha256sums = 90febd30a098cbcd97ff62ecc3dcf5c93d76f7fa314de944cfce81951ba745f0
 	sha256sums = SKIP
-	sha256sums = 3fd1ad8cd29319502a6f80ecb96bb9a059e5de83a8b6e39f23de8d93921fd922
 	sha256sums = 39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b
 	sha256sums = 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b
 	sha256sums = 5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae
 	sha256sums = 23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a
-	b2sums = 7af5dc7f11bb11a3d04b3d71b5122a5bf9fe9242440444f266c6d1fac5891b4380a5f792fb66216f1937a7d886402f786d44365c93362d31fb6840d0954c95b4
+	b2sums = 6de755081f7e9dd9303af791e1a405203388787c294f8163c9d6598aa66eed1c001eeb03203c49ed8a264065458228efd849e6e59091a5963155ce8edc47c63f
 	b2sums = SKIP
-	b2sums = e7c3451a342cc648149375ce58697ae24273d47060e74ca2948d45ea8fe29b104f1daae4c91968fb6f37d41963d176987abf9ee21acfba0172a9b5d30300a72e
 	b2sums = fff0dec06b21e391783cc136790238acb783780eaedcf14875a350e7ceb46fdc100c8b9e3f09fb7f4c2196c25d4c6b61e574c0dad762d94533b628faab68cf5c
 	b2sums = 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac
 	b2sums = 77c4b166f1200e1ee2ab94a5014acd334c1fe4b7d72851d73768d491c56c6779a0882a304c1f30c88732a6168351f0f786b10516ae537cff993892a749175848
@@ -74,6 +76,8 @@ pkgbase = mesa
 
 pkgname = vulkan-mesa-layers
 	pkgdesc = Mesa's Vulkan layers
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libxcb
 	depends = wayland
@@ -85,9 +89,14 @@ pkgname = opencl-clover-mesa
 	pkgdesc = Open-source OpenCL drivers - Clover variant
 	depends = clang
 	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libelf
+	depends = llvm-libs
 	depends = spirv-llvm-translator
+	depends = spirv-tools
+	depends = zlib
 	depends = zstd
 	depends = libclc
 	optdepends = opencl-headers: headers necessary for OpenCL development
@@ -99,10 +108,14 @@ pkgname = opencl-rusticl-mesa
 	pkgdesc = Open-source OpenCL drivers - RustICL variant
 	depends = clang
 	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libelf
-	depends = lm_sensors
+	depends = llvm-libs
 	depends = spirv-llvm-translator
+	depends = spirv-tools
+	depends = zlib
 	depends = zstd
 	depends = libclc
 	optdepends = opencl-headers: headers necessary for OpenCL development
@@ -112,52 +125,75 @@ pkgname = opencl-rusticl-mesa
 
 pkgname = vulkan-intel
 	pkgdesc = Open-source Vulkan driver for Intel GPUs
+	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libx11
+	depends = libxcb
 	depends = libxshmfence
-	depends = systemd
+	depends = systemd-libs
+	depends = vulkan-icd-loader
 	depends = wayland
 	depends = xcb-util-keysyms
+	depends = zlib
 	depends = zstd
 	optdepends = vulkan-mesa-layers: additional vulkan layers
 	provides = vulkan-driver
 
 pkgname = vulkan-nouveau
 	pkgdesc = Open-source Vulkan driver for Nvidia GPUs
+	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libx11
+	depends = libxcb
 	depends = libxshmfence
-	depends = systemd
+	depends = systemd-libs
+	depends = vulkan-icd-loader
 	depends = wayland
 	depends = xcb-util-keysyms
+	depends = zlib
 	depends = zstd
 	optdepends = vulkan-mesa-layers: additional vulkan layers
 	provides = vulkan-driver
 
 pkgname = vulkan-radeon
 	pkgdesc = Open-source Vulkan driver for AMD GPUs
+	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libelf
 	depends = libx11
+	depends = libxcb
 	depends = libxshmfence
 	depends = llvm-libs
-	depends = systemd
+	depends = systemd-libs
+	depends = vulkan-icd-loader
 	depends = wayland
 	depends = xcb-util-keysyms
+	depends = zlib
 	depends = zstd
 	optdepends = vulkan-mesa-layers: additional vulkan layers
 	provides = vulkan-driver
 
 pkgname = vulkan-swrast
 	pkgdesc = Open-source Vulkan driver for CPUs (Software Rasterizer)
+	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
-	depends = libunwind
 	depends = libx11
+	depends = libxcb
 	depends = libxshmfence
 	depends = llvm-libs
-	depends = systemd
+	depends = systemd-libs
+	depends = vulkan-icd-loader
 	depends = wayland
 	depends = xcb-util-keysyms
+	depends = zlib
 	depends = zstd
 	optdepends = vulkan-mesa-layers: additional vulkan layers
 	provides = vulkan-driver
@@ -166,12 +202,18 @@ pkgname = vulkan-swrast
 
 pkgname = vulkan-virtio
 	pkgdesc = Open-source Vulkan driver for Virtio-GPU (Venus)
+	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libx11
+	depends = libxcb
 	depends = libxshmfence
-	depends = systemd
+	depends = systemd-libs
+	depends = vulkan-icd-loader
 	depends = wayland
 	depends = xcb-util-keysyms
+	depends = zlib
 	depends = zstd
 	optdepends = vulkan-mesa-layers: additional vulkan layers
 	provides = vulkan-driver
@@ -179,37 +221,50 @@ pkgname = vulkan-virtio
 pkgname = libva-mesa-driver
 	pkgdesc = Open-source VA-API drivers
 	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libelf
 	depends = libx11
+	depends = libxcb
 	depends = libxshmfence
 	depends = llvm-libs
+	depends = zlib
 	depends = zstd
 	provides = libva-driver
 
 pkgname = mesa-vdpau
 	pkgdesc = Open-source VDPAU drivers
 	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libelf
 	depends = libx11
+	depends = libxcb
 	depends = libxshmfence
 	depends = llvm-libs
+	depends = zlib
 	depends = zstd
 	provides = vdpau-driver
 
 pkgname = mesa
+	depends = expat
+	depends = gcc-libs
+	depends = glibc
 	depends = libdrm
 	depends = libelf
 	depends = libglvnd
-	depends = libunwind
-	depends = libxdamage
+	depends = libx11
+	depends = libxcb
+	depends = libxext
+	depends = libxfixes
 	depends = libxshmfence
 	depends = libxxf86vm
 	depends = llvm-libs
 	depends = lm_sensors
-	depends = vulkan-icd-loader
 	depends = wayland
+	depends = zlib
 	depends = zstd
 	depends = libomxil-bellagio
 	optdepends = opengl-man-pages: for the OpenGL API man pages
diff --git a/extra/mesa/PKGBUILD b/extra/mesa/PKGBUILD
index 751ec1779..bb71868f1 100644
--- a/extra/mesa/PKGBUILD
+++ b/extra/mesa/PKGBUILD
@@ -30,8 +30,8 @@ pkgname=(
   'mesa-vdpau'
   'mesa'
 )
-pkgver=24.0.3
-pkgrel=2
+pkgver=24.0.4
+pkgrel=1
 epoch=1
 pkgdesc="Open-source OpenGL drivers"
 url="https://www.mesa3d.org/"
@@ -40,27 +40,32 @@ license=('MIT AND BSD-3-Clause AND SGI-B-2.0')
 makedepends=(
   'clang'
   'expat'
+  'gcc-libs'
+  'glibc'
   'libdrm'
   'libelf'
   'libglvnd'
-  'libunwind'
   'libva'
   'libvdpau'
   'libx11'
-  'libxdamage'
+  'libxcb'
+  'libxext'
+  'libxfixes'
   'libxml2'
   'libxrandr'
   'libxshmfence'
   'libxxf86vm'
   'llvm'
+  'llvm-libs'
   'lm_sensors'
   'rust'
   'spirv-llvm-translator'
   'spirv-tools'
-  'systemd'
+  'systemd-libs'
   'vulkan-icd-loader'
   'wayland'
   'xcb-util-keysyms'
+  'zlib'
   'zstd'
 
   # shared between mesa and lib32-mesa
@@ -87,7 +92,6 @@ makedepends=(
 )
 source=(
   https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
-  radeon_bo_can_reclaim_slab.diff
 )
 validpgpkeys=(
   '8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D'  # Emil Velikov <emil.l.velikov@gmail.com>
@@ -110,16 +114,14 @@ for _crate in "${!_crates[@]}"; do
   source+=($_crate-${_crates[$_crate]}.tar.gz::https://crates.io/api/v1/crates/$_crate/${_crates[$_crate]}/download)
 done
 
-sha256sums=('77aec9a2a37b7d3596ea1640b3cc53d0b5d9b3b52abed89de07e3717e91bfdbe'
+sha256sums=('90febd30a098cbcd97ff62ecc3dcf5c93d76f7fa314de944cfce81951ba745f0'
             'SKIP'
-            '3fd1ad8cd29319502a6f80ecb96bb9a059e5de83a8b6e39f23de8d93921fd922'
             '39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b'
             '3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b'
             '5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae'
             '23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a')
-b2sums=('7af5dc7f11bb11a3d04b3d71b5122a5bf9fe9242440444f266c6d1fac5891b4380a5f792fb66216f1937a7d886402f786d44365c93362d31fb6840d0954c95b4'
+b2sums=('6de755081f7e9dd9303af791e1a405203388787c294f8163c9d6598aa66eed1c001eeb03203c49ed8a264065458228efd849e6e59091a5963155ce8edc47c63f'
         'SKIP'
-        'e7c3451a342cc648149375ce58697ae24273d47060e74ca2948d45ea8fe29b104f1daae4c91968fb6f37d41963d176987abf9ee21acfba0172a9b5d30300a72e'
         'fff0dec06b21e391783cc136790238acb783780eaedcf14875a350e7ceb46fdc100c8b9e3f09fb7f4c2196c25d4c6b61e574c0dad762d94533b628faab68cf5c'
         '4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac'
         '77c4b166f1200e1ee2ab94a5014acd334c1fe4b7d72851d73768d491c56c6779a0882a304c1f30c88732a6168351f0f786b10516ae537cff993892a749175848'
@@ -128,9 +130,6 @@ b2sums=('7af5dc7f11bb11a3d04b3d71b5122a5bf9fe9242440444f266c6d1fac5891b4380a5f79
 prepare() {
   cd mesa-$pkgver
 
-  # Proposed crash fix from https://gitlab.freedesktop.org/mesa/mesa/-/issues/10613#note_2290167
-  patch -Np1 -i ../radeon_bo_can_reclaim_slab.diff
-
   # Include package release in version string so Chromium invalidates
   # its GPU cache; otherwise it can cause pages to render incorrectly.
   # https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/2020604
@@ -213,6 +212,8 @@ _libdir=usr/lib
 package_vulkan-mesa-layers() {
   pkgdesc="Mesa's Vulkan layers"
   depends=(
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libxcb'
     'wayland'
@@ -235,9 +236,14 @@ package_opencl-clover-mesa() {
   depends=(
     'clang'
     'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libelf'
+    'llvm-libs'
     'spirv-llvm-translator'
+    'spirv-tools'
+    'zlib'
     'zstd'
 
     'libclc'
@@ -259,10 +265,14 @@ package_opencl-rusticl-mesa() {
   depends=(
     'clang'
     'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libelf'
-    'lm_sensors'
+    'llvm-libs'
     'spirv-llvm-translator'
+    'spirv-tools'
+    'zlib'
     'zstd'
 
     'libclc'
@@ -281,12 +291,18 @@ package_opencl-rusticl-mesa() {
 package_vulkan-nouveau() {
   pkgdesc="Open-source Vulkan driver for Nvidia GPUs"
   depends=(
+    'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libx11'
+    'libxcb'
     'libxshmfence'
-    'systemd'
+    'systemd-libs'
+    'vulkan-icd-loader'
     'wayland'
     'xcb-util-keysyms'
+    'zlib'
     'zstd'
   )
   optdepends=('vulkan-mesa-layers: additional vulkan layers')
@@ -301,14 +317,20 @@ package_vulkan-nouveau() {
 package_vulkan-radeon() {
   pkgdesc="Open-source Vulkan driver for AMD GPUs"
   depends=(
+    'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libelf'
     'libx11'
+    'libxcb'
     'libxshmfence'
     'llvm-libs'
-    'systemd'
+    'systemd-libs'
+    'vulkan-icd-loader'
     'wayland'
     'xcb-util-keysyms'
+    'zlib'
     'zstd'
   )
   optdepends=('vulkan-mesa-layers: additional vulkan layers')
@@ -324,14 +346,19 @@ package_vulkan-radeon() {
 package_vulkan-swrast() {
   pkgdesc="Open-source Vulkan driver for CPUs (Software Rasterizer)"
   depends=(
+    'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
-    'libunwind'
     'libx11'
+    'libxcb'
     'libxshmfence'
     'llvm-libs'
-    'systemd'
+    'systemd-libs'
+    'vulkan-icd-loader'
     'wayland'
     'xcb-util-keysyms'
+    'zlib'
     'zstd'
   )
   optdepends=('vulkan-mesa-layers: additional vulkan layers')
@@ -348,12 +375,18 @@ package_vulkan-swrast() {
 package_vulkan-virtio() {
   pkgdesc="Open-source Vulkan driver for Virtio-GPU (Venus)"
   depends=(
+    'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libx11'
+    'libxcb'
     'libxshmfence'
-    'systemd'
+    'systemd-libs'
+    'vulkan-icd-loader'
     'wayland'
     'xcb-util-keysyms'
+    'zlib'
     'zstd'
   )
   optdepends=('vulkan-mesa-layers: additional vulkan layers')
@@ -415,11 +448,15 @@ package_libva-mesa-driver() {
   pkgdesc="Open-source VA-API drivers"
   depends=(
     'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libelf'
     'libx11'
+    'libxcb'
     'libxshmfence'
     'llvm-libs'
+    'zlib'
     'zstd'
   )
   provides=('libva-driver')
@@ -433,11 +470,15 @@ package_mesa-vdpau() {
   pkgdesc="Open-source VDPAU drivers"
   depends=(
     'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libelf'
     'libx11'
+    'libxcb'
     'libxshmfence'
     'llvm-libs'
+    'zlib'
     'zstd'
   )
   provides=('vdpau-driver')
@@ -449,17 +490,22 @@ package_mesa-vdpau() {
 
 package_mesa() {
   depends=(
+    'expat'
+    'gcc-libs'
+    'glibc'
     'libdrm'
     'libelf'
     'libglvnd'
-    'libunwind'
-    'libxdamage'
+    'libx11'
+    'libxcb'
+    'libxext'
+    'libxfixes'
     'libxshmfence'
     'libxxf86vm'
     'llvm-libs'
     'lm_sensors'
-    'vulkan-icd-loader'
     'wayland'
+    'zlib'
     'zstd'
 
     'libomxil-bellagio'
diff --git a/extra/mesa/radeon_bo_can_reclaim_slab.diff b/extra/mesa/radeon_bo_can_reclaim_slab.diff
deleted file mode 100644
index 57b2e8c91..000000000
--- a/extra/mesa/radeon_bo_can_reclaim_slab.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git i/src/gallium/winsys/radeon/drm/radeon_drm_bo.c w/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
-index 2e1d9c488e2..7979cad75fa 100644
---- i/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
-+++ w/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
-@@ -729,7 +729,7 @@ bool radeon_bo_can_reclaim_slab(void *priv, struct pb_slab_entry *entry)
- {
-    struct radeon_bo *bo = container_of(entry, struct radeon_bo, u.slab.entry);
- 
--   return radeon_bo_can_reclaim(NULL, &bo->base);
-+   return radeon_bo_can_reclaim(priv, &bo->base);
- }
- 
- static void radeon_bo_slab_destroy(void *winsys, struct pb_buffer_lean *_buf)