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:
parent
f26b336331
commit
0260b4a7e7
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue