mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-01-06 05:00:18 +01:00
read-only mirror of https://gitlab.freedesktop.org/mesa/drm
In case of a kernel that is new enough to support multiple submit- queues, but with an adreno generation which doesn't support multiple prioritized ringbuffers, we'd attempt to open a submit-queue with prio=1 (medium), which is rejected by the kernel. This could happen either w/ an older mesa (which uses fd_pipe_new()) or a newer mesa which defaults to prio=1 if no pipe context priority flags are set. The simple answer to fix both cases is to clamp the requested priority according to the number of rings. This might not do exactly what you want, if we hypothetically had 2 rings (it would result in requested medium priority being high priority instead of low priority). But the number of rings (for hw gen's that support this) is purely a software construct, so the easy answer there is to have the kernel advertise at least 3 rings if it supports more than one. There isn't really any reason to do otherwise. Signed-off-by: Rob Clark <robclark@freedesktop.org> |
||
|---|---|---|
| amdgpu | ||
| data | ||
| etnaviv | ||
| exynos | ||
| freedreno | ||
| include/drm | ||
| intel | ||
| libkms | ||
| m4 | ||
| man | ||
| nouveau | ||
| omap | ||
| radeon | ||
| tegra | ||
| tests | ||
| vc4 | ||
| .editorconfig | ||
| .gitignore | ||
| Android.common.mk | ||
| Android.mk | ||
| autogen.sh | ||
| CleanSpec.mk | ||
| configure.ac | ||
| libdrm.pc.in | ||
| libdrm_lists.h | ||
| libdrm_macros.h | ||
| libsync.h | ||
| Makefile.am | ||
| Makefile.sources | ||
| meson.build | ||
| meson_options.txt | ||
| README | ||
| RELEASING | ||
| util_double_list.h | ||
| util_math.h | ||
| xf86atomic.h | ||
| xf86drm.c | ||
| xf86drm.h | ||
| xf86drmHash.c | ||
| xf86drmHash.h | ||
| xf86drmMode.c | ||
| xf86drmMode.h | ||
| xf86drmRandom.c | ||
| xf86drmRandom.h | ||
| xf86drmSL.c | ||
libdrm - userspace library for drm
This is libdrm, a userspace library for accessing the DRM, direct
rendering manager, on Linux, BSD and other operating systems that
support the ioctl interface. The library provides wrapper functions
for the ioctls to avoid exposing the kernel interface directly, and
for chipsets with drm memory manager, support for tracking relocations
and buffers. libdrm is a low-level library, typically used by
graphics drivers such as the Mesa DRI drivers, the X drivers, libva
and similar projects. New functionality in the kernel DRM drivers
typically requires a new libdrm, but a new libdrm will always work
with an older kernel.
Compiling
---------
libdrm has two build systems, a legacy autotools build system, and a newer
meson build system. The meson build system is much faster, and offers a
slightly different interface, but otherwise provides an equivalent feature set.
To use it:
meson builddir/
By default this will install into /usr/local, you can change your prefix
with --prefix=/usr (or `meson configure builddir/ -Dprefix=/usr` after
the initial meson setup).
Then use ninja to build and install:
ninja -C builddir/ install
If you are installing into a system location you will need to run install
separately, and as root.
Alternatively you can invoke autotools configure:
./configure
By default, libdrm will install into the /usr/local/ prefix. If you
want to install this DRM to replace your system copy, pass
--prefix=/usr and --exec-prefix=/ to configure. If you are building
libdrm from a git checkout, you first need to run the autogen.sh
script. You can pass any options to autogen.sh that you would other
wise pass to configure, or you can just re-run configure with the
options you need once autogen.sh finishes.
Next step is to build libdrm:
make
and once make finishes successfully, install the package using
make install
If you are installing into a system location, you will need to be root
to perform the install step.