085ee3e488
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> |
||
---|---|---|
.gitlab-ci | ||
amdgpu | ||
android | ||
data | ||
etnaviv | ||
exynos | ||
freedreno | ||
include/drm | ||
intel | ||
libkms | ||
man | ||
nouveau | ||
omap | ||
radeon | ||
tegra | ||
tests | ||
vc4 | ||
.editorconfig | ||
.gitignore | ||
.gitlab-ci.yml | ||
Android.common.mk | ||
Android.mk | ||
CONTRIBUTING.rst | ||
CleanSpec.mk | ||
Makefile.sources | ||
README.rst | ||
RELEASING | ||
core-symbols.txt | ||
libdrm.pc.in | ||
libdrm_lists.h | ||
libdrm_macros.h | ||
libsync.h | ||
meson.build | ||
meson_options.txt | ||
symbols-check.py | ||
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 |
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.