radv/virtio: disable syncobj timeline support

The virtio-gpu guest kmd reports timelines as supported, so querying
DRM_CAP_SYNCOBJ_TIMELINE as vk_drm_syncobj_get_type() does will return
true.

The native context code on the other hand doesn't support timelines,
and support is disabled in the "ac/virtio: disable timeline_syncobj support"
commit.

Fix the inconsistency by manually disabling timeline support when
info.has_timeline_syncobj is false.

Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21658>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2024-07-19 10:18:42 +02:00 committed by Marge Bot
parent 9de728c4d0
commit 6b6340fea1

View file

@ -274,6 +274,14 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags,
if (ws->syncobj_sync_type.features) {
/* multi wait is always supported */
ws->syncobj_sync_type.features |= VK_SYNC_FEATURE_GPU_MULTI_WAIT;
if (!ws->info.has_timeline_syncobj && ws->syncobj_sync_type.features & VK_SYNC_FEATURE_TIMELINE) {
/* Disable timeline feature if it was disabled in the driver. */
assert(is_virtio);
ws->syncobj_sync_type.get_value = NULL;
ws->syncobj_sync_type.features &= ~VK_SYNC_FEATURE_TIMELINE;
}
ws->sync_types[num_sync_types++] = &ws->syncobj_sync_type;
if (!(ws->syncobj_sync_type.features & VK_SYNC_FEATURE_TIMELINE)) {
ws->emulated_timeline_sync_type = vk_sync_timeline_get_type(&ws->syncobj_sync_type);