Vulkan-SDK-1.4.341.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.1. 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 funksjoner kan direkte kompilere shadere fra en streng og avgrenses for utførelse på hver ramme. Med Vulkan er en separat shaderkompilator nødvendig for å legge til rette for shaderkompilering.

Notat

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

Vulkan-SDK Avhengigheter

Required
CMake-4.2.3 og Xorg Biblioteker

Recommended
Wayland-1.24.0 og Wayland-Protocols-1.47

BLFS ekvivalente pakker

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

I tillegg installeres Vulkan-Utility-Libraries og Vulkan-Tools for å gi mer støtte for flere pakker og flere måter å se om installasjonen er korrekt.

Laste ned Vulkan-SDK

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

cat > vulkan-sdk-1.4.341.0-list << "EOF"
Vulkan-Headers/archive/vulkan-sdk-1.4.341.0/Vulkan-Headers-vulkan-sdk-1.4.341.0.tar.gz
Vulkan-Loader/archive/vulkan-sdk-1.4.341.0/Vulkan-Loader-vulkan-sdk-1.4.341.0.tar.gz
Vulkan-Utility-Libraries/archive/vulkan-sdk-1.4.341.0/Vulkan-Utility-Libraries-vulkan-sdk-1.4.341.0.tar.gz
Vulkan-Tools/archive/vulkan-sdk-1.4.341.0/Vulkan-Tools-vulkan-sdk-1.4.341.0.tar.gz
SPIRV-Headers/archive/vulkan-sdk-1.4.341.0/SPIRV-Headers-vulkan-sdk-1.4.341.0.tar.gz
SPIRV-Tools/archive/vulkan-sdk-1.4.341.0/SPIRV-Tools-vulkan-sdk-1.4.341.0.tar.gz
glslang/archive/vulkan-sdk-1.4.341.0/glslang-vulkan-sdk-1.4.341.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.341.0 &&
cd    vulkan-sdk-1.4.341.0 &&
grep -v '^#' ../vulkan-sdk-1.4.341.0-list | wget -i- -c \
    -B https://github.com/KhronosGroup/

Installasjon av Vulkan-SDK

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,Utility-Libraries,Tools},SPIRV-{Headers,Tools},glslang}
do
  longpackage=$package-vulkan-sdk-1.4.341.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,Utility-Libraries,Tools},SPIRV-Tools,glslang}
do
  longpackage=$package-vulkan-sdk-1.4.341.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
    if [ $package != "Vulkan-Tools" ]; then
      as_root cp -Rv DESTDIR/usr/lib32/* /usr/lib32
    else
      for bin in DESTDIR/usr/bin/*; do
        as_root install -vDm755 $bin /usr/bin/$(basename $bin)-m32
      done
    fi
    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, spirv-val, vkcube{,-m32}, vkcubepp{,-m32}, og vulkaninfo{,-m32}
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, libvulkan, libVulkanLayerSettings (static), og libVulkanSafeStruct (static)
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/lib/cmake/VulkanUtilityLibraries, /usr/share/cmake/SPIRV-Headers, /usr/share/cmake/VulkanHeaders, og /usr/share/vulkan

Korte Beskrivelser

glslang

er en referansekompilator for GLSL og SPIR-V shader

vkcube

er en grafisk Vulkan demo av en spinnende kube i C

vkcubepp

er en grafisk Vulkan demo av en spinnende kube i C++

vulkaninfo

gir informasjon om GPU-en, driveren, lagene og alle utvidelsene deres

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