mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-24 12:48:13 +02:00
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> |
||
|---|---|---|
| .. | ||
| frontend | ||
| pipe | ||
| winsys | ||
| mesa_interface.h | ||