venus: add vn_extension_get_spec_version

It is a wraper for vn_info_extension_get

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15498>
This commit is contained in:
Chia-I Wu 2022-03-21 15:30:12 -07:00 committed by Marge Bot
parent 0819869ca8
commit 5d188274ee
4 changed files with 22 additions and 13 deletions

View file

@ -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)
{

View file

@ -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);

View file

@ -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");

View file

@ -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;
}