vulkan: Add a common helper for enumerating instance extension properties

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8792>
This commit is contained in:
Jason Ekstrand 2021-01-30 11:03:27 -06:00 committed by Marge Bot
parent f26b336331
commit 0260b4a7e7
7 changed files with 44 additions and 52 deletions

View File

@ -5106,18 +5106,12 @@ VkResult radv_EnumerateInstanceExtensionProperties(
uint32_t* pPropertyCount,
VkExtensionProperties* pProperties)
{
VK_OUTARRAY_MAKE_TYPED(VkExtensionProperties, out, pProperties,
pPropertyCount);
if (pLayerName)
return vk_error(NULL, VK_ERROR_LAYER_NOT_PRESENT);
for (int i = 0; i < VK_INSTANCE_EXTENSION_COUNT; i++) {
if (radv_instance_extensions_supported.extensions[i]) {
vk_outarray_append_typed(VkExtensionProperties, &out, prop) {
*prop = vk_instance_extensions[i];
}
}
}
return vk_outarray_status(&out);
return vk_enumerate_instance_extension_properties(
&radv_instance_extensions_supported,
pPropertyCount, pProperties);
}
PFN_vkVoidFunction radv_GetInstanceProcAddr(

View File

@ -97,17 +97,8 @@ v3dv_EnumerateInstanceExtensionProperties(const char *pLayerName,
if (pLayerName)
return vk_error(NULL, VK_ERROR_LAYER_NOT_PRESENT);
VK_OUTARRAY_MAKE(out, pProperties, pPropertyCount);
for (int i = 0; i < VK_INSTANCE_EXTENSION_COUNT; i++) {
if (v3dv_instance_extensions_supported.extensions[i]) {
vk_outarray_append(&out, prop) {
*prop = vk_instance_extensions[i];
}
}
}
return vk_outarray_status(&out);
return vk_enumerate_instance_extension_properties(
&v3dv_instance_extensions_supported, pPropertyCount, pProperties);
}
VkResult

View File

@ -1380,19 +1380,11 @@ tu_EnumerateInstanceExtensionProperties(const char *pLayerName,
uint32_t *pPropertyCount,
VkExtensionProperties *pProperties)
{
VK_OUTARRAY_MAKE(out, pProperties, pPropertyCount);
/* We spport no lyaers */
if (pLayerName)
return vk_error(NULL, VK_ERROR_LAYER_NOT_PRESENT);
for (int i = 0; i < VK_INSTANCE_EXTENSION_COUNT; i++) {
if (tu_instance_extensions_supported.extensions[i]) {
vk_outarray_append(&out, prop) { *prop = vk_instance_extensions[i]; }
}
}
return vk_outarray_status(&out);
return vk_enumerate_instance_extension_properties(
&tu_instance_extensions_supported, pPropertyCount, pProperties);
}
PFN_vkVoidFunction

View File

@ -846,17 +846,11 @@ VkResult lvp_EnumerateInstanceExtensionProperties(
uint32_t* pPropertyCount,
VkExtensionProperties* pProperties)
{
VK_OUTARRAY_MAKE(out, pProperties, pPropertyCount);
if (pLayerName)
return vk_error(NULL, VK_ERROR_LAYER_NOT_PRESENT);
for (int i = 0; i < VK_INSTANCE_EXTENSION_COUNT; i++) {
if (lvp_instance_extensions_supported.extensions[i]) {
vk_outarray_append(&out, prop) {
*prop = vk_instance_extensions[i];
}
}
}
return vk_outarray_status(&out);
return vk_enumerate_instance_extension_properties(
&lvp_instance_extensions_supported, pPropertyCount, pProperties);
}
VkResult lvp_EnumerateInstanceLayerProperties(

View File

@ -681,17 +681,11 @@ VkResult anv_EnumerateInstanceExtensionProperties(
uint32_t* pPropertyCount,
VkExtensionProperties* pProperties)
{
VK_OUTARRAY_MAKE(out, pProperties, pPropertyCount);
if (pLayerName)
return vk_error(VK_ERROR_LAYER_NOT_PRESENT);
for (int i = 0; i < VK_INSTANCE_EXTENSION_COUNT; i++) {
if (anv_instance_extensions_supported.extensions[i]) {
vk_outarray_append(&out, prop) {
*prop = vk_instance_extensions[i];
}
}
}
return vk_outarray_status(&out);
return vk_enumerate_instance_extension_properties(
&anv_instance_extensions_supported, pPropertyCount, pProperties);
}
static void

View File

@ -25,6 +25,7 @@
#include "vk_alloc.h"
#include "vk_common_entrypoints.h"
#include "vk_util.h"
VkResult
vk_instance_init(struct vk_instance *instance,
@ -97,6 +98,26 @@ vk_instance_finish(struct vk_instance *instance)
vk_object_base_finish(&instance->base);
}
VkResult
vk_enumerate_instance_extension_properties(
const struct vk_instance_extension_table *supported_extensions,
uint32_t *pPropertyCount,
VkExtensionProperties *pProperties)
{
VK_OUTARRAY_MAKE(out, pProperties, pPropertyCount);
for (int i = 0; i < VK_INSTANCE_EXTENSION_COUNT; i++) {
if (!supported_extensions->extensions[i])
continue;
vk_outarray_append(&out, prop) {
*prop = vk_instance_extensions[i];
}
}
return vk_outarray_status(&out);
}
PFN_vkVoidFunction
vk_instance_get_proc_addr(const struct vk_instance *instance,
const struct vk_instance_entrypoint_table *entrypoints,

View File

@ -71,6 +71,12 @@ vk_instance_init(struct vk_instance *instance,
void
vk_instance_finish(struct vk_instance *instance);
VkResult
vk_enumerate_instance_extension_properties(
const struct vk_instance_extension_table *supported_extensions,
uint32_t *pPropertyCount,
VkExtensionProperties *pProperties);
PFN_vkVoidFunction
vk_instance_get_proc_addr(const struct vk_instance *instance,
const struct vk_instance_entrypoint_table *entrypoints,