diff options
| author | Jon Ashburn <jon@lunarg.com> | 2015-04-10 14:33:07 -0600 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-04-16 17:48:19 +0800 |
| commit | c1f104a68debb061464d7cac76aadfbfd05067f4 (patch) | |
| tree | b276c92baf2ccd170c86dd80d7e14f72cd097403 /include | |
| parent | 23e038d6ddc4b30ea889ea5ffa3fb068783f8540 (diff) | |
| download | usermoji-c1f104a68debb061464d7cac76aadfbfd05067f4.tar.xz | |
vulkan: Add vkGetGlobalExtensionInfo entrypoint
have loader use it to enumerate all extensions from layers and drivers.
Non-gode_gen layers also updated to include vkGetGlobalExtensionInfo
Includes verion info as part of GetExtensionSupport return data.
TODO: vk-layer-generate needs work
v2: do not check for non-existing ENABLE_WSI_X11 (olv)
Diffstat (limited to 'include')
| -rw-r--r-- | include/vkLayer.h | 1 | ||||
| -rw-r--r-- | include/vulkan.h | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/include/vkLayer.h b/include/vkLayer.h index 97c9b375..e58ccdcd 100644 --- a/include/vkLayer.h +++ b/include/vkLayer.h @@ -34,6 +34,7 @@ typedef struct VkLayerDispatchTable_ PFN_vkGetGpuInfo GetGpuInfo; PFN_vkCreateDevice CreateDevice; PFN_vkDestroyDevice DestroyDevice; + PFN_vkGetGlobalExtensionInfo GetGlobalExtensionInfo; PFN_vkGetExtensionSupport GetExtensionSupport; PFN_vkEnumerateLayers EnumerateLayers; PFN_vkGetDeviceQueue GetDeviceQueue; diff --git a/include/vulkan.h b/include/vulkan.h index bf581f25..0c85cb18 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -89,6 +89,7 @@ VK_DEFINE_SUBCLASS_HANDLE(VkRenderPass, VkObject) #define VK_MAX_PHYSICAL_GPUS 16 #define VK_MAX_PHYSICAL_GPU_NAME 256 +#define VK_MAX_EXTENSION_NAME 256 #define VK_LOD_CLAMP_NONE MAX_FLOAT #define VK_LAST_MIP_OR_SLICE 0xffffffff @@ -670,6 +671,15 @@ typedef enum VkPhysicalGpuInfoType_ VK_MAX_ENUM(VkPhysicalGpuInfoType) } VkPhysicalGpuInfoType; +typedef enum VkExtensionInfoType_ +{ + // Info type for vkGetGlobalExtensionInfo() and vkGetPhysicalDeviceExtensionInfo() + VK_EXTENSION_INFO_TYPE_COUNT = 0x00000000, + VK_EXTENSION_INFO_TYPE_PROPERTIES = 0x00000001, + + //VK_ENUM_RANGE(EXTENSION_INFO_TYPE, COUNT, PROPERTIES) +} VkExtensionInfoType; + typedef enum VkFormatInfoType_ { // Info type for vkGetFormatInfo() @@ -1369,6 +1379,12 @@ typedef struct VkGpuCompatibilityInfo_ VkFlags compatibilityFlags; // VkGpuCompatibilityFlags } VkGpuCompatibilityInfo; +typedef struct VkExtensionProperties_ +{ + char extName[VK_MAX_EXTENSION_NAME]; // extension name + uint32_t version; // version of the extension specification +} VkExtensionProperties; + typedef struct VkApplicationInfo_ { VkStructureType sType; // Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO @@ -2274,6 +2290,7 @@ typedef VkResult (VKAPI *PFN_vkGetGpuInfo)(VkPhysicalGpu gpu, VkPhysicalGpuInfoT typedef void * (VKAPI *PFN_vkGetProcAddr)(VkPhysicalGpu gpu, const char * pName); typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalGpu gpu, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice); typedef VkResult (VKAPI *PFN_vkDestroyDevice)(VkDevice device); +typedef VkResult (VKAPI *PFN_vkGetGlobalExtensionInfo)(VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkGetExtensionSupport)(VkPhysicalGpu gpu, const char* pExtName); typedef VkResult (VKAPI *PFN_vkEnumerateLayers)(VkPhysicalGpu gpu, size_t maxLayerCount, size_t maxStringSize, size_t* pOutLayerCount, char* const* pOutLayers, void* pReserved); typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue); @@ -2420,6 +2437,11 @@ VkResult VKAPI vkDestroyDevice( VkDevice device); // Extension discovery functions +VkResult VKAPI vkGetGlobalExtensionInfo( + VkExtensionInfoType infoType, + uint32_t extensionIndex, + size_t* pDataSize, + void* pData); VkResult VKAPI vkGetExtensionSupport( VkPhysicalGpu gpu, |
