Sunday, September 5, 2021

Update SSD firmware

Samsung uses custom linux live CD for update SSD firware. That is big step to right direction if compare to previous FreeDOS boot as for me. And sometime such liveCD does not support your device(press any key when your usb hub is not supported).

But we can run update in linux directly:
  • Download firmware https://www.samsung.com/semiconductor/minisite/ssd/download/tools/
  • sudo mount -t auto -o loop Downloads/Samsung_SSD_870_QVO_SVQ02B6Q_Win.iso /mnt
  • mkdir /tmp/unpack && cd /tmp/unpack/ && zcat /mnt/initrd | cpio -i
  • init 1 
  • cd /tmp/unpack/root/fumagician/ && ./fumagician 
  • reboot

Saturday, December 5, 2020

Move linux to new disk commands

  • Move linux to new disk with rsync:
    • rsync -avxHAXW --progress  /<old disk mount point>  /<new disk mount point> --exclude=/<old disk mount point>/dev  --exclude=/<old disk mount point>/sys --exclude=/<old disk mount point>/proc --exclude=/<old disk mount point>/run
  • or with cp:
    • cp -afv /home/ /mnt/home/
  • Update /etc/fstab with new uuid by:
    • ls -l /dev/disk/by-uuid/
  • Restore grub:
    • grub-install /dev/xxx
    • update-grub2

Monday, November 2, 2020

Vulkan Lavapipe Software render

Sequence commands to compile lavapipe from mesa upstream:
  • PWD=${PWD}
  • git clone git://anongit.freedesktop.org/mesa/mesa
  • mkdir mesa-build
  • meson ../mesa --prefix=${PWD}/install
  • ninja -j 4
  • ninja install
  • cd ..
  • VK_ICD_FILENAMES=${PWD}/mesa-build/install/share/vulkan/icd.d/lvp_icd.x86_64.json vulkaninfo
Sequence commands to compile yquake for check vulkan render:
  • 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
Sequence commands to check Vulkan render:
  • cd yquake2/release
  • VK_ICD_FILENAMES=${PWD}/mesa-build/install/share/vulkan/icd.d/lvp_icd.x86_64.json ./quake2

Tuesday, March 31, 2020

Vulkan Software render (amd64+Windows)

There are small list of commands for compile Vulkan soft render library on amd64 debian, sequence is fully same as in the previous post related to check quake2 run on the arm64
  • git clone git@github.com:google/swiftshader.git
  • cd swiftshader/build
  • cmake ..
  • make -j 2 vk_swiftshader
  • sudo cp libvk_swiftshader.so /usr/lib/x86_64-linux-gnu/libvulkan_swiftshader.so
  • sed -i "s|./libvk_swiftshader.so|/usr/lib/x86_64-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.x86_64.json
  • sudo chmod 644 /usr/share/vulkan/icd.d/swiftshader_icd.x86_64.json
  • sudo chown root:root /usr/share/vulkan/icd.d/swiftshader_icd.x86_64.json
  • sudo chmod 644 /usr/lib/x86_64-linux-gnu/libvulkan_swiftshader.so
  • sudo chown root:root /usr/lib/x86_64-linux-gnu/libvulkan_swiftshader.so
And same story for Windows, It will be a little bit different story as result of different logic of package distribution. User have installed Vulkan drivers with Vulkan loader as part graphical drivers by default.

Compilation of code has required to install Vulkan SDK, CMake and Visual Studio.

And sequence of commands for build loader will be such for 64bit platform if no drivers installed with Vulkan.
  • git clone https://github.com/KhronosGroup/Vulkan-Loader.git
  • cd Vulkan-Loader/
  • cd external/
  • git clone https://github.com/google/googletest.git
  • git clone https://github.com/KhronosGroup/Vulkan-Headers.git
  • cd googletest
  • git checkout tags/release-1.8.1
  • cd ../..
  • mkdir build
  • cd build
  • cmake -A x64 --config Release ..
  • cmake --build . --config Release
  • cd ../..
  • Copy resulted library to C:\windows\System32 as vulkan-1.dll
Same commands but for 32 bit library
  • git clone https://github.com/KhronosGroup/Vulkan-Loader.git
  • cd Vulkan-Loader/
  • cd external/
  • git clone https://github.com/google/googletest.git
  • git clone https://github.com/KhronosGroup/Vulkan-Headers.git
  • cd googletest
  • git checkout tags/release-1.8.1
  • cd ../..
  • mkdir build
  • cd build
  • cmake -A win32 --config Release ..
  • cmake --build . --config Release
  • cd ../..
  • Copy resulted library to C:\windows\sysWOW64 as vulkan-1.dll
And then compile Vulkan driver for 64 platform:
  • git clone https://github.com/google/swiftshader.git
  • cd swiftshader/
  • git submodule init
  • cd third_party/
  • git clone https://github.com/google/googletest.git
  • git clone https://github.com/google/benchmark.git
  • git clone https://github.com/google/cppdap
  • git clone https://github.com/nlohmann/json.git
  • git clone https://github.com/ianlancetaylor/libbacktrace.git libbacktrace/src
  • cd ../build
  • cmake -A x64 --config Release ..
  • cmake --build . --config Release
  • cd ../..
  • Copy resulted file to preferred place, as example C:\Program Files\SwiftShaderVulkan
Same commands but for 32 bit library
  • git clone https://github.com/google/swiftshader.git
  • cd swiftshader/
  • git submodule init
  • cd third_party/
  • git clone https://github.com/google/googletest.git
  • git clone https://github.com/google/benchmark.git
  • git clone https://github.com/google/cppdap
  • git clone https://github.com/nlohmann/json.git
  • git clone https://github.com/ianlancetaylor/libbacktrace.git libbacktrace/src
  • cd ../build
  • cmake -A win32 --config Release ..
  • cmake --build . --config Release
  • cd ../..
  • Copy resulted file to preferred place, as example C:\Program Files\SwiftShaderVulkan
Also need to create ICD files like such C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader32.json with:
{
  "file_format_version": "1.0.0",
  "ICD": {
    "library_path": "C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader_32.dll",
    "api_version": "1.0.5"
  }
}
And C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader64.json with such content:
{
  "file_format_version": "1.0.0",
  "ICD": {
    "library_path": "C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader_64.dll",
    "api_version": "1.0.5"
  }
}
After that need to correctly register drivers, or,that will be less complicated, create reg file and apply such by RegEdit.
   
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\Vulkan\Drivers]
"C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader32.json"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Drivers]
"C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader64.json"=dword:00000000

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)

Monday, November 18, 2019

Run yquake on ChromeOS

Chrome OS provides an ability to run linux in a container and its little bit outdated a `stretch` debian release. Most convenient way for build is cross compile on different host in container with the debian stretch.

First of all, lets create boot strapped environment by such commands:
sudo qemu-debootstrap --arch=arm64 --keyring /usr/share/keyrings/debian-archive-keyring.gpg --variant=buildd --exclude=debfoster stretch debian-arm64 http://ftp.debian.org/debian

After that chroot to directory and install required package for build:
  • sudo cp /usr/bin/qemu-aarch64-static debian-arm64/ -v
  • cd debian-arm64/
  • sudo chroot . ./qemu-aarch64-static /bin/bash
  • apt install -y git make gcc libsdl2-dev libcurl4-gnutls-dev ccache libopenal-dev
And finally build quake:
  • cd root
  • git clone https://github.com/yquake2/yquake2.git
  • cd yquake2
  • CC="ccache gcc " make -j 6
And copy binary files from release directory to the device.