Go to file
Bas Nieuwenhuizen 085ee3e488 amdgpu: Add vamgr for capture/replay.
In Vulkan we have extensions to assist with capture in replay in a
world where addresses are returned to the application. This involves
creating buffers at the same VA during replay as they were during
capture.

By itself libdrm_amdgpu already has support for this, but there is
the obvious failure mode that if another buffer is already allocated
at that VA things fail spectacularly. This is an actual issue as
internal buffers, like winsys images or shader binaries also
participate in the same VA allocation.

To avoid this problem applications have to create buffers which
are going to be captured with a flag, and the implementation is to
separate VA allocation for those buffers to reduce the collision risk:

"Implementations are expected to separate such buffers in the GPU address
space so normal allocations will avoid using these addresses. Apps/tools
should avoid mixing app-provided and implementation-provided addresses for
buffers created with VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
to avoid address space allocation conflicts."

This patch implements that by adding a flag for these buffers and allocating
address space from the top of the address range instead of the bottom.

Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Christian König <christian.koenig@amd.com>
2021-06-15 13:08:20 +00:00
.gitlab-ci man: convert to reStructuredText 2020-12-10 10:17:19 +01:00
amdgpu amdgpu: Add vamgr for capture/replay. 2021-06-15 13:08:20 +00:00
android android: Fix 32-bit app crashing in 64-bit Android 2018-12-18 21:18:19 +01:00
data amdgpu: Added product name for E9390,E9560 and E9565 dgpu 2021-06-07 10:59:19 -04:00
etnaviv meson: use library() instead of shared_library(). 2021-03-09 16:57:32 +08:00
exynos meson: use library() instead of shared_library(). 2021-03-09 16:57:32 +08:00
freedreno meson: use library() instead of shared_library(). 2021-03-09 16:57:32 +08:00
include/drm amdgpu: sync up amdgpu_drm.h with latest from kernel 2021-04-06 08:58:54 -04:00
intel intel: Add support for ADLP 2021-05-20 12:01:25 +00:00
libkms meson: use library() instead of shared_library(). 2021-03-09 16:57:32 +08:00
man man: convert to reStructuredText 2020-12-10 10:17:19 +01:00
nouveau nouveau: add debug option to sync pushbuffer submissions 2021-05-06 19:41:16 +02:00
omap meson: use library() instead of shared_library(). 2021-03-09 16:57:32 +08:00
radeon meson: use library() instead of shared_library(). 2021-03-09 16:57:32 +08:00
tegra meson: use library() instead of shared_library(). 2021-03-09 16:57:32 +08:00
tests tests/amdgpu/hotunplug: Add hotunplug with exported fence 2021-06-09 20:27:09 +00:00
vc4 Revert "Revert "libdrm: remove autotools support"" 2019-10-18 18:05:45 +01:00
.editorconfig Add meson build system 2018-01-12 09:40:48 -08:00
.gitignore add a minimal .gitignore back 2019-12-17 22:37:39 +00:00
.gitlab-ci.yml ci: use `base-devel` tag of archlinux image instead of `base` and then installing `base-devel` after 2021-04-30 10:13:37 +02:00
Android.common.mk meson: always define whether headers exist 2020-01-23 17:00:12 +00:00
Android.mk libdrm: Android.mk: Add minimal Android platform check 2019-04-25 10:55:02 +01:00
CONTRIBUTING.rst doc: Rename README&CONTRIBUTING to .rst 2018-10-17 17:17:19 +02:00
CleanSpec.mk tests: Split helpers into library 2015-12-18 17:43:40 +00:00
Makefile.sources libdrm: add msm drm uapi header 2018-08-23 08:48:45 -07:00
README.rst Revert "Revert "libdrm: remove autotools support"" 2019-10-18 18:05:45 +01:00
RELEASING RELEASING: update instructions to use meson instead of autotools 2019-10-14 15:57:26 +00:00
core-symbols.txt xf86drmMode: add drmIsKMS 2021-02-26 12:56:46 +01:00
libdrm.pc.in Revert "Fix pkgconfig includes for /usr/include/drm" 2010-04-09 16:33:38 -04:00
libdrm_lists.h lists: add nicer+unsafe foreach, and list join macros 2012-04-14 02:47:04 +10:00
libdrm_macros.h libdrm: Use mmap64 instead of __mmap2 2019-04-25 10:55:13 +01:00
libsync.h add libsync.h helper 2016-11-05 10:16:46 -04:00
meson.build Bump version to 2.4.106 2021-05-18 13:38:07 +10:00
meson_options.txt Add meson build system 2018-01-12 09:40:48 -08:00
symbols-check.py meson: import Mesa's symbols check script 2019-11-11 22:57:14 +00:00
util_double_list.h list: fix an issue with android build using clang 2016-08-02 16:22:45 -04:00
util_math.h Fix build with -std=c11 2018-09-05 13:09:29 +01:00
xf86atomic.h xf86atomic: require CAS support in libatomic_ops 2019-12-06 21:57:12 +00:00
xf86drm.c xf86drm: fix null pointer deref in drmGetBufInfo 2021-03-02 08:29:27 -08:00
xf86drm.h xf86drm: warn about GEM handle reference counting 2021-02-26 13:01:04 +00:00
xf86drmHash.c xf86drmHash: remove unused loop variable 2018-11-09 10:59:11 +00:00
xf86drmHash.h tests/hash: extract test out of xf86drmHash.c 2015-04-05 15:19:42 +01:00
xf86drmMode.c Revert "xf86drmMode: set FB_MODIFIERS flag when modifiers are supplied" 2021-04-22 20:24:11 +02:00
xf86drmMode.h xf86drmMode: introduce drmModeGetPropertyType 2021-03-31 07:42:15 +00:00
xf86drmRandom.c libdrm: annotate public functions 2018-09-19 22:46:45 -07:00
xf86drmRandom.h tests/random: extract test out of xf86drmRandom.c 2015-04-05 15:33:33 +01:00
xf86drmSL.c libdrm: annotate public functions 2018-09-19 22:46:45 -07:00

README.rst

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.
New functionality in the kernel DRM drivers typically requires a new libdrm,
but a new libdrm will always work with an older kernel.

libdrm is a low-level library, typically used by graphics drivers such as
the Mesa drivers, the X drivers, libva and similar projects.


Compiling
---------

To set up meson:

    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.