panvk: Add a debug flag to force CPU map syncs through the kernel

Useful for debugging.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36385>
This commit is contained in:
Boris Brezillon
2025-08-27 17:50:37 +02:00
parent 4bee7f0003
commit 3ae96f3cfd
4 changed files with 11 additions and 5 deletions

View File

@@ -47,6 +47,7 @@ static const struct debug_control panvk_debug_options[] = {
{"force_blackhole", PANVK_DEBUG_FORCE_BLACKHOLE},
{"wsi_afbc", PANVK_DEBUG_WSI_AFBC},
{"no_wb_mmap", PANVK_DEBUG_NO_WB_MMAP},
{"no_user_mmap_sync", PANVK_DEBUG_NO_USER_MMAP_SYNC},
{NULL, 0},
};

View File

@@ -31,6 +31,7 @@ enum panvk_debug_flags {
PANVK_DEBUG_FORCE_BLACKHOLE = 1 << 12,
PANVK_DEBUG_WSI_AFBC = 1 << 13,
PANVK_DEBUG_NO_WB_MMAP = 1 << 14,
PANVK_DEBUG_NO_USER_MMAP_SYNC = 1 << 15,
};
extern uint64_t panvk_debug;

View File

@@ -97,8 +97,12 @@ create_kmod_dev(struct panvk_physical_device *device,
if (PANVK_DEBUG(STARTUP))
mesa_logi("Found compatible device '%s'.", path);
device->kmod.dev = pan_kmod_dev_create(fd, PAN_KMOD_DEV_FLAG_OWNS_FD,
&instance->kmod.allocator);
uint32_t flags = PAN_KMOD_DEV_FLAG_OWNS_FD;
if (PANVK_DEBUG(NO_USER_MMAP_SYNC))
flags |= PAN_KMOD_DEV_FLAG_MMAP_SYNC_THROUGH_KERNEL;
device->kmod.dev = pan_kmod_dev_create(fd, flags, &instance->kmod.allocator);
if (!device->kmod.dev) {
close(fd);

View File

@@ -393,9 +393,9 @@ panvk_per_arch(create_device)(struct panvk_physical_device *physical_device,
.free = panvk_kmod_free,
.priv = &device->vk.alloc,
};
device->kmod.dev =
pan_kmod_dev_create(os_dupfd_cloexec(physical_device->kmod.dev->fd),
PAN_KMOD_DEV_FLAG_OWNS_FD, &device->kmod.allocator);
device->kmod.dev = pan_kmod_dev_create(
os_dupfd_cloexec(physical_device->kmod.dev->fd),
physical_device->kmod.dev->flags, &device->kmod.allocator);
if (!device->kmod.dev) {
result = panvk_errorf(instance, VK_ERROR_OUT_OF_HOST_MEMORY,