Add support for new KHR vulkan extensions

* VK_KHR_depth_stencil_resolve
* VK_KHR_shader_float16_int8
* VK_KHR_shader_float_controls
* VK_KHR_swapchain_mutable_format
This commit is contained in:
baldurk
2019-01-14 15:56:33 +00:00
parent 6508bffcda
commit f3092b7df5
5 changed files with 142 additions and 11 deletions
+8
View File
@@ -675,6 +675,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDevice8BitStorageFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceASTCDecodeFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceConditionalRenderingFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceConservativeRasterizationPropertiesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDepthStencilResolvePropertiesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDriverPropertiesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExternalBufferInfo);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExternalFenceInfo);
@@ -700,6 +701,8 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderAtomicInt64FeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderCorePropertiesAMD);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderDrawParameterFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderImageFootprintFeaturesNV);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceFloat16Int8FeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceFloatControlsPropertiesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSparseImageFormatInfo2);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSubgroupProperties);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSurfaceInfo2KHR);
@@ -751,6 +754,7 @@ DECLARE_REFLECTION_STRUCT(VkSubmitInfo);
DECLARE_REFLECTION_STRUCT(VkSubpassBeginInfoKHR);
DECLARE_REFLECTION_STRUCT(VkSubpassDependency2KHR);
DECLARE_REFLECTION_STRUCT(VkSubpassDescription2KHR);
DECLARE_REFLECTION_STRUCT(VkSubpassDescriptionDepthStencilResolveKHR);
DECLARE_REFLECTION_STRUCT(VkSubpassEndInfoKHR);
DECLARE_REFLECTION_STRUCT(VkSurfaceCapabilities2EXT);
DECLARE_REFLECTION_STRUCT(VkSurfaceCapabilities2KHR);
@@ -871,6 +875,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDevice8BitStorageFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceASTCDecodeFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceConditionalRenderingFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceConservativeRasterizationPropertiesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDepthStencilResolvePropertiesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDriverPropertiesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExternalBufferInfo);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExternalFenceInfo);
@@ -896,6 +901,8 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderAtomicInt64FeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderCorePropertiesAMD);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderDrawParameterFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderImageFootprintFeaturesNV);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceFloat16Int8FeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceFloatControlsPropertiesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSparseImageFormatInfo2);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSubgroupProperties);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSurfaceInfo2KHR);
@@ -947,6 +954,7 @@ DECLARE_DESERIALISE_TYPE(VkSubmitInfo);
DECLARE_DESERIALISE_TYPE(VkSubpassBeginInfoKHR);
DECLARE_DESERIALISE_TYPE(VkSubpassDependency2KHR);
DECLARE_DESERIALISE_TYPE(VkSubpassDescription2KHR);
DECLARE_DESERIALISE_TYPE(VkSubpassDescriptionDepthStencilResolveKHR);
DECLARE_DESERIALISE_TYPE(VkSubpassEndInfoKHR);
DECLARE_DESERIALISE_TYPE(VkSurfaceCapabilities2EXT);
DECLARE_DESERIALISE_TYPE(VkSurfaceCapabilities2KHR);
+12
View File
@@ -740,6 +740,9 @@ static const VkExtensionProperties supportedExtensions[] = {
{
VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME, VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION,
},
{
VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION,
},
{
VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME,
VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION,
@@ -862,6 +865,12 @@ static const VkExtensionProperties supportedExtensions[] = {
{
VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION,
},
{
VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION,
},
{
VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION,
},
{
VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME, VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION,
},
@@ -875,6 +884,9 @@ static const VkExtensionProperties supportedExtensions[] = {
{
VK_KHR_SWAPCHAIN_EXTENSION_NAME, VK_KHR_SWAPCHAIN_SPEC_VERSION,
},
{
VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME, VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION,
},
{
VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION,
},
+102 -10
View File
@@ -517,6 +517,12 @@ SERIALISE_VK_HANDLES();
PNEXT_STRUCT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, VkMemoryDedicatedRequirements) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, VkMemoryDedicatedAllocateInfo) \
\
/* VK_KHR_depth_stencil_resolve */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR, \
VkPhysicalDeviceDepthStencilResolvePropertiesKHR) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR, \
VkSubpassDescriptionDepthStencilResolveKHR) \
\
/* VK_KHR_descriptor_update_template */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, \
VkDescriptorUpdateTemplateCreateInfo) \
@@ -673,6 +679,14 @@ SERIALISE_VK_HANDLES();
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, \
VkPhysicalDeviceShaderAtomicInt64FeaturesKHR) \
\
/* VK_KHR_shader_float16_int8 */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, \
VkPhysicalDeviceFloat16Int8FeaturesKHR) \
\
/* VK_KHR_shader_float_controls */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR, \
VkPhysicalDeviceFloatControlsPropertiesKHR) \
\
/* VK_KHR_shared_presentable_image */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR, \
VkSharedPresentSurfaceCapabilitiesKHR) \
@@ -812,16 +826,6 @@ SERIALISE_VK_HANDLES();
/* VK_GOOGLE_display_timing */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE) \
\
/* VK_KHR_depth_stencil_resolve */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR) \
\
/* VK_KHR_shader_float16_int8 */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR) \
\
/* VK_KHR_shader_float_controls */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR) \
\
/* VK_NV_clip_space_w_scaling */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV) \
\
@@ -3391,6 +3395,43 @@ void Deserialise(const VkPhysicalDeviceConservativeRasterizationPropertiesEXT &e
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceDepthStencilResolvePropertiesKHR &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(supportedDepthResolveModes);
SERIALISE_MEMBER(supportedStencilResolveModes);
SERIALISE_MEMBER(independentResolveNone);
SERIALISE_MEMBER(independentResolve);
}
template <>
void Deserialise(const VkPhysicalDeviceDepthStencilResolvePropertiesKHR &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkSubpassDescriptionDepthStencilResolveKHR &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(depthResolveMode);
SERIALISE_MEMBER(stencilResolveMode);
SERIALISE_MEMBER_OPT(pDepthStencilResolveAttachment);
}
template <>
void Deserialise(const VkSubpassDescriptionDepthStencilResolveKHR &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPipelineRasterizationConservativeStateCreateInfoEXT &el)
{
@@ -5034,6 +5075,55 @@ void Deserialise(const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR &el)
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceFloat16Int8FeaturesKHR &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(shaderFloat16);
SERIALISE_MEMBER(shaderInt8);
}
template <>
void Deserialise(const VkPhysicalDeviceFloat16Int8FeaturesKHR &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceFloatControlsPropertiesKHR &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(separateDenormSettings);
SERIALISE_MEMBER(separateRoundingModeSettings);
SERIALISE_MEMBER(shaderSignedZeroInfNanPreserveFloat16);
SERIALISE_MEMBER(shaderSignedZeroInfNanPreserveFloat32);
SERIALISE_MEMBER(shaderSignedZeroInfNanPreserveFloat64);
SERIALISE_MEMBER(shaderDenormPreserveFloat16);
SERIALISE_MEMBER(shaderDenormPreserveFloat32);
SERIALISE_MEMBER(shaderDenormPreserveFloat64);
SERIALISE_MEMBER(shaderDenormFlushToZeroFloat16);
SERIALISE_MEMBER(shaderDenormFlushToZeroFloat32);
SERIALISE_MEMBER(shaderDenormFlushToZeroFloat64);
SERIALISE_MEMBER(shaderRoundingModeRTEFloat16);
SERIALISE_MEMBER(shaderRoundingModeRTEFloat32);
SERIALISE_MEMBER(shaderRoundingModeRTEFloat64);
SERIALISE_MEMBER(shaderRoundingModeRTZFloat16);
SERIALISE_MEMBER(shaderRoundingModeRTZFloat32);
SERIALISE_MEMBER(shaderRoundingModeRTZFloat64);
}
template <>
void Deserialise(const VkPhysicalDeviceFloatControlsPropertiesKHR &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkSamplerYcbcrConversionInfo &el)
{
@@ -5876,6 +5966,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevice16BitStorageFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevice8BitStorageFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceASTCDecodeFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceConservativeRasterizationPropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDepthStencilResolvePropertiesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDriverPropertiesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExternalBufferInfo);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExternalFenceInfo);
@@ -5952,6 +6043,7 @@ INSTANTIATE_SERIALISE_TYPE(VkSubmitInfo);
INSTANTIATE_SERIALISE_TYPE(VkSubpassBeginInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkSubpassDependency2KHR);
INSTANTIATE_SERIALISE_TYPE(VkSubpassDescription2KHR);
INSTANTIATE_SERIALISE_TYPE(VkSubpassDescriptionDepthStencilResolveKHR);
INSTANTIATE_SERIALISE_TYPE(VkSubpassEndInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkSurfaceCapabilities2EXT);
INSTANTIATE_SERIALISE_TYPE(VkSurfaceCapabilities2KHR);
+14
View File
@@ -518,6 +518,20 @@ std::string DoStringise(const VkAttachmentDescriptionFlagBits &el)
END_BITFIELD_STRINGISE();
}
template <>
std::string DoStringise(const VkResolveModeFlagBitsKHR &el)
{
BEGIN_BITFIELD_STRINGISE(VkResolveModeFlagBitsKHR);
{
STRINGISE_BITFIELD_VALUE(VK_RESOLVE_MODE_NONE_KHR);
STRINGISE_BITFIELD_BIT(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR);
STRINGISE_BITFIELD_BIT(VK_RESOLVE_MODE_AVERAGE_BIT_KHR);
STRINGISE_BITFIELD_BIT(VK_RESOLVE_MODE_MIN_BIT_KHR);
STRINGISE_BITFIELD_BIT(VK_RESOLVE_MODE_MAX_BIT_KHR);
}
END_BITFIELD_STRINGISE();
}
template <>
std::string DoStringise(const VkSampleCountFlagBits &el)
{
@@ -327,10 +327,15 @@ bool WrappedVulkan::Serialise_vkCreateSwapchainKHR(SerialiserType &ser, VkDevice
swapinfo.images.resize(NumImages);
VkImageCreateFlags imageFlags = 0;
if(CreateInfo.flags & VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR)
imageFlags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
const VkImageCreateInfo imInfo = {
VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
NULL,
0,
imageFlags,
VK_IMAGE_TYPE_2D,
CreateInfo.imageFormat,
{CreateInfo.imageExtent.width, CreateInfo.imageExtent.height, 1},