Google have created software based Vulkan implementation sometime ago as not a official project.
And i have decided to check how it was in compare to other soft rendering implementations. And here are some results with yquake:
- ref_gl1: 632 frames, 24.4 seconds: 25.9 fps (mesa 19.3.2 llvmpipe LLVM 9.0.1, 128 bits)
- ref_gl3: 632 frames, 28.9 seconds: 21.9 fps (mesa 19.3.2 llvmpipe LLVM 9.0.1, 128 bits)
- ref_soft: 632 frames, 10.9 seconds: 57.8 fps (mesa 19.3.2)
- ref_vk: 632 frames, 98.9 seconds: 6.4 fps (SwiftShader Device LLVM 7.0.1)
Used steps for build SwiftShader are:
- git clone git@github.com:google/swiftshader.git
- cd swiftshader/build
- CC="ccache gcc-8" CXX="ccache g++-8" cmake ..
- CC="ccache gcc-8" CXX="ccache g++-8" make -j 2 vk_swiftshader
- sudo cp libvk_swiftshader.so /usr/lib/aarch64-linux-gnu/libvulkan_swiftshader.so
- sed -i "s|./libvk_swiftshader.so|/usr/lib/aarch64-linux-gnu/libvulkan_swiftshader.so|g" Linux/vk_swiftshader_icd.json
- sudo cp Linux/vk_swiftshader_icd.json /usr/share/vulkan/icd.d/swiftshader_icd.aarch64.json
- sudo chmod 644 /usr/share/vulkan/icd.d/swiftshader_icd.aarch64.json
- sudo chown root:root /usr/share/vulkan/icd.d/swiftshader_icd.aarch64.json
- sudo chmod 644 /usr/lib/aarch64-linux-gnu/libvulkan_swiftshader.so
- sudo chown root:root /usr/lib/aarch64-linux-gnu/libvulkan_swiftshader.so
Note: Gcc 8 is preferred compiler for now as gcc-9 produced error with current version of code base.
Used steps for build yQuake2 are:
- wget -cv https://deponie.yamagi.org/quake2/idstuff/q2-314-demo-x86.exe
- unzip q2-314-demo-x86.exe
- git clone git@github.com:yquake2/yquake2.git -b ref_vk
- cd yquake2
- make
- cd ..
- cp -rv Install/Data/baseq2/pak0.pak yquake2/release/baseq2/
- cp -rv Install/Data/baseq2/players yquake2/release/baseq2