From 216dd5b740f91f4250e33256e3c11e4e342895ce Mon Sep 17 00:00:00 2001 From: Cole Mickens Date: Thu, 16 Sep 2021 05:00:41 -0700 Subject: [PATCH 1/3] nvidia: fix egl-wayland loading --- nixos/modules/hardware/video/nvidia.nix | 4 ++++ pkgs/os-specific/linux/nvidia-x11/builder.sh | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix index 8f6b5c22ea4f..917c6d3013e7 100644 --- a/nixos/modules/hardware/video/nvidia.nix +++ b/nixos/modules/hardware/video/nvidia.nix @@ -284,6 +284,10 @@ in source = "${nvidia_x11.bin}/share/nvidia/nvidia-application-profiles-rc"; }; + # 'nvidia_x11' installs it's files to /run/opengl-driver/... + environment.etc."egl/egl_external_platform.d".source = + "/run/opengl-driver/share/egl/egl_external_platform.d/"; + hardware.opengl.package = mkIf (!offloadCfg.enable) nvidia_x11.out; hardware.opengl.package32 = mkIf (!offloadCfg.enable) nvidia_x11.lib32; hardware.opengl.extraPackages = optional offloadCfg.enable nvidia_x11.out; diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh index 51bd4d725a8b..abb557a55330 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh @@ -106,8 +106,8 @@ installPhase() { sed -E "s#(libEGL_nvidia)#$i/lib/\\1#" 10_nvidia.json > 10_nvidia.json.fixed sed -E "s#(libnvidia-egl-wayland)#$i/lib/\\1#" 10_nvidia_wayland.json > 10_nvidia_wayland.json.fixed - install -Dm644 10_nvidia.json.fixed $i/share/glvnd/egl_vendor.d/nvidia.json - install -Dm644 10_nvidia_wayland.json.fixed $i/share/glvnd/egl_vendor.d/nvidia_wayland.json + install -Dm644 10_nvidia.json.fixed $i/share/glvnd/egl_vendor.d/10_nvidia.json + install -Dm644 10_nvidia_wayland.json.fixed $i/share/egl/egl_external_platform.d/10_nvidia_wayland.json fi done From 7761e2378570a2f4c9ddc0b75b6cca052667b7b5 Mon Sep 17 00:00:00 2001 From: Cole Mickens Date: Sun, 17 Oct 2021 20:55:16 -0700 Subject: [PATCH 2/3] nvidia: add wayland to nvidia-egl-wayland libpath --- pkgs/os-specific/linux/nvidia-x11/generic.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/nvidia-x11/generic.nix b/pkgs/os-specific/linux/nvidia-x11/generic.nix index 6f58e3e8f1d9..ed8c2a050955 100644 --- a/pkgs/os-specific/linux/nvidia-x11/generic.nix +++ b/pkgs/os-specific/linux/nvidia-x11/generic.nix @@ -41,7 +41,7 @@ let i686bundled = versionAtLeast version "391" && !disable32Bit; libPathFor = pkgs: pkgs.lib.makeLibraryPath [ pkgs.libdrm pkgs.xorg.libXext pkgs.xorg.libX11 - pkgs.xorg.libXv pkgs.xorg.libXrandr pkgs.xorg.libxcb pkgs.zlib pkgs.stdenv.cc.cc ]; + pkgs.xorg.libXv pkgs.xorg.libXrandr pkgs.xorg.libxcb pkgs.zlib pkgs.stdenv.cc.cc pkgs.wayland ]; self = stdenv.mkDerivation { name = "nvidia-x11-${version}${nameSuffix}"; From 59a7fb27a166717d2765411fc04c7deedfe18882 Mon Sep 17 00:00:00 2001 From: Cole Mickens Date: Sat, 16 Oct 2021 00:28:28 -0700 Subject: [PATCH 3/3] nvidia: install egl wayland gbm support --- pkgs/os-specific/linux/nvidia-x11/builder.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh index abb557a55330..d108ca0d0060 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh @@ -108,6 +108,14 @@ installPhase() { install -Dm644 10_nvidia.json.fixed $i/share/glvnd/egl_vendor.d/10_nvidia.json install -Dm644 10_nvidia_wayland.json.fixed $i/share/egl/egl_external_platform.d/10_nvidia_wayland.json + + if [[ -f "15_nvidia_gbm.json" ]]; then + sed -E "s#(libnvidia-egl-gbm)#$i/lib/\\1#" 15_nvidia_gbm.json > 15_nvidia_gbm.json.fixed + install -Dm644 15_nvidia_gbm.json.fixed $i/share/egl/egl_external_platform.d/15_nvidia_gbm.json + + mkdir -p $i/lib/gbm + ln -s $i/lib/libnvidia-allocator.so $i/lib/gbm/nvidia-drm_gbm.so + fi fi done