diff options
| author | Chris Forbes <chrisf@ijw.co.nz> | 2015-06-21 22:55:02 +1200 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-06-24 15:38:03 -0600 |
| commit | f576a3edbd003797df3ca6995160e093f14c9f9d (patch) | |
| tree | 995503307e3b555f0c3a608cbfa1f9ca7ecb999f /include | |
| parent | 52b161e51097b2e0322b130b85ca94336f56733a (diff) | |
| download | usermoji-f576a3edbd003797df3ca6995160e093f14c9f9d.tar.xz | |
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 <chrisf@ijw.co.nz>
Diffstat (limited to 'include')
| -rw-r--r-- | include/vkLayer.h | 4 | ||||
| -rw-r--r-- | include/vulkan.h | 79 |
2 files changed, 64 insertions, 19 deletions
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; + // <lots more> +} 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( |
