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
- https://github.com/GameTechDev/IntroductionToVulkan/tree/master/Project/Tutorials/01
- http://lists.libre-soc.org/pipermail/libre-soc-dev/2020-August/000368.html
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.