Vulkan-SDK-1.4.321.0

Introduksjon til Vulkan-SDK

Denne siden dekker installasjonen av Vulkan deklarasjonene og lasteren, SPIR-V deklarasjonene og verktøyene, og glslang kompilatoren.

Vulkan er et grafisk API som gir mye kontroll over hvordan hvert trinn håndteres i grafikkprosessen. Det brukes av Steams Proton og DXVK-2.7. OpenGL er på et mye høyere nivå og fører ofte til dårligere ytelse. Det er imidlertid opp til utvikleren å implementere begge deler. Dette SDK-et tilbyr ingen Vulkan drivere, bare det som trengs for Vulkan applikasjoner og drivere.

SPIR-V verktøyene behandler SPIR-V moduler, ofte tilskrevet shader-kode/binærfiler. Khronos API-er, som OpenGL og Vulkan, bruker dem. Verktøyene gir et grunnlag andre applikasjoner kan bruke til å konvertere til og fra.

Glslang er en referansekompilator og validator for GLSL (OpenGL Shader Language). Det er en av kompilatorene som kan konvertere SPIR-V, for eksempel GLSL til SPIR-V. I noen tilfeller kan pakker kompilere shadere og gjøre dem om til headerfiler som inkluderes i C/C++ fil(er). I OpenGL trenger ikke denne prosessen glslang i det hele tatt, ettersom OpenGL funksjonsmappen kan kompilere shadere fra en streng og avgrenset for utførelse på hver ramme. Med Vulkan er en separat shaderkompilator nødvendig for å legge til rette for shaderkompilering.

[Notat]

Notat

Dette kan ta litt tid å bygge. Gjør gjerne noe annet mens dette bygges.

Vulkan-SDK Avhengigheter

Påkrevd

CMake-4.1.0 og Xorg Biblioteker

Anbefalt

BLFS ekvivalente pakker

Denne kombinerte siden installerer det som i BLFS ville vært:

BLFS ekvivalente pakker

Denne kombinerte siden installerer det som i BLFS ville vært:

Laste ned Vulkan-SDK

Først, opprett en liste over filer som skal lastes ned:

cat > vulkan-sdk-1.4.321.0-list << "EOF"
Vulkan-Headers/archive/vulkan-sdk-1.4.321.0/Vulkan-Headers-vulkan-sdk-1.4.321.0.tar.gz
Vulkan-Loader/archive/vulkan-sdk-1.4.321.0/Vulkan-Loader-vulkan-sdk-1.4.321.0.tar.gz
SPIRV-Headers/archive/vulkan-sdk-1.4.321.0/SPIRV-Headers-vulkan-sdk-1.4.321.0.tar.gz
SPIRV-Tools/archive/vulkan-sdk-1.4.321.0/SPIRV-Tools-vulkan-sdk-1.4.321.0.tar.gz
glslang/archive/vulkan-sdk-1.4.321.0/glslang-vulkan-sdk-1.4.321.0.tar.gz
EOF

For å laste ned de nødvendige filene ved hjelp av Wget-1.25.0, bruk følgende kommandoer:

mkdir vulkan-sdk-1.4.321.0 &&
cd    vulkan-sdk-1.4.321.0 &&
grep -v '^#' ../vulkan-sdk-1.4.321.0-list | wget -i- -c \
    -B https://github.com/KhronosGroup/

Installasjon av Vulkan-SDK

[Notat]

Notat

Når du installerer flere pakker i et skript, må installasjonen gjøres som root bruker. Det finnes tre generelle alternativer som kan brukes til å gjøre dette:

  1. Kjør hele skriptet som root bruker (ikke anbefalt).

  2. Bruk sudo kommandoen fra sudo pakken.

  3. Use su -c "command arguments" ((anførselstegn kreves) som vil be om root passordet for hver iterasjon av løkken.

En måte å håndtere denne situasjonen på er å lage en kort bash funksjon som automatisk velger riktig metode. Når kommandoen er satt i miljøet, trenger den ikke å settes på nytt.

as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root

Først start et underskall som avsluttes ved feil:

bash -e

Installer alle pakkene ved å kjøre følgende kommandoer:

for package in {Vulkan-{Headers,Loader},SPIRV-{Headers,Tools},glslang}
do
  longpackage=$package-vulkan-sdk-1.4.321.0.tar.?z*
  packagedir=${longpackage%.tar.?z*}
  tar -xf $longpackage
  pushd $packagedir
    mkdir build
    cd    build
    case $package in
      SPIRV-Tools )
        cmake -D CMAKE_INSTALL_PREFIX=/usr     \
              -D CMAKE_BUILD_TYPE=Release      \
              -D SPIRV_WERROR=OFF              \
              -D BUILD_SHARED_LIBS=ON          \
              -D SPIRV_TOOLS_BUILD_STATIC=OFF  \
              -D SPIRV-Headers_SOURCE_DIR=/usr \
              -G Ninja ..
      ;;
      glslang )
        cmake -D CMAKE_INSTALL_PREFIX=/usr     \
              -D CMAKE_BUILD_TYPE=Release      \
              -D ALLOW_EXTERNAL_SPIRV_TOOLS=ON \
              -D BUILD_SHARED_LIBS=ON          \
              -D GLSLANG_TESTS=OFF             \
              -G Ninja ..
      ;;
      * )
        cmake -D CMAKE_INSTALL_PREFIX=/usr     \
              -D CMAKE_BUILD_TYPE=Release      \
              -D CMAKE_SKIP_INSTALL_RPATH=ON   \
              -G Ninja ..
      ;;
    esac
    ninja
    as_root ninja install
  popd
  rm -rf $packagedir
done

For multilib:

for package in {Vulkan-Loader,SPIRV-Tools,glslang}
do
  longpackage=$package-vulkan-sdk-1.4.321.0.tar.?z*
  packagedir=${longpackage%.tar.?z*}
  tar -xf $longpackage
  pushd $packagedir
    mkdir build
    cd    build
    case $package in
      SPIRV-Tools )
        CC="gcc -m32" CXX="g++ -m32"           \
        PKG_CONFIG_PATH=/usr/lib32/pkgconfig   \
        cmake -D CMAKE_INSTALL_PREFIX=/usr     \
              -D CMAKE_INSTALL_LIBDIR=lib32    \
              -D CMAKE_BUILD_TYPE=Release      \
              -D SPIRV_WERROR=OFF              \
              -D BUILD_SHARED_LIBS=ON          \
              -D SPIRV_TOOLS_BUILD_STATIC=OFF  \
              -D SPIRV-Headers_SOURCE_DIR=/usr \
              -G Ninja ..
      ;;
      glslang )
        CC="gcc -m32" CXX="g++ -m32"           \
        PKG_CONFIG_PATH=/usr/lib32/pkgconfig   \
        cmake -D CMAKE_INSTALL_PREFIX=/usr     \
              -D CMAKE_INSTALL_LIBDIR=lib32    \
              -D CMAKE_BUILD_TYPE=Release      \
              -D ALLOW_EXTERNAL_SPIRV_TOOLS=ON \
              -D BUILD_SHARED_LIBS=ON          \
              -D GLSLANG_TESTS=OFF             \
              -G Ninja ..
      ;;
      * )
        ASFLAGS+=" --32" CFLAGS+=" -m32"       \
        CXXFLAGS+=" -m32"                      \
        PKG_CONFIG_PATH=/usr/lib32/pkgconfig   \
        cmake -D CMAKE_INSTALL_PREFIX=/usr     \
              -D CMAKE_INSTALL_LIBDIR=lib32    \
              -D CMAKE_BUILD_TYPE=Release      \
              -D CMAKE_SKIP_INSTALL_RPATH=ON   \
              -G Ninja ..
      ;;
    esac
    ninja
    DESTDIR=$PWD/DESTDIR ninja install
    as_root cp -Rv DESTDIR/usr/lib32/* /usr/lib32
    rm -rf DESTDIR
    as_root /sbin/ldconfig
  popd
  rm -rf $packagedir
done

Til slutt, avslutt skallet som ble startet tidligere:

exit

Innhold

Installerte Programmer: glslang, glslang-validator (symbollenke til glslang), spirv-as, spirv-cfg, spirv-dis, spirv-lesspipe.sh, spirv-link, spirv-lint, spirv-objdump, spirv-opt, spirv-reduce, spirv-remap, og spirv-val
Installerte Biblioteker: libglslang, libglslang-default-resource-limits, libSPIRV, libSPIRV-Tools-diff, libSPIRV-Tools-link, libSPIRV-Tools-lint, libSPIRV-Tools-opt, libSPIRV-Tools-reduce, libSPIRV-Tools-shared, libSPIRV-Tools, libSPVRemapper, og libvulkan
Installerte Mapper: /usr/include/glslang, /usr/include/spirv, /usr/include/spirv-tools, /usr/include/vk_video, /usr/include/vulkan, /usr/lib/cmake/glslang, /usr/lib/cmake/SPIRV-Tools, /usr/lib/cmake/VulkanLoader, /usr/share/cmake/VulkanHeaders, /usr/share/cmake/SPIRV-Headers, og /usr/share/vulkan

Korte Beskrivelser

glslang

er en referansekompilator for GLSL og SPIR-V shader

libglslang

inneholder backend funksjoner for glslang grensesnittet

libSPIRV

behandler og genererer SPIR-V binærfiler

libSPIRV-Tools

inneholder funksjoner for behandling av SPIR-V moduler

libvulkan

tilbyr Vulkan API og kjernestøtte for grafikkdrivere