# MESA Driver sponsored by NLnet todo http://lists.libre-soc.org/pipermail/libre-soc-dev/2020-August/000246.html # Build Instructions (by Cole from Vivek's comments on the mailing list) This tutorial assumes, like the rest of the info on the wiki, that you are running Debian 10.4 either natively or in a virtualized setup. The following is available as scripts in the libre-soc dev-env-setup repo, and can be easily used by running `sudo ./install-mesa-apt-reqs && ./lsoc-mesa-dev-env-setup`. First, we need to install the necessary apt dependencies for building `drm` and `mesa`. In order to install a `meson` version recent enough to configure `mesa`, add buster-backports to /etc/apt/sources.list by running the following as root: echo "deb http://deb.debian.org/debian buster-backports main" | tee \ -a /etc/apt/sources.list Install `meson` (version 52.0 or later): apt-get update -y apt-get install -y -t buster-backports meson Then install the necessary packages by running the following commands as root: apt-get update -y apt-get upgrade -y apt-get install -y build-essential \ cmake \ git \ pkg-config \ libatomic-ops-dev \ libcairo2-dev \ libcunit1-dev \ libpciaccess-dev \ libunwind-dev \ llvm-8 \ llvm-8-dev \ python3.7 \ python3.7-dev \ python3-setuptools \ libzstd-dev \ libzstd1 \ zlib1g Then, still as root, run the following to get the necessary dependencies for building `drm` and `mesa`. apt-get build-dep -y libdrm apt-get build-dep -y mesa Now we are going to build and install `drm` from source as the debian apt versions are not recent enough to build mesa. Run all of these command as a regular user, **DO NOT RUN AS ROOT** it is not necessary. First, create our working directory `opt` in our user directory. In order to not mess with system `drm` and `mesa` libraries, also create a sub-directory `lsoc_mesa` to hold our header files and libraries. After creating the `opt` directory, cd into it to make it our active, current working directory. mkdir -p ~/opt/lsoc_mesa cd ~/opt Now clone `drm` from mesa's gitlab. Change to the `drm` directory. Create a build directory and cd into it. git clone https://gitlab.freedesktop.org/mesa/drm.git cd drm mkdir build && cd build In order to configure `drm` for building and installation run the following command. It is very important to specify `prefix=/home/$USER/opt/lsoc_mesa` because as mentioned above we need these files for development purposes, but we do not want to corrupt or interfere with our *system* `drm` libraries. meson -Dbuildtype=release -Dprefix=/home/$USER/opt/lsoc_mesa .. After configuration has completed, run ninja to build and install the `drm` libraries. ninja install In order for meson to be able to find the up-to-date `drm` files we have just built, we need to specify their location with the environment variable `PKG_CONFIG_PATH`. export PKG_CONFIG_PATH=~/opt/lsoc_mesa/lib/x86_64-linux-gnu/pkgconfig/ These following `vulkan`-specific environment variables are necessary to build our branch of mesa successfully: export VK_ICD_FILENAMES=/home/$USER/opt/lsoc_mesa/share/vulkan/icd.d/libresoc_icd.x86_64.json export VK_LOADER_DEBUG=warn export LIBRESOC_TRACE=1 Now change back to the base `~/opt` directory and clone the `mesa` git repo from the `mesa` gitlab instance. Change to the `mesa` directory. Create a build directory and cd into it. cd ~/opt git clone https://git.libre-soc.org/git/mesa.git git pull --rebase origin libresoc_dev git checkout -b libresoc_dev cd mesa mkdir build && cd build In order to configure `mesa` for building and installation run the following command. Again, it is *very* important to specify `prefix=/home/$USER/opt/lsoc_mesa` because as mentioned above we need these files for development purposes, but we do not want to corrupt or interfere with our *system* `mesa` libraries. meson -Dbuildtype=debug -Dprefix=/home/$USER/opt/lsoc_mesa \ -Dvulkan-drivers=libre-soc .. After configuration has completed, run ninja to build and install the `mesa` libraries. ninja install # From here on is solely Vivek's instructions To test the code I am sing simple tests built by https://github.com/GameTechDev/IntroductionToVulkan I am also using debug build for vulkan loader if any one interested in that please look at https://github.com/KhronosGroup/Vulkan-Loader/blob/master/BUILD.md I have pushed code to the new branch https://gitlab.freedesktop.org/vivekvpandya/mesa/-/tree/libresoc_dev previously it was on master so it will cause me problems working on master branch. # Running vulkan intro tutorial * * # Demos with lavapipe > It can be built with > meson configure -Dvulkan-drivers=swrast -Dgallium-drivers=swrast > set VK_ICD_FILENAMES to the lvp_icd.x86_64.json file and vulkaninfo should > show it. > > I tried running demos from > https://software.intel.com/content/www/us/en/develop/articles/api-without- > secrets-introduction-to-vulkan-part-1.html and all 7 runs fine with lavapipe. *