From f576a3edbd003797df3ca6995160e093f14c9f9d Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 21 Jun 2015 22:55:02 +1200 Subject: vulkan.h: Remove vkGetFormatInfo, add features/limits (#12827, v125) NOTES: 1/ Some layers impact from vkGetFormatInfo -> vkGetPhysicalDeviceFormatInfo; some checks are currently disabled in ParamChecker pending discussion on the best way to do this. Similar checks in Image layer implemented via additional layer_data member to link back from VkDevice -> VkPhysicalDevice. 2/ VkPhysicalDeviceFeatures, VkPhysicalDeviceLimits members all zero for now; also some further churn to be done to the contents of these structures. Signed-off-by: Chris Forbes --- include/vkLayer.h | 4 ++- include/vulkan.h | 79 ++++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 64 insertions(+), 19 deletions(-) (limited to 'include') diff --git a/include/vkLayer.h b/include/vkLayer.h index 865bb640..43e44783 100644 --- a/include/vkLayer.h +++ b/include/vkLayer.h @@ -58,7 +58,6 @@ typedef struct VkLayerDispatchTable_ PFN_vkResetEvent ResetEvent; PFN_vkCreateQueryPool CreateQueryPool; PFN_vkGetQueryPoolResults GetQueryPoolResults; - PFN_vkGetFormatInfo GetFormatInfo; PFN_vkCreateBuffer CreateBuffer; PFN_vkCreateBufferView CreateBufferView; PFN_vkCreateImage CreateImage; @@ -143,6 +142,9 @@ typedef struct VkLayerInstanceDispatchTable_ PFN_vkDestroyInstance DestroyInstance; PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; PFN_vkGetPhysicalDeviceInfo GetPhysicalDeviceInfo; + PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures; + PFN_vkGetPhysicalDeviceFormatInfo GetPhysicalDeviceFormatInfo; + PFN_vkGetPhysicalDeviceLimits GetPhysicalDeviceLimits; PFN_vkCreateDevice CreateDevice; /* PFN_vkGetGlobalExtensionInfo GetGlobalExtensionInfo; non-dispatchable */ PFN_vkGetPhysicalDeviceExtensionInfo GetPhysicalDeviceExtensionInfo; diff --git a/include/vulkan.h b/include/vulkan.h index bb40adfe..131d36f7 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -554,14 +554,6 @@ typedef enum VkExtensionInfoType_ VK_ENUM_RANGE(EXTENSION_INFO_TYPE, COUNT, PROPERTIES) } VkExtensionInfoType; -typedef enum VkFormatInfoType_ -{ - // Info type for vkGetFormatInfo() - VK_FORMAT_INFO_TYPE_PROPERTIES = 0x00000000, - - VK_ENUM_RANGE(FORMAT_INFO_TYPE, PROPERTIES, PROPERTIES) -} VkFormatInfoType; - typedef enum VkSubresourceInfoType_ { // Info type for vkGetImageSubresourceInfo() @@ -1223,6 +1215,49 @@ typedef struct VkPhysicalDeviceProperties_ uint32_t maxColorAttachments; // at least 8? } VkPhysicalDeviceProperties; +typedef struct VkPhysicalDeviceFeatures_ +{ + // GFL_32 features + bool32_t supportsGeometryShader; + bool32_t supportsTessellationShader; + bool32_t supportsSampleRateShading; + bool32_t supportsFragmentSideEffects; + bool32_t supportsConstantStorageBufferArrayIdexing; + bool32_t supportsConstantStorageImageArrayIndexing; + bool32_t supportsConstantUniformBufferArrayIndexing; + bool32_t supportsDynamicSampledImageArrayIndexing; + // GFL_45 features + bool32_t supportsBlendSrc1; + bool32_t supportsClipAndCullDistance; + bool32_t supportsLogicOp; + bool32_t supportsInstancedDrawIndirect; + bool32_t supportsDepthClip; + bool32_t supportsFillMode; + bool32_t supportsStorageImageExtendedFormats; + bool32_t supportsStorageImageMultisample; + bool32_t supportsPipelineStatisticsQuery; + bool32_t supportsVTGSideEffects; + bool32_t supportsDynamicUniformBufferArrayIndexing; + // optional features + bool32_t supportsDynamicStorageBufferArrayIndexing; + bool32_t supportsDynamicStorageImageArrayIndexing; + bool32_t supportsShaderFloat64; + bool32_t supportsDepthBounds; + bool32_t supportsWideLines; + bool32_t supportsTextureCompressionETC2; + bool32_t supportsTextureCompressionASTC_LDR; + bool32_t supportsTextureCompressionBC; +} VkPhysicalDeviceFeatures; + +typedef struct VkPhysicalDeviceLimits_ +{ + uint32_t maxImageDimensions; + uint32_t maxImageDepth; + uint32_t maxImageArrayLayers; + // +} VkPhysicalDeviceLimits; + + typedef struct VkPhysicalDevicePerformance_ { float maxDeviceClock; @@ -1282,6 +1317,7 @@ typedef struct VkDeviceCreateInfo_ const VkDeviceQueueCreateInfo* pRequestedQueues; uint32_t extensionCount; const VkExtensionProperties* pEnabledExtensions; // Indicate extensions to enable by index value + const VkPhysicalDeviceFeatures* pEnabledFeatures; VkDeviceCreateFlags flags; // Device creation flags } VkDeviceCreateInfo; @@ -2009,6 +2045,9 @@ typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCrea typedef VkResult (VKAPI *PFN_vkDestroyInstance)(VkInstance instance); typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceInfo)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceInfoType infoType, size_t* pDataSize, void* pData); +typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures); +typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceFormatInfo)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties *pFormatInfo); +typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceLimits)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits); typedef void * (VKAPI *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char * pName); typedef void * (VKAPI *PFN_vkGetDeviceProcAddr)(VkDevice device, const char * pName); typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice); @@ -2043,7 +2082,6 @@ typedef VkResult (VKAPI *PFN_vkSetEvent)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkResetEvent)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool); typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags); -typedef VkResult (VKAPI *PFN_vkGetFormatInfo)(VkDevice device, VkFormat format, VkFormatInfoType infoType, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer); typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView); typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage); @@ -2133,6 +2171,20 @@ VkResult VKAPI vkGetPhysicalDeviceInfo( size_t* pDataSize, void* pData); +VkResult VKAPI vkGetPhysicalDeviceFeatures( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures* pFeatures); + +VkResult VKAPI vkGetPhysicalDeviceFormatInfo( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties* pFormatInfo); + +VkResult VKAPI vkGetPhysicalDeviceLimits( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceLimits* pLimits); + + void * VKAPI vkGetInstanceProcAddr( VkInstance instance, const char* pName); @@ -2330,15 +2382,6 @@ VkResult VKAPI vkGetQueryPoolResults( void* pData, VkQueryResultFlags flags); -// Format capabilities - -VkResult VKAPI vkGetFormatInfo( - VkDevice device, - VkFormat format, - VkFormatInfoType infoType, - size_t* pDataSize, - void* pData); - // Buffer functions VkResult VKAPI vkCreateBuffer( -- cgit v1.2.3