diff --git a/Vulkan-Headers b/Vulkan-Headers index af4fb97..41263fc 160000 --- a/Vulkan-Headers +++ b/Vulkan-Headers @@ -1 +1 @@ -Subproject commit af4fb97d7bde80997b0f61d53bb50bd6c56b8f50 +Subproject commit 41263fc5aa994b8eafaca946583bfcceca8ca419 diff --git a/VulkanDeviceInfoExtensions.cpp b/VulkanDeviceInfoExtensions.cpp index 2463f9c..0ef328e 100644 --- a/VulkanDeviceInfoExtensions.cpp +++ b/VulkanDeviceInfoExtensions.cpp @@ -127,6 +127,16 @@ void VulkanDeviceInfoExtensions::readPhysicalProperties_ARM() { pushProperty2(extension, "schedulingControlsFlags", QVariant::fromValue(extProps->schedulingControlsFlags)); delete extProps; } + if (extensionSupported("VK_ARM_render_pass_striped")) { + const char* extension("VK_ARM_render_pass_striped"); + VkPhysicalDeviceRenderPassStripedPropertiesARM* extProps = new VkPhysicalDeviceRenderPassStripedPropertiesARM{}; + extProps->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM; + deviceProps2 = initDeviceProperties2(extProps); + vulkanContext.vkGetPhysicalDeviceProperties2KHR(device, &deviceProps2); + pushProperty2(extension, "renderPassStripeGranularity", QVariant::fromValue(QVariantList({ extProps->renderPassStripeGranularity.width, extProps->renderPassStripeGranularity.height }))); + pushProperty2(extension, "maxRenderPassStripes", QVariant(extProps->maxRenderPassStripes)); + delete extProps; + } if (extensionSupported("VK_ARM_shader_core_builtins")) { const char* extension("VK_ARM_shader_core_builtins"); VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM* extProps = new VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM{}; @@ -900,6 +910,16 @@ void VulkanDeviceInfoExtensions::readPhysicalProperties_KHR() { pushProperty2(extension, "cooperativeMatrixSupportedStages", QVariant(extProps->cooperativeMatrixSupportedStages)); delete extProps; } + if (extensionSupported("VK_KHR_vertex_attribute_divisor")) { + const char* extension("VK_KHR_vertex_attribute_divisor"); + VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR* extProps = new VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR{}; + extProps->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR; + deviceProps2 = initDeviceProperties2(extProps); + vulkanContext.vkGetPhysicalDeviceProperties2KHR(device, &deviceProps2); + pushProperty2(extension, "maxVertexAttribDivisor", QVariant(extProps->maxVertexAttribDivisor)); + pushProperty2(extension, "supportsNonZeroFirstInstance", QVariant(bool(extProps->supportsNonZeroFirstInstance))); + delete extProps; + } } void VulkanDeviceInfoExtensions::readPhysicalProperties_MSFT() { VkPhysicalDeviceProperties2 deviceProps2{}; @@ -1227,6 +1247,15 @@ void VulkanDeviceInfoExtensions::readPhysicalFeatures_ARM() { pushFeature2(extension, "schedulingControls", extFeatures->schedulingControls); delete extFeatures; } + if (extensionSupported("VK_ARM_render_pass_striped")) { + const char* extension("VK_ARM_render_pass_striped"); + VkPhysicalDeviceRenderPassStripedFeaturesARM* extFeatures = new VkPhysicalDeviceRenderPassStripedFeaturesARM{}; + extFeatures->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM; + deviceFeatures2 = initDeviceFeatures2(extFeatures); + vulkanContext.vkGetPhysicalDeviceFeatures2KHR(device, &deviceFeatures2); + pushFeature2(extension, "renderPassStriped", extFeatures->renderPassStriped); + delete extFeatures; + } if (extensionSupported("VK_ARM_shader_core_builtins")) { const char* extension("VK_ARM_shader_core_builtins"); VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM* extFeatures = new VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM{}; @@ -2523,6 +2552,16 @@ void VulkanDeviceInfoExtensions::readPhysicalFeatures_KHR() { pushFeature2(extension, "cooperativeMatrixRobustBufferAccess", extFeatures->cooperativeMatrixRobustBufferAccess); delete extFeatures; } + if (extensionSupported("VK_KHR_vertex_attribute_divisor")) { + const char* extension("VK_KHR_vertex_attribute_divisor"); + VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR* extFeatures = new VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR{}; + extFeatures->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR; + deviceFeatures2 = initDeviceFeatures2(extFeatures); + vulkanContext.vkGetPhysicalDeviceFeatures2KHR(device, &deviceFeatures2); + pushFeature2(extension, "vertexAttributeInstanceRateDivisor", extFeatures->vertexAttributeInstanceRateDivisor); + pushFeature2(extension, "vertexAttributeInstanceRateZeroDivisor", extFeatures->vertexAttributeInstanceRateZeroDivisor); + delete extFeatures; + } } void VulkanDeviceInfoExtensions::readPhysicalFeatures_NV() { VkPhysicalDeviceFeatures2 deviceFeatures2{}; diff --git a/VulkanDeviceInfoExtensions.h b/VulkanDeviceInfoExtensions.h index 92fa22d..8990d46 100644 --- a/VulkanDeviceInfoExtensions.h +++ b/VulkanDeviceInfoExtensions.h @@ -95,7 +95,7 @@ class VulkanDeviceInfoExtensions void readPhysicalFeatures_VALVE(); public: - const uint32_t vkHeaderVersion = 270; + const uint32_t vkHeaderVersion = 273; std::vector features2; std::vector properties2; std::vector extensions; diff --git a/extensionlist.txt b/extensionlist.txt index 9e251ab..34fa364 100644 --- a/extensionlist.txt +++ b/extensionlist.txt @@ -11,6 +11,7 @@ ARM VK_ARM_rasterization_order_attachment_access VK_ARM_shader_core_properties VK_ARM_scheduling_controls +VK_ARM_render_pass_striped VK_ARM_shader_core_builtins EXT VK_EXT_transform_feedback @@ -156,6 +157,7 @@ VK_KHR_maintenance4 VK_KHR_maintenance5 VK_KHR_ray_tracing_position_fetch VK_KHR_cooperative_matrix +VK_KHR_vertex_attribute_divisor MSFT VK_MSFT_layered_driver NV