Add support for VK_EXT_shader_atomic_float2

This commit is contained in:
baldurk
2021-10-21 17:04:31 +01:00
parent 0995dd404f
commit c48764f222
6 changed files with 58 additions and 5 deletions
+1 -1
View File
@@ -69,6 +69,7 @@ Maintainers can update this file by updating vk.xml in this folder and running `
* `VK_EXT_scalar_block_layout`
* `VK_EXT_separate_stencil_usage`
* `VK_EXT_shader_atomic_float`
* `VK_EXT_shader_atomic_float2`
* `VK_EXT_shader_demote_to_helper_invocation`
* `VK_EXT_shader_image_atomic_int64`
* `VK_EXT_shader_stencil_export`
@@ -229,7 +230,6 @@ Ray tracing extensions are now standard and will likely be supported at some poi
* `VK_EXT_primitive_topology_list_restart`
* `VK_EXT_provoking_vertex`
* `VK_EXT_rgba10x6_formats`
* `VK_EXT_shader_atomic_float2`
* `VK_EXT_texture_compression_astc_hdr`
* `VK_EXT_vertex_input_dynamic_state`
* `VK_EXT_ycbcr_2plane_444_formats`
+2
View File
@@ -982,6 +982,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSamplerYcbcrConversionFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceScalarBlockLayoutFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderAtomicInt64Features);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderClockFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderCorePropertiesAMD);
@@ -1322,6 +1323,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSamplerYcbcrConversionFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceScalarBlockLayoutFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderAtomicInt64Features);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderClockFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderCorePropertiesAMD);
+3
View File
@@ -1014,6 +1014,9 @@ static const VkExtensionProperties supportedExtensions[] = {
{
VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION,
},
{
VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION,
},
{
VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME,
VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION,
+2 -1
View File
@@ -333,6 +333,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkPhysicalDeviceShaderAtomicInt64Features); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, \
VkPhysicalDeviceShaderAtomicFloatFeaturesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, \
VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, \
VkPhysicalDeviceShaderCorePropertiesAMD); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, \
@@ -756,7 +758,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: \
+32 -3
View File
@@ -752,6 +752,10 @@ SERIALISE_VK_HANDLES();
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, \
VkPhysicalDeviceShaderAtomicFloatFeaturesEXT) \
\
/* VK_EXT_shader_atomic_float2 */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, \
VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT) \
\
/* VK_EXT_shader_demote_to_helper_invocation */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, \
VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT) \
@@ -1291,9 +1295,6 @@ SERIALISE_VK_HANDLES();
/* VK_EXT_rgba10x6_formats */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT) \
\
/* VK_EXT_shader_atomic_float2 */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT) \
\
/* VK_EXT_texture_compression_astc_hdr */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT) \
\
@@ -8203,6 +8204,33 @@ void Deserialise(const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &el)
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(shaderBufferFloat16Atomics);
SERIALISE_MEMBER(shaderBufferFloat16AtomicAdd);
SERIALISE_MEMBER(shaderBufferFloat16AtomicMinMax);
SERIALISE_MEMBER(shaderBufferFloat32AtomicMinMax);
SERIALISE_MEMBER(shaderBufferFloat64AtomicMinMax);
SERIALISE_MEMBER(shaderSharedFloat16Atomics);
SERIALISE_MEMBER(shaderSharedFloat16AtomicAdd);
SERIALISE_MEMBER(shaderSharedFloat16AtomicMinMax);
SERIALISE_MEMBER(shaderSharedFloat32AtomicMinMax);
SERIALISE_MEMBER(shaderSharedFloat64AtomicMinMax);
SERIALISE_MEMBER(shaderImageFloat32AtomicMinMax);
SERIALISE_MEMBER(sparseImageFloat32AtomicMinMax);
}
template <>
void Deserialise(const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &el)
{
@@ -9697,6 +9725,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSamplerYcbcrConversionFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceScalarBlockLayoutFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceShaderAtomicInt64Features);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceShaderClockFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceShaderCorePropertiesAMD);
@@ -2760,6 +2760,24 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
CHECK_PHYS_EXT_FEATURE(shaderSubgroupUniformControlFlow);
}
END_PHYS_EXT_CHECK();
BEGIN_PHYS_EXT_CHECK(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT);
{
CHECK_PHYS_EXT_FEATURE(shaderBufferFloat16Atomics);
CHECK_PHYS_EXT_FEATURE(shaderBufferFloat16AtomicAdd);
CHECK_PHYS_EXT_FEATURE(shaderBufferFloat16AtomicMinMax);
CHECK_PHYS_EXT_FEATURE(shaderBufferFloat32AtomicMinMax);
CHECK_PHYS_EXT_FEATURE(shaderBufferFloat64AtomicMinMax);
CHECK_PHYS_EXT_FEATURE(shaderSharedFloat16Atomics);
CHECK_PHYS_EXT_FEATURE(shaderSharedFloat16AtomicAdd);
CHECK_PHYS_EXT_FEATURE(shaderSharedFloat16AtomicMinMax);
CHECK_PHYS_EXT_FEATURE(shaderSharedFloat32AtomicMinMax);
CHECK_PHYS_EXT_FEATURE(shaderSharedFloat64AtomicMinMax);
CHECK_PHYS_EXT_FEATURE(shaderImageFloat32AtomicMinMax);
CHECK_PHYS_EXT_FEATURE(sparseImageFloat32AtomicMinMax);
}
END_PHYS_EXT_CHECK();
}
if(availFeatures.depthClamp)