From 1b6868ec880d91b0b06e3431ecbb4023a4c28255 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Wed, 29 Jul 2026 11:32:23 +0200 Subject: [PATCH 1/7] nvidiactl: Manage Vulkan and GLVND-EGL loader JSON on GPU selection Create the NVIDIA Vulkan ICD, implicit layer, and GLVND-EGL vendor JSON files under /etc only when an NVIDIA GPU is selected, and remove them when falling back to the generic mxgfx link. This prevents the Vulkan/EGL loaders on generic or nouveau hosts from trying to dlopen the then dangling NVIDIA libraries. Fixes: https://github.molgen.mpg.de/mariux64/mariux64-issues/issues/161 Assisted-by: Claude Opus 4.8 --- nvidiactl/nvidiactl | 71 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/nvidiactl/nvidiactl b/nvidiactl/nvidiactl index 4d69a6df..b39ae864 100755 --- a/nvidiactl/nvidiactl +++ b/nvidiactl/nvidiactl @@ -1,6 +1,75 @@ #!/bin/bash +# Vulkan and GLVND-EGL loader configuration for the NVIDIA driver. +# +# These files must only be present when an NVIDIA GPU is actually selected, +# otherwise the Vulkan/EGL loaders on generic or nouveau hosts would try to +# dlopen the then dangling NVIDIA libraries (/usr/lib/lib*_nvidia.* resolve +# through /usr/share/mxgfx -> mxgfx-generic). They are therefore created and +# removed here, gated on GPU presence, rather than shipped by a package that +# would land them on every host. +# +# The content is version independent -- the driver libraries are referenced +# by soname -- and taken verbatim from NVIDIA-Linux-x86_64-570.144. Update it +# here if a future driver changes the sonames or api_version values. +# +# We write below /etc (SYSCONFDIR, a standard loader search path) so this +# keeps working on nodes where /usr is a read-only shared image. +NV_ICD_JSON=/etc/vulkan/icd.d/nvidia_icd.json +NV_LAYER_JSON=/etc/vulkan/implicit_layer.d/nvidia_layers.json +NV_EGL_JSON=/etc/glvnd/egl_vendor.d/10_nvidia.json + +remove_nvidia_loader_json () { + rm -f "${NV_ICD_JSON}" "${NV_LAYER_JSON}" "${NV_EGL_JSON}" +} + +install_nvidia_loader_json () { + install -D -m 644 /dev/stdin "${NV_ICD_JSON}" <<'EOF' +{ + "file_format_version" : "1.0.1", + "ICD": { + "library_path": "libGLX_nvidia.so.0", + "api_version" : "1.4.303" + } +} +EOF + + install -D -m 644 /dev/stdin "${NV_LAYER_JSON}" <<'EOF' +{ + "file_format_version" : "1.0.1", + "layers": [{ + "name": "VK_LAYER_NV_optimus", + "type": "INSTANCE", + "library_path": "libGLX_nvidia.so.0", + "api_version" : "1.4.303", + "implementation_version" : "1", + "description" : "NVIDIA Optimus layer", + "functions": { + "vkGetInstanceProcAddr": "vk_optimusGetInstanceProcAddr", + "vkGetDeviceProcAddr": "vk_optimusGetDeviceProcAddr" + }, + "enable_environment": { + "__NV_PRIME_RENDER_OFFLOAD": "1" + }, + "disable_environment": { + "DISABLE_LAYER_NV_OPTIMUS_1": "" + } + }] +} +EOF + + install -D -m 644 /dev/stdin "${NV_EGL_JSON}" <<'EOF' +{ + "file_format_version" : "1.0.0", + "ICD" : { + "library_path" : "libEGL_nvidia.so.0" + } +} +EOF +} + set_generic_mxgfx_link () { + remove_nvidia_loader_json rm -f /node/usr_share_mxgfx ln -sf /usr/share/mxgfx-generic /node/usr_share_mxgfx } @@ -61,6 +130,8 @@ nvver=$(readlink ${nvlink}) rm -f /node/usr_share_mxgfx ln -sf /usr/share/nvidia/${nvver} /node/usr_share_mxgfx +install_nvidia_loader_json + test -e /lib/modules/$kver/kernel/drivers/gpu/drm/drm.ko && modprobe drm test -e /lib/modules/$kver/kernel/drivers/gpu/drm/drm_kms_helper.ko && modprobe drm_kms_helper test -e /lib/modules/$kver/kernel/drivers/gpu/drm/drm_ttm_helper.ko && modprobe drm_ttm_helper From 118fdd71c9c38382e60f2d21f89cca426957dde1 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Fri, 28 Aug 2026 07:50:44 +0200 Subject: [PATCH 2/7] nvidiactl: Remove elaborate comment --- nvidiactl/nvidiactl | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/nvidiactl/nvidiactl b/nvidiactl/nvidiactl index b39ae864..3ec2527e 100755 --- a/nvidiactl/nvidiactl +++ b/nvidiactl/nvidiactl @@ -1,20 +1,5 @@ #!/bin/bash -# Vulkan and GLVND-EGL loader configuration for the NVIDIA driver. -# -# These files must only be present when an NVIDIA GPU is actually selected, -# otherwise the Vulkan/EGL loaders on generic or nouveau hosts would try to -# dlopen the then dangling NVIDIA libraries (/usr/lib/lib*_nvidia.* resolve -# through /usr/share/mxgfx -> mxgfx-generic). They are therefore created and -# removed here, gated on GPU presence, rather than shipped by a package that -# would land them on every host. -# -# The content is version independent -- the driver libraries are referenced -# by soname -- and taken verbatim from NVIDIA-Linux-x86_64-570.144. Update it -# here if a future driver changes the sonames or api_version values. -# -# We write below /etc (SYSCONFDIR, a standard loader search path) so this -# keeps working on nodes where /usr is a read-only shared image. NV_ICD_JSON=/etc/vulkan/icd.d/nvidia_icd.json NV_LAYER_JSON=/etc/vulkan/implicit_layer.d/nvidia_layers.json NV_EGL_JSON=/etc/glvnd/egl_vendor.d/10_nvidia.json From 94a04e194067d423dffe4442f82c9881fc6c7a20 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Fri, 28 Aug 2026 08:24:57 +0200 Subject: [PATCH 3/7] nvidiactl: Link the selected driver's Vulkan and EGL loader JSON Commit 1b6868ec8801 ("nvidiactl: Manage Vulkan and GLVND-EGL loader JSON on GPU selection") hardcoded the JSON taken from NVIDIA-Linux-x86_64-570.144, assuming the content is version independent. It is not. Comparing the files in the beebuilds below /src/mariux/beeroot/build-archives: driver api_version file_format_version nvidia_layers.json 510.60.02 1.3.194 1.0.0 "layer": { } 510.108.03 1.3.194 1.0.0 "layer": { } 535.104.05 1.3.242 1.0.0 "layer": { } 535.230.02 1.3.242 1.0.0 "layer": { } 570.144 1.4.303 1.0.1 "layers": [ { } ] 580.178.04 1.4.312 1.0.1 "layers": [ { }, { } ] Only 10_nvidia.json is identical across all six. 580.178.04 also adds a second layer, VK_LAYER_NV_present, whose library_path is the fully versioned libnvidia-present.so.580.178.04 rather than a bare soname, so the hardcoded copy silently dropped it. Since /usr/share/nvidia/kernel//current selects any of those six drivers depending on the booted kernel, one hardcoded copy is wrong on most hosts -- it overclaimed api_version 1.4.303 on 510 and 535 nodes and underclaimed it on 580 nodes. Let 'nvidia_current' ship the files verbatim below /usr/share/nvidia/, which is on no loader search path, and only link the selected version into /etc here. A file is linked when it exists, so drivers packaged before that change get nothing rather than a dangling link and this can be deployed before every driver is rebuilt. Link: https://github.molgen.mpg.de/mariux64/bee-files/pull/3429 Resolves: https://github.molgen.mpg.de/mariux64/mariux64-issues/issues/161 Assisted-by: Claude Opus 5 --- nvidiactl/nvidiactl | 71 +++++++++++++++------------------------------ 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/nvidiactl/nvidiactl b/nvidiactl/nvidiactl index 3ec2527e..fdaec47f 100755 --- a/nvidiactl/nvidiactl +++ b/nvidiactl/nvidiactl @@ -1,56 +1,31 @@ #!/bin/bash -NV_ICD_JSON=/etc/vulkan/icd.d/nvidia_icd.json -NV_LAYER_JSON=/etc/vulkan/implicit_layer.d/nvidia_layers.json -NV_EGL_JSON=/etc/glvnd/egl_vendor.d/10_nvidia.json +# Vulkan and GLVND-EGL loader JSON, shipped per driver version by +# 'nvidia_current' below /usr/share/nvidia/. The libraries it names +# resolve through /usr/share/mxgfx, so it must only be in place while an +# NVIDIA GPU is selected. /etc is used as it is a loader search path that +# stays writable where /usr is a read-only shared image. +NV_LOADER_JSON=( + vulkan/icd.d/nvidia_icd.json + vulkan/implicit_layer.d/nvidia_layers.json + glvnd/egl_vendor.d/10_nvidia.json +) remove_nvidia_loader_json () { - rm -f "${NV_ICD_JSON}" "${NV_LAYER_JSON}" "${NV_EGL_JSON}" + for i in ${NV_LOADER_JSON[@]} ; do + rm -f /etc/${i} + done } -install_nvidia_loader_json () { - install -D -m 644 /dev/stdin "${NV_ICD_JSON}" <<'EOF' -{ - "file_format_version" : "1.0.1", - "ICD": { - "library_path": "libGLX_nvidia.so.0", - "api_version" : "1.4.303" - } -} -EOF - - install -D -m 644 /dev/stdin "${NV_LAYER_JSON}" <<'EOF' -{ - "file_format_version" : "1.0.1", - "layers": [{ - "name": "VK_LAYER_NV_optimus", - "type": "INSTANCE", - "library_path": "libGLX_nvidia.so.0", - "api_version" : "1.4.303", - "implementation_version" : "1", - "description" : "NVIDIA Optimus layer", - "functions": { - "vkGetInstanceProcAddr": "vk_optimusGetInstanceProcAddr", - "vkGetDeviceProcAddr": "vk_optimusGetDeviceProcAddr" - }, - "enable_environment": { - "__NV_PRIME_RENDER_OFFLOAD": "1" - }, - "disable_environment": { - "DISABLE_LAYER_NV_OPTIMUS_1": "" - } - }] -} -EOF - - install -D -m 644 /dev/stdin "${NV_EGL_JSON}" <<'EOF' -{ - "file_format_version" : "1.0.0", - "ICD" : { - "library_path" : "libEGL_nvidia.so.0" - } -} -EOF +# Drivers packaged before 'nvidia_current' shipped the JSON get nothing rather +# than a dangling link. +link_nvidia_loader_json () { + remove_nvidia_loader_json + for i in ${NV_LOADER_JSON[@]} ; do + test -e /usr/share/mxgfx/${i} || continue + mkdir -p /etc/$(dirname ${i}) + ln -s /usr/share/mxgfx/${i} /etc/${i} + done } set_generic_mxgfx_link () { @@ -115,7 +90,7 @@ nvver=$(readlink ${nvlink}) rm -f /node/usr_share_mxgfx ln -sf /usr/share/nvidia/${nvver} /node/usr_share_mxgfx -install_nvidia_loader_json +link_nvidia_loader_json test -e /lib/modules/$kver/kernel/drivers/gpu/drm/drm.ko && modprobe drm test -e /lib/modules/$kver/kernel/drivers/gpu/drm/drm_kms_helper.ko && modprobe drm_kms_helper From d13f75bfd3538675848753112ca66f69244e2b34 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 3 Sep 2026 00:55:18 +0200 Subject: [PATCH 4/7] nvidiactl: Also link the EGL external-platform JSON Since bee-files PR 3429, 'nvidia_current' ships the Wayland, GBM, Xlib and XCB external-platform JSON together with their libraries, but nothing puts them on a loader search path. Link them like the rest, the existing guard skipping the two that 510.60.02 does not have. Test on a node with an NVIDIA GPU selected: for l in $(grep -Rh library_path /etc/{vulkan,glvnd,egl} | cut -d'"' -f4 | sort -u) ; do echo "$l: $(readlink -e "$(ldconfig -p | awk -v l=$l '$1==l{print $NF;exit}')" || echo NOT FOUND)" ; done Link: https://github.molgen.mpg.de/mariux64/bee-files/pull/3429 Assisted-by: Claude Opus 5 --- nvidiactl/nvidiactl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nvidiactl/nvidiactl b/nvidiactl/nvidiactl index fdaec47f..19737d2b 100755 --- a/nvidiactl/nvidiactl +++ b/nvidiactl/nvidiactl @@ -1,14 +1,18 @@ #!/bin/bash -# Vulkan and GLVND-EGL loader JSON, shipped per driver version by -# 'nvidia_current' below /usr/share/nvidia/. The libraries it names -# resolve through /usr/share/mxgfx, so it must only be in place while an -# NVIDIA GPU is selected. /etc is used as it is a loader search path that +# Vulkan, GLVND-EGL and EGL external-platform loader JSON, shipped per driver +# version by 'nvidia_current' below /usr/share/nvidia/. The libraries +# it names resolve through /usr/share/mxgfx, so it must only be in place while +# an NVIDIA GPU is selected. /etc is used as it is a loader search path that # stays writable where /usr is a read-only shared image. NV_LOADER_JSON=( vulkan/icd.d/nvidia_icd.json vulkan/implicit_layer.d/nvidia_layers.json glvnd/egl_vendor.d/10_nvidia.json + egl/egl_external_platform.d/10_nvidia_wayland.json + egl/egl_external_platform.d/15_nvidia_gbm.json + egl/egl_external_platform.d/20_nvidia_xcb.json + egl/egl_external_platform.d/20_nvidia_xlib.json ) remove_nvidia_loader_json () { From ffa33f600b834fe21fd6c9ac78230a70897eedb8 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Mon, 7 Sep 2026 15:24:42 +0200 Subject: [PATCH 5/7] install.sh: Never let install_symlink descend into its link name 'ln -sfv target link' treats 'link' as a directory to create the link *in* whenever it is a directory, or a symbolic link to one. install_symlink() therefore silently installs to the wrong place as soon as the link name is already occupied by a directory: $ mkdir -p a/icd.d $ ln -sfv /usr/share/mxgfx/vulkan/icd.d a/icd.d 'a/icd.d/icd.d' -> '/usr/share/mxgfx/vulkan/icd.d' That is the case for any /etc directory a tool created at runtime before mxtools started shipping it as a link, and the readlink() guard above does not catch it -- readlink() of a directory is empty, so it always differs from the wanted target. '--no-dereference' is not enough, it only covers a symbolic link to a directory, not a real one. Use '--no-target-directory', which makes both cases behave: $ ln -sfTv /usr/share/mxgfx/vulkan/icd.d a/icd.d ln: a/icd.d: cannot overwrite directory Fail the install rather than continue, as the file is registered in the bee CONTENT either way, and a wrongly placed link would be recorded as if it had been installed. Assisted-by: Claude Opus 5 --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 00b78e41..1ff39652 100755 --- a/install.sh +++ b/install.sh @@ -98,7 +98,7 @@ function install_symlink() if [ "$(readlink "$2")" != "$1" ]; then dir="$(dirname "$2")" test -d "$dir" || mkdir -p "$dir" - ln -sfv "$1" "$2" + ln -sfTv "$1" "$2" || exit 1 fi register_installed_file "$2" } From a5f42d7ce1821b30fa4b4863e78ab987240bfa34 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Mon, 7 Sep 2026 15:25:17 +0200 Subject: [PATCH 6/7] nvidiactl: Stop managing the loader JSON below /etc Writing the Vulkan, GLVND-EGL and EGL external-platform JSON links into /etc at runtime does not fit how mariux hosts are maintained: * pdist deletes them again. With --delete it collects every entry of each distributed directory (add_clean_dir()) and removes what the master does not have, so the nightly dist takes /etc/vulkan, /etc/glvnd and /etc/egl off every NVIDIA node until the next reboot. An EXCEPTS entry would have to live in /root/Distfile on the master, invisible to anyone reading mxtools. * The reverse holds too: were the master ever to have an NVIDIA GPU, its links would be pushed to every host, and there they dangle as file links -- the noisy case, as the loader open()s them and complains. * The links outlive the GPU. Every no-GPU path does call remove_nvidia_loader_json(), so a disk moved into a card-less PC cleans itself on the next boot, but not if nvidia.service is masked or dies early, and nvidia.service has no ExecStop at all. Drop it. The following commit puts the very same directories on the loader search path with constant symbolic links shipped by mxtools, which is pdist-neutral and leaves no state behind. Both mechanisms must not coexist: set_generic_mxgfx_link() called remove_nvidia_loader_json() *before* flipping /node/usr_share_mxgfx, so with the directories linked, rm -f /etc/vulkan/icd.d/nvidia_icd.json would still resolve into /usr/share/nvidia// and delete the JSON out of the driver package. Today only the read-only /usr prevents it. This reverts the nvidiactl part of commits 1b6868ec8801 ("nvidiactl: Manage Vulkan and GLVND-EGL loader JSON on GPU selection"), 94a04e194067 ("nvidiactl: Link the selected driver's Vulkan and EGL loader JSON") and d13f75bfd353 ("nvidiactl: Also link the EGL external-platform JSON"), leaving the file as it was before the series. Link: https://github.molgen.mpg.de/mariux64/mariux64-issues/issues/161 Assisted-by: Claude Opus 5 --- nvidiactl/nvidiactl | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/nvidiactl/nvidiactl b/nvidiactl/nvidiactl index 19737d2b..4d69a6df 100755 --- a/nvidiactl/nvidiactl +++ b/nvidiactl/nvidiactl @@ -1,39 +1,6 @@ #!/bin/bash -# Vulkan, GLVND-EGL and EGL external-platform loader JSON, shipped per driver -# version by 'nvidia_current' below /usr/share/nvidia/. The libraries -# it names resolve through /usr/share/mxgfx, so it must only be in place while -# an NVIDIA GPU is selected. /etc is used as it is a loader search path that -# stays writable where /usr is a read-only shared image. -NV_LOADER_JSON=( - vulkan/icd.d/nvidia_icd.json - vulkan/implicit_layer.d/nvidia_layers.json - glvnd/egl_vendor.d/10_nvidia.json - egl/egl_external_platform.d/10_nvidia_wayland.json - egl/egl_external_platform.d/15_nvidia_gbm.json - egl/egl_external_platform.d/20_nvidia_xcb.json - egl/egl_external_platform.d/20_nvidia_xlib.json -) - -remove_nvidia_loader_json () { - for i in ${NV_LOADER_JSON[@]} ; do - rm -f /etc/${i} - done -} - -# Drivers packaged before 'nvidia_current' shipped the JSON get nothing rather -# than a dangling link. -link_nvidia_loader_json () { - remove_nvidia_loader_json - for i in ${NV_LOADER_JSON[@]} ; do - test -e /usr/share/mxgfx/${i} || continue - mkdir -p /etc/$(dirname ${i}) - ln -s /usr/share/mxgfx/${i} /etc/${i} - done -} - set_generic_mxgfx_link () { - remove_nvidia_loader_json rm -f /node/usr_share_mxgfx ln -sf /usr/share/mxgfx-generic /node/usr_share_mxgfx } @@ -94,8 +61,6 @@ nvver=$(readlink ${nvlink}) rm -f /node/usr_share_mxgfx ln -sf /usr/share/nvidia/${nvver} /node/usr_share_mxgfx -link_nvidia_loader_json - test -e /lib/modules/$kver/kernel/drivers/gpu/drm/drm.ko && modprobe drm test -e /lib/modules/$kver/kernel/drivers/gpu/drm/drm_kms_helper.ko && modprobe drm_kms_helper test -e /lib/modules/$kver/kernel/drivers/gpu/drm/drm_ttm_helper.ko && modprobe drm_ttm_helper From b4856987186eef27a2cba1da8359a01c921ad168 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Mon, 7 Sep 2026 15:27:04 +0200 Subject: [PATCH 7/7] etc: Link the loader JSON directories to the selected graphics driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit a5f42d7cbd2b ("nvidiactl: Stop managing the loader JSON below /etc") took the runtime linking out. Put the same directories on the loader search path statically instead, pointing at the mxgfx tree that nvidiactl already switches: /etc/vulkan/icd.d -> /usr/share/mxgfx/vulkan/icd.d /etc/vulkan/implicit_layer.d -> /usr/share/mxgfx/vulkan/implicit_layer.d /etc/glvnd/egl_vendor.d -> /usr/share/mxgfx/glvnd/egl_vendor.d /etc/egl/egl_external_platform.d -> /usr/share/mxgfx/egl/egl_external_platform.d /node/usr_share_mxgfx thus stays the single switch: it points to /usr/share/nvidia/, where 'nvidia_current' ships the JSON since bee-files PR 3429, and the loaders see exactly the files of the driver selected for the booted kernel. On generic and nouveau nodes it points to mxgfx-generic, which has no such directories, and the links do not resolve. Being constant and installed by mxtools, they are on the master as well and pdist distributes them like any other file -- no EXCEPTS entry, no drift, no state that can outlive the GPU. The paths are compiled into the loaders and /etc comes first, so nothing that lives below /usr/share is displaced: $ strings /usr/lib/libEGL.so.1 | grep vendor.d /etc/glvnd/egl_vendor.d:/usr/share/glvnd/egl_vendor.d $ strings /usr/share/nvidia/580.178.04/lib/libEGL_nvidia.so.580.178.04 | grep external_platform.d /etc/egl/egl_external_platform.d:/usr/share/egl/egl_external_platform.d A link that does not resolve is the quiet case: opendir() returns the very ENOENT that today's missing directory returns, and the remaining directory is scanned as before. On a generic node, with the link installed to a DESTDIR: $ strace -e trace=openat eglinfo -B 2>&1 | grep -E 'egl_vendor|_mesa.json' openat(AT_FDCWD, "/etc/glvnd/egl_vendor.d", ...|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/glvnd/egl_vendor.d", ...|O_DIRECTORY) = 3 openat(AT_FDCWD, "/usr/share/glvnd/egl_vendor.d/50_mesa.json", O_RDONLY) = 3 $ __EGL_VENDOR_LIBRARY_DIRS=$DESTDIR/etc/glvnd/egl_vendor.d:/usr/share/glvnd/egl_vendor.d \ strace -e trace=openat eglinfo -B 2>&1 | grep -E 'egl_vendor|_mesa.json' openat(AT_FDCWD, "…/destdir/etc/glvnd/egl_vendor.d", ...|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/glvnd/egl_vendor.d", ...|O_DIRECTORY) = 3 openat(AT_FDCWD, "/usr/share/glvnd/egl_vendor.d/50_mesa.json", O_RDONLY) = 3 The leaf directories are linked rather than /etc/{vulkan,glvnd,egl}, so /etc/vulkan stays a real directory and a loader settings file below /etc/vulkan/settings.d remains possible -- /etc is the only loader search path that is writable where /usr is a read-only shared image. Nodes on which the previous, runtime variant already ran carry /etc/vulkan/icd.d and friends as real directories. install_symlink() now refuses those loudly instead of installing into them, see commit ffa33f6d76b6 ("install.sh: Never let install_symlink descend into its link name"); remove them once by hand. pdist heals them on its own, it moves a directory aside where the master has a symbolic link. Test results Firefox 155.0.1: 1. about:support shows: > WebGL 1 Driver Renderer NVIDIA Corporation -- NVIDIA GeForce RTX 2080/PCIe/SSE2 > WebGL 1 Driver Version 3.2.0 NVIDIA 580.178.04 2. Frames per second for 1024 x 1024: 5000: 57 to 52 20000: 48 to 50 25000: 41 30000: 35 Link: https://github.molgen.mpg.de/mariux64/bee-files/pull/3429 Resolves: https://github.molgen.mpg.de/mariux64/mariux64-issues/issues/161 Assisted-by: Claude Opus 5 --- etc/egl/egl_external_platform.d | 1 + etc/glvnd/egl_vendor.d | 1 + etc/vulkan/icd.d | 1 + etc/vulkan/implicit_layer.d | 1 + 4 files changed, 4 insertions(+) create mode 120000 etc/egl/egl_external_platform.d create mode 120000 etc/glvnd/egl_vendor.d create mode 120000 etc/vulkan/icd.d create mode 120000 etc/vulkan/implicit_layer.d diff --git a/etc/egl/egl_external_platform.d b/etc/egl/egl_external_platform.d new file mode 120000 index 00000000..f6f10858 --- /dev/null +++ b/etc/egl/egl_external_platform.d @@ -0,0 +1 @@ +/usr/share/mxgfx/egl/egl_external_platform.d \ No newline at end of file diff --git a/etc/glvnd/egl_vendor.d b/etc/glvnd/egl_vendor.d new file mode 120000 index 00000000..b52d37ce --- /dev/null +++ b/etc/glvnd/egl_vendor.d @@ -0,0 +1 @@ +/usr/share/mxgfx/glvnd/egl_vendor.d \ No newline at end of file diff --git a/etc/vulkan/icd.d b/etc/vulkan/icd.d new file mode 120000 index 00000000..382dbd95 --- /dev/null +++ b/etc/vulkan/icd.d @@ -0,0 +1 @@ +/usr/share/mxgfx/vulkan/icd.d \ No newline at end of file diff --git a/etc/vulkan/implicit_layer.d b/etc/vulkan/implicit_layer.d new file mode 120000 index 00000000..47458036 --- /dev/null +++ b/etc/vulkan/implicit_layer.d @@ -0,0 +1 @@ +/usr/share/mxgfx/vulkan/implicit_layer.d \ No newline at end of file