docs: Add docs for running a local Mesa build
I'm tired of explaining this to people. Let's put it in the actual project docs. Reviewed-by: Chia-I Wu <olvaffe@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11809>
This commit is contained in:
parent
f3742b9c13
commit
81670a47f0
|
@ -101,12 +101,98 @@ On Windows you can also use the Visual Studio backend
|
||||||
Please read the :doc:`detailed meson instructions <meson>` for more
|
Please read the :doc:`detailed meson instructions <meson>` for more
|
||||||
information
|
information
|
||||||
|
|
||||||
3. Building with AOSP (Android)
|
3. Running against a local build
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
It's often necessary or useful when debugging driver issues or testing new
|
||||||
|
branches to run against a local build of Mesa without doing a system-wide
|
||||||
|
install. To do this, choose a temporary location for the install. A directory
|
||||||
|
called ``installdir`` inside your mesa tree is as good as anything. All of the
|
||||||
|
commands below will assume ``$MESA_INSTALLDIR`` is an absolute path to this
|
||||||
|
location.
|
||||||
|
|
||||||
|
First, configure Mesa and install in the temporary location:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
meson builddir/ -Dprefix="$MESA_INSTALLDIR" OTHER_OPTIONS
|
||||||
|
ninja -C builddir/ install
|
||||||
|
|
||||||
|
where ``OTHER_OPTIONS`` is replaced by any meson configuration options you may
|
||||||
|
want. For instance, if you want to build the LLVMpipe drivers, it would look
|
||||||
|
like this:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
meson builddir/ -Dprefix="$MESA_INSTALLDIR" -Ddri-drivers= \
|
||||||
|
-Dgallium-drivers=swrast -Dvulkan-drivers=swrast
|
||||||
|
ninja -C builddir/ install
|
||||||
|
|
||||||
|
Once Mesa has built and installed to ``$MESA_INSTALLDIR``, you can run any app
|
||||||
|
against your temporary install by setting the right environment variables.
|
||||||
|
Which variable you have to set depends on the API.
|
||||||
|
|
||||||
|
OpenGL
|
||||||
|
~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
LD_LIBRARY_PATH="$MESA_INSTALLDIR/lib64" glxinfo
|
||||||
|
|
||||||
|
You may need to use ``lib`` instead of ``lib64`` on some systems or a full
|
||||||
|
library specifier on debian. Look inside ``installdir`` for the directory that
|
||||||
|
contains ``libGL.so`` and use that one.
|
||||||
|
|
||||||
|
Vulkan
|
||||||
|
~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
VK_ICD_FILENAMES="$MESA_INSTALLDIR/share/vulkan/icd/my_icd.json" vulkaninfo
|
||||||
|
|
||||||
|
where ``my_icd.json`` is replaced with the actual ICD json file name. This
|
||||||
|
will depend on your driver. For instance, the 64-bit lavapipe driver ICD file
|
||||||
|
is named ``lvp_icd.x86_64.json``.
|
||||||
|
|
||||||
|
OpenCL
|
||||||
|
~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
OCL_ICD_VENDORS="$MESA_INSTALLDIR/etc/OpenCL/vendors" clinfo
|
||||||
|
|
||||||
|
Unlike Vulkan, OpenCL takes a path to the whole ``vendors`` folder and will
|
||||||
|
enumerate any drivers found there.
|
||||||
|
|
||||||
|
Troubleshooting local builds
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
If you are trying to run an app against a local build and it's not working,
|
||||||
|
here are a few things to check:
|
||||||
|
|
||||||
|
1. Double-check your paths and try with the simplest app you can. Before
|
||||||
|
banging your head on a Steam game, make sure your path works with
|
||||||
|
``glxgears`` first.
|
||||||
|
|
||||||
|
2. Watch out for wrapper scripts. Some more complex apps such as games have
|
||||||
|
big start-up scripts. Sometimes those scripts scrub the environment or set
|
||||||
|
``LD_LIBRARY_PATH`` to something in the game's install directory.
|
||||||
|
|
||||||
|
3. Is your Mesa build the same arch as your app? Lots of games are still
|
||||||
|
32-bit and your Mesa build is probably 64-bit by default.
|
||||||
|
|
||||||
|
4. 32 and 64-bit builds in the same local install directory doesn't typically
|
||||||
|
work. Distros go to great lengths to make this work in your system install
|
||||||
|
and it's hard to get it right for a local install. If you've recently
|
||||||
|
built 64-bit and are now building 32-bit, throw away the install directory
|
||||||
|
first to prevent conflicts.
|
||||||
|
|
||||||
|
4. Building with AOSP (Android)
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
<TODO>
|
<TODO>
|
||||||
|
|
||||||
4. Library Information
|
5. Library Information
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
When compilation has finished, look in the top-level ``lib/`` (or
|
When compilation has finished, look in the top-level ``lib/`` (or
|
||||||
|
@ -137,7 +223,7 @@ If you built the DRI hardware drivers, you'll also see the DRI drivers:
|
||||||
If you built with Gallium support, look in lib/gallium/ for
|
If you built with Gallium support, look in lib/gallium/ for
|
||||||
Gallium-based versions of libGL and device drivers.
|
Gallium-based versions of libGL and device drivers.
|
||||||
|
|
||||||
5. Building OpenGL programs with pkg-config
|
6. Building OpenGL programs with pkg-config
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
Running ``ninja install`` will install package configuration files for
|
Running ``ninja install`` will install package configuration files for
|
||||||
|
|
Loading…
Reference in New Issue