venus: fix compatibility with older host drivers

Unlike on Android, KHR_swapchain may be advertised even when the host
driver does not support EXT_image_drm_format_modifier and
EXT_queue_family_foreign.  Do not request those extensions when they are
not supported.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11369>
This commit is contained in:
Chia-I Wu 2021-06-14 16:39:54 -07:00 committed by Marge Bot
parent 84ec64c4e4
commit c496dc1120
1 changed files with 10 additions and 2 deletions

View File

@ -3222,7 +3222,11 @@ vn_device_fix_create_info(const struct vn_device *dev,
app_exts->KHR_swapchain || app_exts->ANDROID_native_buffer ||
app_exts->ANDROID_external_memory_android_hardware_buffer;
if (has_wsi) {
if (!app_exts->EXT_image_drm_format_modifier) {
/* KHR_swapchain may be advertised without the renderer support for
* EXT_image_drm_format_modifier
*/
if (!app_exts->EXT_image_drm_format_modifier &&
physical_dev->renderer_extensions.EXT_image_drm_format_modifier) {
extra_exts[extra_count++] =
VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME;
@ -3233,7 +3237,11 @@ vn_device_fix_create_info(const struct vn_device *dev,
}
}
if (!app_exts->EXT_queue_family_foreign) {
/* XXX KHR_swapchain may be advertised without the renderer support for
* EXT_queue_family_foreign
*/
if (!app_exts->EXT_queue_family_foreign &&
physical_dev->renderer_extensions.EXT_queue_family_foreign) {
extra_exts[extra_count++] =
VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME;
}