mesa: add llvmpipeHook for software rendering setup

This commit is contained in:
K900 2024-06-15 09:22:51 +03:00
parent dda100f27b
commit b0a82fe902
6 changed files with 33 additions and 9 deletions

View File

@ -341,10 +341,10 @@ stdenv.mkDerivation (finalAttrs: {
};
tests = {
render = runCommand "${finalAttrs.pname}-test" { } ''
render = runCommand "${finalAttrs.pname}-test" {
nativeBuildInputs = [ mesa.llvmpipeHook ];
} ''
set -euo pipefail
export LIBGL_DRIVERS_PATH=${mesa.drivers}/lib/dri
export __EGL_VENDOR_LIBRARY_FILENAMES=${mesa.drivers}/share/glvnd/egl_vendor.d/50_mesa.json
cat <<'PYTHON' > scene-config.py
import bpy
bpy.context.scene.eevee.taa_render_samples = 32

View File

@ -152,10 +152,11 @@ clangStdenv.mkDerivation rec {
doCheck = true;
nativeCheckInputs = [
mesa.llvmpipeHook
];
checkPhase = ''
# for running mesa llvmpipe
export LIBGL_DRIVERS_PATH=${mesa.drivers}/lib/dri
export __EGL_VENDOR_LIBRARY_FILENAMES=${mesa.drivers}/share/glvnd/egl_vendor.d/50_mesa.json
# some fontconfig issues cause pdf output to have wrong font
ctest -j$NIX_BUILD_CORES -E pdfexporttest.\*
'';

View File

@ -53,4 +53,7 @@ in stdenv.mkDerivation {
(lib.mesonEnable "glvnd" false)
(lib.mesonEnable "shared-glapi" true)
];
# Don't need this on Darwin.
passthru.llvmpipeHook = null;
}

View File

@ -92,6 +92,7 @@
"intel-nullhw"
]
, mesa
, makeSetupHook
}:
# When updating this package, please verify at least these build (assuming x86_64-linux):
@ -394,5 +395,10 @@ in stdenv.mkDerivation {
'';
disallowedRequisites = [ llvmPackages.llvm mesa.drivers ];
};
llvmpipeHook = makeSetupHook {
name = "llvmpipe-hook";
substitutions.drivers = mesa.drivers;
} ./llvmpipe-hook.sh;
};
}

View File

@ -0,0 +1,14 @@
# shellcheck shell=bash
# https://docs.mesa3d.org/envvars.html
export LIBGL_ALWAYS_SOFTWARE=true
export LIBGL_DRIVERS_PATH=@drivers@/lib/dri
# https://github.com/NVIDIA/libglvnd/blob/master/src/EGL/icd_enumeration.md
export __EGL_VENDOR_LIBRARY_FILENAMES=@drivers@/share/glvnd/egl_vendor.d/50_mesa.json
# https://github.com/KhronosGroup/Vulkan-Loader/blob/main/docs/LoaderInterfaceArchitecture.md
# glob because the filenames contain an architecture suffix
# echo is needed to force-expand the glob
VK_DRIVER_FILES="$(echo @drivers@/share/vulkan/icd.d/lvp_icd.*.json)"
export VK_DRIVER_FILES

View File

@ -106,9 +106,9 @@ stdenv.mkDerivation (finalAttrs: {
'';
passthru.updateScript = ./update.sh;
passthru.tests.lavapipe = runCommand "vulkan-cts-tests-lavapipe" { nativeBuildInputs = [ finalAttrs.finalPackage ]; } ''
# Expand the wildcard to pick the existing architecture
export VK_ICD_FILENAMES=$(echo ${mesa.drivers}/share/vulkan/icd.d/lvp_icd.*.json)
passthru.tests.lavapipe = runCommand "vulkan-cts-tests-lavapipe" {
nativeBuildInputs = [ finalAttrs.finalPackage mesa.llvmpipeHook ];
} ''
deqp-vk -n dEQP-VK.api.smoke.triangle
touch $out
'';