mesa/src
Karol Herbst 8658529e88 gallium: new VM interfaces for SVM
The old interfaces added back in clover's time were modeled after a very
bindful resource model.

However SVM (shared virtual memory) requires us to be way more flexible.

The new interfaces allow frontends to create a cut-out in the GPU's vm and
to assign addresses themselves. This gives us the following benefits:
 - The frontend is empowered to synchronize resource addresses between
   several devices. cl_mem objects in OpenCL span across a set of multiple
   devices and SVM requires them to have the same VMA across all of them.
 - Coarse grain SVM can be implemented without bothering drivers too much
   as the frontend can be responsible to make sure a host allocation with
   a specific VMA matches a GPU allocation with the identical VMA.
 - Support for Global variables in the CrossWorkgroup storage class
   Initializers. Those can depend on addresses of CrossWorkgroup memory,
   if the frontend can just assign a VMA, this address can be passed as a
   constant to spirv_to_nir and folded without the need to support
   spilling of constant initializers.

Drivers not able to give us a vm-cutout are left with implementing
cl_ext_buffer_device_address instead.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32942>
2025-05-28 19:21:46 +00:00
..
amd aco: implement bitfield_reverse for types other than 32-bits 2025-05-28 09:52:12 +00:00
android_stub
asahi asahi: advertise ASTC HDR formats 2025-05-28 14:49:06 +00:00
broadcom broadcom/ci: update expected test results 2025-05-26 11:42:45 +02:00
c11 c11: use SPDX-License-Identifier header 2025-01-08 20:37:51 +00:00
compiler nir/lower_int64: add bitfield_reverse lowering 2025-05-28 16:29:30 +00:00
drm-shim
egl glx,egl: drop libpipe_loader_dynamic dependency 2025-05-27 07:53:20 +00:00
etnaviv Uprev Piglit to c32e5cc717e846ffa43408174181dc16a31d3df0 2025-05-26 10:19:29 +00:00
freedreno ci/lava: Rename LAVA_S3_ARTIFACT_NAME 2025-05-26 17:25:40 +00:00
gallium gallium: new VM interfaces for SVM 2025-05-28 19:21:46 +00:00
gbm meson: support building with system libgbm 2025-04-09 12:15:33 +00:00
getopt
gfxstream gfxstream: fix missing include 2025-05-22 20:56:58 +00:00
glx glx,egl: drop libpipe_loader_dynamic dependency 2025-05-27 07:53:20 +00:00
gtest
imagination treewide: Switch to nir_progress 2025-02-26 15:19:53 +00:00
imgui
intel intel/compiler: fix SHA generation for shader replace 2025-05-27 22:57:19 +00:00
loader loader/wayland: Move acquisition time tracking into perfetto flows 2025-05-26 16:13:25 -05:00
mapi Get rid of 5 remaining references to glapitable.h 2025-04-23 20:18:25 +00:00
mesa gallium/st: enable KHR_texture_compression_astc_hdr when supported 2025-05-28 14:49:06 +00:00
microsoft d3d12: Do not build microsoft/compiler when graphics, gl or vk disabled 2025-05-08 14:17:22 +00:00
nouveau nvk: Use NAK by default on Kepler 2025-05-28 01:47:19 +00:00
panfrost panvk: drop bo refcount from panvk_image 2025-05-28 18:06:57 +00:00
tool perfetto/android: align datasource names with tooling expectations 2025-04-08 18:29:10 +00:00
util util/format: add util_format_is_astc_hdr()-helper 2025-05-28 14:49:06 +00:00
virtio venus: properly handle implicit fence from the compositor 2025-05-27 02:40:44 +00:00
vulkan vulkan: pass enabled features to drivers 2025-05-27 13:23:12 +00:00
x11 glx/egl/x11: fix x11_dri3_check_multibuffer 2025-02-17 02:50:15 +00:00
.clang-format radv: Add radv_foreach_stage to ForEachMacros again. 2025-04-11 18:01:47 +00:00
meson.build meson: support building with system libgbm 2025-04-09 12:15:33 +00:00