diff --git a/src/virtio/vulkan/vn_common.c b/src/virtio/vulkan/vn_common.c index 5e7e8335c84..b729e3dfd37 100644 --- a/src/virtio/vulkan/vn_common.c +++ b/src/virtio/vulkan/vn_common.c @@ -15,6 +15,7 @@ #include "util/debug.h" #include "util/log.h" #include "util/os_misc.h" +#include "venus-protocol/vn_protocol_driver_info.h" #include "vk_enum_to_str.h" static const struct debug_control vn_debug_options[] = { @@ -70,6 +71,13 @@ vn_log_result(struct vn_instance *instance, return result; } +uint32_t +vn_extension_get_spec_version(const char *name) +{ + const struct vn_info_extension *ext = vn_info_extension_get(name); + return ext ? ext->spec_version : 0; +} + void vn_relax(uint32_t *iter, const char *reason) { diff --git a/src/virtio/vulkan/vn_common.h b/src/virtio/vulkan/vn_common.h index 43da00cb168..fbe4bced465 100644 --- a/src/virtio/vulkan/vn_common.h +++ b/src/virtio/vulkan/vn_common.h @@ -236,6 +236,9 @@ vn_refcount_dec(struct vn_refcount *ref) return old == 1; } +uint32_t +vn_extension_get_spec_version(const char *name); + void vn_relax(uint32_t *iter, const char *reason); diff --git a/src/virtio/vulkan/vn_instance.c b/src/virtio/vulkan/vn_instance.c index 6ebf5061f33..42f7831f6aa 100644 --- a/src/virtio/vulkan/vn_instance.c +++ b/src/virtio/vulkan/vn_instance.c @@ -266,17 +266,16 @@ vn_instance_init_renderer(struct vn_instance *instance) return VK_ERROR_INITIALIZATION_FAILED; } - const struct vn_info_extension *ext = - vn_info_extension_get("VK_EXT_command_serialization"); + uint32_t spec_version = + vn_extension_get_spec_version("VK_EXT_command_serialization"); if (renderer_info->vk_ext_command_serialization_spec_version > - ext->spec_version) { - renderer_info->vk_ext_command_serialization_spec_version = - ext->spec_version; + spec_version) { + renderer_info->vk_ext_command_serialization_spec_version = spec_version; } - ext = vn_info_extension_get("VK_MESA_venus_protocol"); - if (renderer_info->vk_mesa_venus_protocol_spec_version > ext->spec_version) - renderer_info->vk_mesa_venus_protocol_spec_version = ext->spec_version; + spec_version = vn_extension_get_spec_version("VK_MESA_venus_protocol"); + if (renderer_info->vk_mesa_venus_protocol_spec_version > spec_version) + renderer_info->vk_mesa_venus_protocol_spec_version = spec_version; if (VN_DEBUG(INIT)) { vn_log(instance, "connected to renderer"); diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index b396d668e99..3325b3925b8 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -15,7 +15,6 @@ #include "git_sha1.h" #include "util/mesa-sha1.h" #include "venus-protocol/vn_protocol_driver_device.h" -#include "venus-protocol/vn_protocol_driver_info.h" #include "vn_android.h" #include "vn_instance.h" @@ -1046,14 +1045,14 @@ vn_physical_device_init_renderer_extensions( continue; /* check encoder support */ - const struct vn_info_extension *enc_ext = - vn_info_extension_get(props->extensionName); - if (!enc_ext) + const uint32_t enc_ext_spec_version = + vn_extension_get_spec_version(props->extensionName); + if (!enc_ext_spec_version) continue; physical_dev->renderer_extensions.extensions[i] = true; physical_dev->extension_spec_versions[i] = - MIN2(exts[j].specVersion, enc_ext->spec_version); + MIN2(exts[j].specVersion, enc_ext_spec_version); break; }