diff --git a/docs/features.txt b/docs/features.txt index 10340989473..5fcd0a30b0c 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -509,7 +509,7 @@ Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn, v3dv VK_EXT_tooling_info DONE (anv, hasvk, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_EXT_ycbcr_2plane_444_formats DONE (anv, lvp, nvk, panvk/v10+, vn) -Vulkan 1.4 -- all DONE: anv, lvp, nvk, radv/gfx8+, tu/a7xx+ +Vulkan 1.4 -- all DONE: anv, lvp, nvk, radv/gfx8+, tu/a7xx+, vn VK_KHR_dynamic_rendering_local_read DONE (anv, lvp, nvk, radv, tu, vn) VK_KHR_global_priority DONE (anv, lvp, nvk, panvk, radv, tu, vn) diff --git a/src/virtio/vulkan/vn_instance.h b/src/virtio/vulkan/vn_instance.h index 1ae6be84719..228ce7dce59 100644 --- a/src/virtio/vulkan/vn_instance.h +++ b/src/virtio/vulkan/vn_instance.h @@ -20,16 +20,12 @@ #define VN_MIN_RENDERER_VERSION VK_API_VERSION_1_1 /* max advertised version at both instance and device levels */ -#ifdef ANDROID_STRICT -#if ANDROID_API_LEVEL < 33 +#if !defined(ANDROID_STRICT) || ANDROID_API_LEVEL >= 36 +#define VN_MAX_API_VERSION VK_MAKE_VERSION(1, 4, VK_HEADER_VERSION) +#elif ANDROID_API_LEVEL >= 33 +#define VN_MAX_API_VERSION VK_MAKE_VERSION(1, 3, VK_HEADER_VERSION) +#else #define VN_MAX_API_VERSION VK_MAKE_VERSION(1, 1, VK_HEADER_VERSION) -#elif ANDROID_API_LEVEL < 36 -#define VN_MAX_API_VERSION VK_MAKE_VERSION(1, 3, VK_HEADER_VERSION) -#else /* ANDROID_API_LEVEL >= 36 */ -#define VN_MAX_API_VERSION VK_MAKE_VERSION(1, 3, VK_HEADER_VERSION) -#endif -#else /* ANDROID_STRICT */ -#define VN_MAX_API_VERSION VK_MAKE_VERSION(1, 3, VK_HEADER_VERSION) #endif struct vn_instance { diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index d797b9b9db8..19d46531e92 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -387,6 +387,13 @@ vn_physical_device_sanitize_properties(struct vn_physical_device *physical_dev) ver - VK_VERSION_PATCH(ver) + VK_VERSION_PATCH(props->apiVersion); } + /* Clamp to 1.3 if proper passthrough for VK_EXT_host_image_copy is not + * supported at the protocol level. It requires venus protocol v3. + * See vn_physical_device_get_passthrough_extensions() + */ + if (instance->renderer->info.vk_mesa_venus_protocol_spec_version < 3) + ver = MIN2(VK_API_VERSION_1_3, ver); + /* Clamp to 1.2 if we disabled VK_KHR_synchronization2 since it * is required for 1.3. * See vn_physical_device_get_passthrough_extensions()