first commit

This commit is contained in:
elwrcl committed 2026-08-23 04:59:41 +03:00
commit 0bbe6b34e6
54 files changed
+156785

No files matched your search

+174
View File
@@ -0,0 +1,174 @@
{
description = "gen7-lab — Ivy Bridge (HD 4000) driver test lab";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs =
{ self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
pciId = "8086:0166";
packages = with pkgs; [
# CL
clinfo
clpeak
ocl-icd
opencl-headers
pocl
# VK
vulkan-tools
vulkan-headers
vulkan-loader
vulkan-validation-layers
shaderc
glslang
spirv-tools
# build
gcc
pkg-config
cmake
(python3.withPackages (
ps: with ps; [
pyopencl
numpy
opencv4
]
))
# media
ffmpeg
mpv
# debug
gdb
strace
jq
patchelf
binutils
libdrm
];
runtimeLibs = with pkgs; [
libxshmfence
xorg.xcbutilkeysyms
llvmPackages_21.llvm.lib
llvmPackages_21.libclang.lib
spirv-llvm-translator
vulkan-loader
libdrm
expat
zlib
zstd
elfutils
];
paths = ''
export LAB_ROOT="''${LAB_ROOT:-$PWD}"
if [ ! -f "$LAB_ROOT/ivb-test/runner.py" ]; then
echo "warning: LAB_ROOT=$LAB_ROOT does not look like the gen7-lab checkout"
fi
export DRIVERS_ROOT="''${DRIVERS_ROOT:-$(dirname "$LAB_ROOT")}"
export MESA_SRC="''${MESA_SRC:-$DRIVERS_ROOT/intel-hard-graphics}"
export MESA_BUILD="''${MESA_BUILD:-$MESA_SRC/build}"
export CLVK_SRC="''${CLVK_SRC:-$DRIVERS_ROOT/clvk}"
export CLVK_BUILD="''${CLVK_BUILD:-$CLVK_SRC/build}"
export CTS_DIR="''${CTS_DIR:-$MESA_SRC/VK-GL-CTS/build-cts/external/vulkancts/modules/vulkan}"
export CTS_MUSTPASS="''${CTS_MUSTPASS:-$MESA_SRC/VK-GL-CTS/external/vulkancts/mustpass/main/vk-default}"
export ICD_VENDORS="$LAB_ROOT/.icd-vendors"
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath runtimeLibs}:''${LD_LIBRARY_PATH:-}"
'';
vulkanEnv = ''
export HASVK_ICD="$MESA_BUILD/src/intel/vulkan_hasvk/intel_hasvk13_devenv_icd.x86_64.json"
if [ -f "$HASVK_ICD" ]; then
export VK_DRIVER_FILES="$HASVK_ICD"
export VK_ICD_FILENAMES="$HASVK_ICD"
else
echo "warning: hasvk ICD not found: $HASVK_ICD"
unset HASVK_ICD
fi
export MESA_VK_DEVICE_SELECT="${pciId}"
'';
openclEnv = ''
mkdir -p "$ICD_VENDORS/lib"
ln -sf ${pkgs.pocl}/etc/OpenCL/vendors/pocl.icd "$ICD_VENDORS/pocl.icd"
if [ -f "$MESA_BUILD/src/gallium/targets/rusticl/rusticl.icd" ]; then
ln -sf "$MESA_BUILD/src/gallium/targets/rusticl/rusticl.icd" "$ICD_VENDORS/rusticl.icd"
export LD_LIBRARY_PATH="$MESA_BUILD/src/gallium/targets/rusticl:''${LD_LIBRARY_PATH:-}"
else
rm -f "$ICD_VENDORS/rusticl.icd"
echo "warning: rusticl.icd not found under $MESA_BUILD"
fi
if [ -f "$CLVK_BUILD/libOpenCL.so.1" ]; then
_clvk_lib="$ICD_VENDORS/lib/libclvk.so.1"
if [ "$CLVK_BUILD/libOpenCL.so.1" -nt "$_clvk_lib" ]; then
cp -L "$CLVK_BUILD/libOpenCL.so.1" "$_clvk_lib.tmp"
chmod u+w "$_clvk_lib.tmp"
patchelf --set-soname libclvk.so.1 "$_clvk_lib.tmp"
mv "$_clvk_lib.tmp" "$_clvk_lib"
fi
echo "$_clvk_lib" > "$ICD_VENDORS/clvk.icd"
else
rm -f "$ICD_VENDORS/clvk.icd"
echo "warning: clvk libOpenCL.so.1 not found under $CLVK_BUILD"
fi
export OCL_ICD_VENDORS="$ICD_VENDORS"
export OCL_ICD_ASSUME_ICD_EXTENSION=1
export RUSTICL_ENABLE=crocus
'';
runner = ''
ivb() { python3 "$LAB_ROOT/ivb-test/runner.py" "$@"; }
export -f ivb
'';
banner = name: ocl: ''
echo "=== ${name} ==="
printf '%-18s %s\n' \
"MESA_BUILD" "$MESA_BUILD" \
"CLVK_BUILD" "$CLVK_BUILD" \
"CTS_DIR" "$CTS_DIR" \
"VK_DRIVER_FILES" "''${VK_DRIVER_FILES:-(none)}" \
"OpenCL" "${ocl}"
echo
echo "ivb list | ivb run | ivb doctor"
echo
'';
in
{
devShells.${system} = {
default = pkgs.mkShell {
inherit packages;
shellHook = ''
${paths}
${vulkanEnv}
${openclEnv}
${runner}
${banner "gen7-lab" "$(ls \"$ICD_VENDORS\"/*.icd 2>/dev/null | xargs -rn1 basename | sed 's/\\.icd//' | tr '\\n' ' ')"}
'';
};
clvk = pkgs.mkShell {
inherit packages;
shellHook = ''
${paths}
${vulkanEnv}
${runner}
export LD_LIBRARY_PATH="$CLVK_BUILD:''${LD_LIBRARY_PATH:-}"
export CLVK_MAX_COMPUTE_UNITS="''${CLVK_MAX_COMPUTE_UNITS:-16}"
unset OCL_ICD_VENDORS
${banner "gen7-lab (clvk only)" "clvk (libOpenCL.so.1 shadows the loader)"}
'';
};
};
};
}