wget -c "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-$(uname -m).tar.gz"
tar vxf "cmake-3.30.2-linux-$(uname -m).tar.gz"
# 把新版 cmake 加入 PATH
# 注意 $PWD 表示当前目录,只有当你恰好在解压了 cmake 的父文件夹时才有效。
# 如果你当前在其他目录,请把命令里的 $PWD 替换为 cmake 父文件夹的完整路径。
export PATH="$PWD/cmake-3.30.2-linux-$(uname -m)/bin:$PATH"
cmake --version
sudo apt install build-essential cmake curl git ninja-build pkg-config python3 python3-jinja2 python3-ruamel.yaml
sudo apt install libssl-dev libx11-dev libxcb1-dev x11proto-dri2-dev libxcb-dri3-dev libxcb-dri2-0-dev libxcb-present-dev libxshmfence-dev libxrandr-dev libwayland-dev
git clone --depth=1 -b vulkan-sdk-1.3.280 https://github.com/KhronosGroup/Vulkan-Headers.git
cd Vulkan-Headers
mkdir build
cd build
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/usr ..
sudo ninja install
cd ../..
git clone --depth=1 -b vulkan-sdk-1.3.280 https://github.com/KhronosGroup/Vulkan-Loader.git
cd Vulkan-Loader
mkdir build
cd build
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/usr ..
ninja
sudo ninja install
cd ../..
git clone --depth=1 -b release-1.7.2308 https://github.com/microsoft/DirectXShaderCompiler.git
cd DirectXShaderCompiler
git submodule update --init --recursive --depth=1
cmake -H. -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Release -C ./cmake/caches/PredefinedParams.cmake -DCMAKE_INSTALL_PREFIX=/usr
cd build
ninja
# 这两个文件不存在,但编译时也不会用到,所以创建空白的文件代替,防止安装出错
touch bin/llvm-as bin/llvm-dis
sudo ninja install
cd ../..
编译过程中出现以下报错是正常现象,不会影响编译:
[10:07:24][ERROR ] Failed to run "['git', 'describe']" in "/parent/work/amdvlk.kylin/DirectXShaderCompiler/external/SPIRV-Tools": fatal: 没有发现名称,无法描述任何东西。
git clone --depth=1 -b vulkan-sdk-1.3.280 https://github.com/KhronosGroup/glslang.git
cd glslang
# 这一步会通过 git 下载源代码到 External 文件夹
./update_glslang_sources.py
cmake -H. -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cd build
ninja
sudo ninja install
cd ../..
sudo wget -O /usr/local/bin/repo https://storage.googleapis.com/git-repo-downloads/repo
sudo chmod +x /usr/local/bin/repo
repo --version
把 you@example.com
改成你的邮箱,把 Your Name
改成你的用户名(随便写都行)。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
mkdir amdvlk
cd amdvlk
# 设置repo镜像源,防止连不上谷歌的服务器
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
repo init -u https://github.com/GPUOpen-Drivers/AMDVLK.git -b master --depth=1
# 这一步会从 github 下载大量代码,请保持网络连接稳定(-j 后面的 4 为并发连接数,你可以改成你想要的数值)
repo sync -j4
cd drivers
cmake -G Ninja -S xgl -B build -DCMAKE_INSTALL_PREFIX=/usr
cd build
# 请不要先运行非 sudo 的 ninja 命令,否则您会后悔。
# 因为开了全程序优化,重新链接一次动态库需要十分钟。
# 每次运行 ninja 命令都会重新链接一次动态库。
# 直接用 root 权限编译并安装可以防止链接两次。
sudo ninja install
# 使用 AMDVLK 驱动运行 vkcube
export VK_ICD_FILENAMES="/etc/vulkan/icd.d/amd_icd64.json"
export AMD_VULKAN_ICD=AMDVLK
vkcube
# 使用 MESA RADV 驱动运行 vkcube
export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/radeon_icd.$(uname -m).json"
export AMD_VULKAN_ICD=RADV
vkcube
注意:这只是一个Vulkan驱动,对 OpenGL / OpenGL ES 程序(比如glmark2
/ glmark2-es2
等)没有任何效果。
不确定,取决于 Vulkan Loader 的默认加载顺序。
如果要跑分对比 AMDVLK 和 Mesa RADV 驱动,可以使用 vkmark,以下是编译方法。
开始编译前,请先按最上面第1步的方法安装新版cmake并把它加入PATH
。
sudo apt install meson python3-pip libglm-dev libassimp-dev libxcb1-dev libxcb-icccm4-dev libwayland-dev wayland-protocols libdrm-dev libgbm-dev
# 如果你没有自己编译安装 Vulkan Headers 和 Vulkan Loader,你可能还需要安装 libvulkan-dev 这个包。
# 如果已经编译安装过了,请不要安装 libvulkan-dev 这个包,否则你编译安装的 Vulkan Headers 和 Vulkan Loader 就被覆盖了。
sudo pip3 install --upgrade meson
git clone --depth=1 https://github.com/vkmark/vkmark.git
cd vkmark
mkdir build
cd build
meson ..
ninja
# vkmark 无需安装,请直接在 build 文件夹运行
# 确保自己在 `vkmark/build` 文件夹
pwd
# 使用 AMDVLK 驱动运行 vkmark
export VK_ICD_FILENAMES="/etc/vulkan/icd.d/amd_icd64.json"
export AMD_VULKAN_ICD=AMDVLK
./src/vkmark --winsys-dir=./src --data-dir=../data
# 使用 MESA RADV 驱动运行 vkmark
export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/radeon_icd.$(uname -m).json"
export AMD_VULKAN_ICD=RADV
./src/vkmark --winsys-dir=./src --data-dir=../data