mirror of
https://github.com/elwrcl/intel-hard-lab.git
synced 2026-10-31 15:48:02 +03:00
first commit
This commit is contained in:
54 files changed
+156785
No files matched your search
@@ -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)"}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user