mirror of
https://github.com/elwrcl/intel-hard-graphics.git
synced 2026-10-31 10:58:03 +03:00
201 lines
6.0 KiB
Nix
201 lines
6.0 KiB
Nix
{
|
||
description = "intel-hard-graphics / clvk development";
|
||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||
|
||
outputs =
|
||
{ self, nixpkgs }:
|
||
let
|
||
system = "x86_64-linux";
|
||
pkgs = import nixpkgs { inherit system; };
|
||
|
||
# HD 4000 (Gen7) PCI ID: 8086:0166
|
||
pciId = "8086:0166";
|
||
defaultClvkBuildDir = "/home/elars/ProjectsHDD/Drivers/clvk/build";
|
||
|
||
commonBuildInputs = with pkgs; [
|
||
llvmPackages_21.clang-unwrapped
|
||
llvmPackages_21.llvm.dev
|
||
llvmPackages_21.libclang
|
||
llvmPackages_21.bintools
|
||
python3Packages.packaging
|
||
python3Packages.pyyaml
|
||
python3Packages.mako
|
||
python3
|
||
cargo
|
||
meson
|
||
ninja
|
||
pkg-config
|
||
spirv-llvm-translator
|
||
spirv-tools
|
||
rust-bindgen
|
||
rustc
|
||
vkmark
|
||
vulkan-headers
|
||
vulkan-loader
|
||
vulkan-tools
|
||
shaderc
|
||
libpciaccess
|
||
opencl-headers
|
||
libclc
|
||
bison
|
||
flex
|
||
libdrm
|
||
libelf
|
||
expat
|
||
zlib
|
||
zstd
|
||
libx11
|
||
ocl-icd
|
||
libxcb
|
||
cmake
|
||
libxext
|
||
libxfixes
|
||
libxrandr
|
||
libxshmfence
|
||
wayland
|
||
wayland-protocols
|
||
wayland-scanner
|
||
xorgproto
|
||
xorg.libXxf86vm
|
||
xorg.xcbutilkeysyms
|
||
(python3.withPackages (
|
||
ps: with ps; [
|
||
pyopencl
|
||
opencv4
|
||
numpy
|
||
]
|
||
))
|
||
clinfo
|
||
strace
|
||
clpeak
|
||
pocl
|
||
gdb
|
||
];
|
||
|
||
commonShellVars = ''
|
||
export LIBRARY_PATH=${pkgs.llvmPackages_21.clang-unwrapped.lib}/lib:$LIBRARY_PATH
|
||
export LIBCLANG_PATH=${pkgs.llvmPackages_21.libclang.lib}/lib
|
||
export BINDGEN_EXTRA_CLANG_ARGS="-I${pkgs.llvmPackages_21.clang-unwrapped}/lib/clang/21/include"
|
||
export C_INCLUDE_PATH=${pkgs.opencl-headers}/include:$C_INCLUDE_PATH
|
||
export LIBRARY_PATH=${pkgs.ocl-icd}/lib:$LIBRARY_PATH
|
||
export LD_LIBRARY_PATH="${pkgs.vulkan-loader}/lib:$LD_LIBRARY_PATH"
|
||
'';
|
||
|
||
# 32-bit (i686) build için: L4D2 gibi 32-bit oyunlarla test amaçlı.
|
||
# clvk/rusticl/OpenCL burada yok — sadece hasvk (vulkan_hasvk) + crocus
|
||
# için gereken Vulkan/GL/WSI kütüphaneleri, i686 varyantlarıyla.
|
||
pkgs32 = pkgs.pkgsi686Linux;
|
||
|
||
i686BuildInputs = with pkgs32; [
|
||
libdrm
|
||
libelf
|
||
libpciaccess
|
||
expat
|
||
zlib
|
||
zstd
|
||
libx11
|
||
libxcb
|
||
libxext
|
||
libxfixes
|
||
libxrandr
|
||
libxshmfence
|
||
wayland
|
||
wayland-protocols
|
||
xorgproto
|
||
xorg.libXxf86vm
|
||
xorg.xcbutilkeysyms
|
||
vulkan-headers
|
||
vulkan-loader
|
||
llvmPackages_21.llvm.dev
|
||
llvmPackages_21.clang-unwrapped
|
||
llvmPackages_21.libclang
|
||
spirv-llvm-translator
|
||
spirv-tools
|
||
libclc
|
||
# crocus + hasvk (with_driver_using_cl) libclc'ye hard-dependency,
|
||
# rusticl/opencl kapalı olsa bile gerekiyor
|
||
];
|
||
|
||
# Build araçları (meson/ninja/python/bison/flex/pkg-config vs.) i686'da
|
||
# da bulunur ama host mimarisinde çalıştırılmaları yeterli; yine de
|
||
# pkgsi686Linux'tan almak pkg-config'in .pc arama yollarını tutarlı
|
||
# tutar. cmake/rust burada gerekmiyor (clvk 32-bit hedefi değil).
|
||
i686NativeBuildInputs = with pkgs32; [
|
||
meson
|
||
ninja
|
||
pkg-config
|
||
python3
|
||
python3Packages.packaging
|
||
python3Packages.pyyaml
|
||
python3Packages.mako
|
||
bison
|
||
flex
|
||
wayland-scanner
|
||
];
|
||
in
|
||
{
|
||
devShells.${system} = {
|
||
# nix develop = intel-hard-graphics shell
|
||
default = pkgs.mkShell {
|
||
buildInputs = commonBuildInputs;
|
||
shellHook = ''
|
||
${commonShellVars}
|
||
export LD_LIBRARY_PATH=$PWD/build/src/gallium/targets/rusticl:$LD_LIBRARY_PATH
|
||
export RUSTICL_ENABLE=crocus
|
||
|
||
mkdir -p $PWD/.icd-vendors
|
||
ln -sf $PWD/build/src/gallium/targets/rusticl/rusticl.icd $PWD/.icd-vendors/rusticl.icd
|
||
ln -sf ${pkgs.pocl}/etc/OpenCL/vendors/pocl.icd $PWD/.icd-vendors/pocl.icd
|
||
export OCL_ICD_VENDORS=$PWD/.icd-vendors
|
||
|
||
echo "=== intel-hard-graphics ==="
|
||
echo "OCL_ICD_VENDORS=$OCL_ICD_VENDORS"
|
||
echo "RUSTICL_ENABLE=$RUSTICL_ENABLE"
|
||
echo ""
|
||
'';
|
||
};
|
||
# nix develop .#clvk = clvk shell
|
||
clvk = pkgs.mkShell {
|
||
buildInputs = commonBuildInputs;
|
||
shellHook = ''
|
||
${commonShellVars}
|
||
|
||
CLVK_BUILD_DIR="''${CLVK_BUILD_DIR:-${defaultClvkBuildDir}}"
|
||
|
||
if [ ! -d "$CLVK_BUILD_DIR" ]; then
|
||
echo "UYARI: clvk build dizini bulunamadi: $CLVK_BUILD_DIR"
|
||
echo "CLVK_BUILD_DIR ortam degiskeniyle dogru yolu ver, ornek:"
|
||
echo " CLVK_BUILD_DIR=/gercek/yol nix develop .#clvk"
|
||
else
|
||
export LD_LIBRARY_PATH="$CLVK_BUILD_DIR:$LD_LIBRARY_PATH"
|
||
fi
|
||
|
||
export MESA_VK_DEVICE_SELECT="${pciId}"
|
||
|
||
echo "=== clvk ==="
|
||
echo "CLVK_BUILD_DIR=$CLVK_BUILD_DIR"
|
||
echo "MESA_VK_DEVICE_SELECT=$MESA_VK_DEVICE_SELECT"
|
||
echo ""
|
||
'';
|
||
};
|
||
# nix develop .#i686 = 32-bit hasvk/crocus build shell (L4D2 testi için)
|
||
i686 = pkgs32.mkShell {
|
||
buildInputs = i686BuildInputs;
|
||
nativeBuildInputs = i686NativeBuildInputs;
|
||
shellHook = ''
|
||
export MESA_VK_DEVICE_SELECT="${pciId}"
|
||
|
||
echo "=== intel-hard-graphics (i686 / 32-bit) ==="
|
||
echo "CC=$CC"
|
||
echo "meson setup build32 --buildtype=debugoptimized \\"
|
||
echo " -Dgallium-drivers=crocus -Dvulkan-drivers=intel_hasvk \\"
|
||
echo " -Dplatforms=x11 -Degl=disabled -Dglx=disabled -Dgbm=disabled \\"
|
||
echo " -Dopengl=false -Dgles1=disabled -Dgles2=disabled \\"
|
||
echo " -Dgallium-rusticl=false -Dmicrosoft-clc=disabled -Dllvm=enabled"
|
||
echo ""
|
||
'';
|
||
};
|
||
};
|
||
};
|
||
}
|