lvp: avoid advertising dmabuf support for kms_swrast

Lavapipe relies on true udmabuf support for dmabuf export allocation.
This changes aligns the behavior with both llvmpipe_allocate_memory_fd
and llvmpipe_import_memory_fd.

Fixes: 7d0a631f20 ("llvmpipe: export dmabuf caps for kms_swrast")
Reviewed-by: Lucas Fryzek <lfryzek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40211>
This commit is contained in:
Yiwei Zhang 2026-03-03 08:38:51 -08:00 committed by Marge Bot
parent bfde63e4d8
commit 5ab8c8a439
2 changed files with 4 additions and 4 deletions

View file

@ -342,7 +342,7 @@ lvp_device_memory_type_for_handle_types(const struct lvp_physical_device *pdevic
assert(!(types & ~(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT |
VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT)));
#ifdef HAVE_LIBDRM
#if defined(HAVE_LIBDRM) && defined(HAVE_LINUX_UDMABUF_H)
int dmabuf_bits = DRM_PRIME_CAP_EXPORT | DRM_PRIME_CAP_IMPORT;
if ((pdevice->pscreen->caps.dmabuf & dmabuf_bits) == dmabuf_bits) {
/* If we have full dma-buf support, everything is a dma-buf */
@ -1441,7 +1441,7 @@ lvp_physical_device_init(struct lvp_physical_device *device,
device->max_images = device->pscreen->shader_caps[MESA_SHADER_FRAGMENT].max_shader_images;
device->vk.supported_extensions = lvp_device_extensions_supported;
#ifdef HAVE_LIBDRM
#if defined(HAVE_LIBDRM) && defined(HAVE_LINUX_UDMABUF_H)
int dmabuf_bits = DRM_PRIME_CAP_EXPORT | DRM_PRIME_CAP_IMPORT;
int supported_dmabuf_bits = device->pscreen->caps.dmabuf;
/* if import or export is supported then EXT_external_memory_dma_buf is supported */

View file

@ -492,7 +492,7 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_GetPhysicalDeviceImageFormatProperties2(
VkExternalMemoryHandleTypeFlags compat_flags = 0;
switch (external_info->handleType) {
#ifdef HAVE_LIBDRM
#if defined(HAVE_LIBDRM) && defined(HAVE_LINUX_UDMABUF_H)
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT: {
int params = physical_device->pscreen->caps.dmabuf;
flags = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT;
@ -663,7 +663,7 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceExternalBufferProperties(
VkExternalMemoryHandleTypeFlags export_flags = 0;
VkExternalMemoryHandleTypeFlags compat_flags = 0;
switch (pExternalBufferInfo->handleType) {
#ifdef HAVE_LIBDRM
#if defined(HAVE_LIBDRM) && defined(HAVE_LINUX_UDMABUF_H)
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT: {
VK_FROM_HANDLE(lvp_physical_device, physical_device, physicalDevice);
int params = physical_device->pscreen->caps.dmabuf;