Skip to content

Latest commit

 

History

History
146 lines (95 loc) · 4.41 KB

BUILD.md

File metadata and controls

146 lines (95 loc) · 4.41 KB

How to compile on a Raspberry Pi

Install prerequisites

sudo apt-get install cmake
sudo apt remove libvulkan1 vulkan-headers

The Vulkan-Loader version distributed with Raspbian (1.1.97-2) does not support the required performance counters.

Clone, build, and install RPi VK Driver

git clone https://github.com/Yours3lf/rpi-vk-driver.git
cd rpi-vk-driver
mkdir build && cd build
cmake ..
make
sudo make install

How to run tests on a Raspberry Pi

Prerequisites

  • Enable Full Desktop KDM using sudo raspi-config under Advanced if you haven't already
  • Reboot into CLI using sudo raspi-config

Clone, build, and run tests

git clone https://github.com/Yours3lf/rpi-vk-driver.git
cd rpi-vk-driver
mkdir build && cd build
cmake ..
make install
make test

Gotchas

  • You cannot run tests from the desktop environment as there can only be one DRM-Master. Tests can only be run after rebooting into CLI.

How to cross-compile on Linux desktop

git clone https://github.com/Yours3lf/rpi-vk-driver.git
cd rpi-vk-driver
git clone https://github.com/raspberrypi/tools.git
export PATH=`pwd`/tools/arm-bcm2708/arm-linux-gnueabihf/bin:$PATH
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=`pwd`/../gcc.toolchain.cmake -DCMAKE_STAGING_PREFIX=./out/usr/local
make install -j

How to cross-compile on Linux desktop for specific device

git clone https://github.com/Yours3lf/rpi-vk-driver.git
cd rpi-vk-driver
git clone https://github.com/raspberrypi/tools.git
export PATH=`pwd`/tools/arm-bcm2708/arm-linux-gnueabihf/bin:$PATH
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=`pwd`/../gcc.toolchain.cmake -DCMAKE_STAGING_PREFIX=./out/usr/local -DRPI_ARCH=armv8-a
make -j
make package
cmake .. -DRPI_ARCH=armv7-a
make -j
make package
cmake .. -DRPI_ARCH=armv6z
make -j
make package

How to generate Debian package

git clone https://github.com/Yours3lf/rpi-vk-driver.git
cd rpi-vk-driver
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=`pwd`/../gcc.toolchain.cmake
make package -j

How to check contents of Debian package

dpkg -c rpi-vulkan-driver-1.0.0-1.2.141.Linux-arm.deb

Using gcc.toolchain.cmake

In order to use this toolchain file, it is passed in to CMake as a variable.

cmake .. -DCMAKE_TOOLCHAIN_FILE=`pwd`/../gcc.toolchain.cmake

If you pass variables before the toolchain, they will be available in the toolchain file. Here the updated TARGET_SYSROOT value is available for use in the toolchain file.

cmake .. -DTARGET_SYSROOT=/mnt/rootfs -DCMAKE_TOOLCHAIN_FILE=`pwd`/../gcc.toolchain.cmake

TOOLCHAIN_TRIPLE

The toolchain will use this value to determine the toolchain path. If you are using the default arm-linux-gnueabihf value, the bin folder of this toolchain needs to be added to your path.

TARGET_SYSROOT

If using the default Raspberry Pi toolchain it will use the sysroot from this toolchain. If you use a different toolchain, you will need to update this variable.

-DSYSROOT=/mnt/rootfs

RPI_ARCH

RPI_ARCH RPi
armv8-a 2B 1.2, 3B, 3B+
armv7-a 2B
armv8 3A+
armv6z 1A, 1A+, 1B, Zero 1.2, Zero 1.3, Zero W

The default value is armv8-a

CMAKE Variables

BUILD_NUMBER

For CI system. Default is 1.0.0

CMAKE_BUILD_TYPE

Sets the build type. Options are Debug, Release, or MinSizeRel. Default is Release

TARGET_SYSROOT

Point to the target sysroot.

CMAKE_STAGING_PREFIX

The sysroot staging path. See Linux Cross-compile example above for usage. Default value is ""

CMAKE_INSTALL_PREFIX

This is what the prefix should be when installed on the target sysroot. The default for this value on Linux is /usr/local.

BUILD_TESTING

Enables building Unit Test Cases. If Cross-compiling, make test will not run any tests. Default is ON

VULKAN_VERSION

Selects the sdk version for Vulkan-Headers, and Vulkan-Loader. Default branch is sdk-1.2.141

BUILD_WSI_XCB_SUPPORT

Builds the Vulkan-Loader with XCB Support. Default is OFF

BUILD_WSI_XLIB_SUPPORT

Builds the Vulkan-Loader with XLIB Support. Default is OFF

BUILD_WSI_WAYLAND_SUPPORT

Builds the Vulkan-Loader with Wayland Support. Default is OFF