|
|
|
|
@ -163,21 +163,23 @@ namespace AZ
|
|
|
|
|
uint32_t minorVersion = VK_VERSION_MINOR(physicalProperties.apiVersion);
|
|
|
|
|
|
|
|
|
|
// unbounded array functionality
|
|
|
|
|
VkPhysicalDeviceDescriptorIndexingFeatures descriptorIndexingFeatures = {};
|
|
|
|
|
VkPhysicalDeviceDescriptorIndexingFeaturesEXT descriptorIndexingFeatures = {};
|
|
|
|
|
descriptorIndexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
|
|
|
|
|
descriptorIndexingFeatures.shaderInputAttachmentArrayDynamicIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderUniformBufferArrayNonUniformIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderStorageImageArrayNonUniformIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderInputAttachmentArrayNonUniformIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.descriptorBindingPartiallyBound = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.descriptorBindingVariableDescriptorCount = VK_TRUE;
|
|
|
|
|
descriptorIndexingFeatures.runtimeDescriptorArray = VK_TRUE;
|
|
|
|
|
const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& physicalDeviceDescriptorIndexingFeatures =
|
|
|
|
|
physicalDevice.GetPhysicalDeviceDescriptorIndexingFeatures();
|
|
|
|
|
descriptorIndexingFeatures.shaderInputAttachmentArrayDynamicIndexing = physicalDeviceDescriptorIndexingFeatures.shaderInputAttachmentArrayDynamicIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing = physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing = physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderUniformBufferArrayNonUniformIndexing = physicalDeviceDescriptorIndexingFeatures.shaderUniformBufferArrayNonUniformIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing = physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing = physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderStorageImageArrayNonUniformIndexing = physicalDeviceDescriptorIndexingFeatures.shaderStorageImageArrayNonUniformIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderInputAttachmentArrayNonUniformIndexing = physicalDeviceDescriptorIndexingFeatures.shaderInputAttachmentArrayNonUniformIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing = physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing;
|
|
|
|
|
descriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing = physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing;
|
|
|
|
|
descriptorIndexingFeatures.descriptorBindingPartiallyBound = physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing;
|
|
|
|
|
descriptorIndexingFeatures.descriptorBindingVariableDescriptorCount = physicalDeviceDescriptorIndexingFeatures.descriptorBindingVariableDescriptorCount;
|
|
|
|
|
descriptorIndexingFeatures.runtimeDescriptorArray = physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray;
|
|
|
|
|
|
|
|
|
|
VkPhysicalDeviceDepthClipEnableFeaturesEXT depthClipEnabled = {};
|
|
|
|
|
depthClipEnabled.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
|
|
|
|
|
@ -196,7 +198,7 @@ namespace AZ
|
|
|
|
|
// If we are running Vulkan >= 1.2, then we must use VkPhysicalDeviceVulkan12Features instead
|
|
|
|
|
// of VkPhysicalDeviceShaderFloat16Int8FeaturesKHR or VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.
|
|
|
|
|
if (majorVersion >= 1 && minorVersion >= 2)
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
vulkan12Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
|
|
|
|
|
vulkan12Features.drawIndirectCount = physicalDevice.GetPhysicalDeviceVulkan12Features().drawIndirectCount;
|
|
|
|
|
vulkan12Features.shaderFloat16 = physicalDevice.GetPhysicalDeviceVulkan12Features().shaderFloat16;
|
|
|
|
|
@ -205,7 +207,7 @@ namespace AZ
|
|
|
|
|
robustness2.pNext = &vulkan12Features;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
float16Int8.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR;
|
|
|
|
|
float16Int8.shaderFloat16 = physicalDevice.GetPhysicalDeviceFloat16Int8Features().shaderFloat16;
|
|
|
|
|
|
|
|
|
|
|