Friday, January 31, 2020

Vulkan Software render

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

Wednesday, January 22, 2020

yquake2 7.42 version.


New version with speedup optimization in the software render.
Timedemo values (timedemo 1;) on 1280x800@60 with maps from quake2 demo are

7.20: 632 frames, 18.7 seconds: 33.8 fps
7.21: 632 frames, 19.1 seconds: 33.1 fps
7.30: 632 frames, 17.9 seconds: 35.4 fps
7.40: 632 frames, 17.5 seconds: 36.2 fps (36.8 fps)
7.41: 632 frames, 17.3 seconds: 36.5 fps
7.42: 632 frames, 17.0 seconds: 37.2 fps

Quake II 7.41 to 7.42: 

  • The console can now be scrolled with the mouse wheel. (by maxcrofts) 
  • Fix entities on non-horizontal surfaces rendered in full black. 
  • Add an option to choose the display Quake II runs on. (by Spirrwell) 
  • Add an option to specify the display refresh rate used in fullscreen. 
  • Allow mouse 'sensitivity' to be set to non-integral values. 
  • Port cvar operations from q2pro. These allow the manipulation of cvar values, supported are: dec, inc, reset, resetall and toggle 
  • Put the client into pause mode during savegame load. This prevents the world getting forwarded about 100 frames during load, time in which the player might be hurt by monsters or the environment. 
  • New commands: 'listentities' allows listing of entities. 'teleport' teleports the player to the given coordinates. 
  • Fix loading of config files not ending in newlines. 
  • A lot of fixes for subtle, long standing AI and game play bugs. (by BjossiAlfreds) 
  • Quicksaves can now be loaded and saved throught the savegame menus. 
  • The software render now skips frames with no changes. This improves performance quite a bit, especially on slow CPUs. (by Denis Pauk)