Add support for VK_KHR_separate_depth_stencil_layouts

Change-Id: I1bca8f9778651a8a13100eba5f5fc7789dafc880
This commit is contained in:
Benson Joeris
2020-01-02 14:16:16 -05:00
committed by baldurk
parent 7ba61adc01
commit 6b95072687
6 changed files with 84 additions and 11 deletions
+6
View File
@@ -641,7 +641,9 @@ DECLARE_REFLECTION_STRUCT(VkAcquireNextImageInfoKHR);
DECLARE_REFLECTION_STRUCT(VkAcquireProfilingLockInfoKHR);
DECLARE_REFLECTION_STRUCT(VkApplicationInfo);
DECLARE_REFLECTION_STRUCT(VkAttachmentDescription2KHR);
DECLARE_REFLECTION_STRUCT(VkAttachmentDescriptionStencilLayoutKHR);
DECLARE_REFLECTION_STRUCT(VkAttachmentReference2KHR);
DECLARE_REFLECTION_STRUCT(VkAttachmentReferenceStencilLayoutKHR);
DECLARE_REFLECTION_STRUCT(VkAttachmentSampleLocationsEXT);
DECLARE_REFLECTION_STRUCT(VkBindBufferMemoryDeviceGroupInfo);
DECLARE_REFLECTION_STRUCT(VkBindBufferMemoryInfo);
@@ -816,6 +818,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSampleLocationsPropertiesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSamplerYcbcrConversionFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceScalarBlockLayoutFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderAtomicInt64FeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderClockFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceShaderCorePropertiesAMD);
@@ -926,7 +929,9 @@ DECLARE_REFLECTION_STRUCT(VkWriteDescriptorSet);
DECLARE_DESERIALISE_TYPE(VkAcquireNextImageInfoKHR);
DECLARE_DESERIALISE_TYPE(VkApplicationInfo);
DECLARE_DESERIALISE_TYPE(VkAttachmentDescription2KHR);
DECLARE_DESERIALISE_TYPE(VkAttachmentDescriptionStencilLayoutKHR);
DECLARE_DESERIALISE_TYPE(VkAttachmentReference2KHR);
DECLARE_DESERIALISE_TYPE(VkAttachmentReferenceStencilLayoutKHR);
DECLARE_DESERIALISE_TYPE(VkAttachmentSampleLocationsEXT);
DECLARE_DESERIALISE_TYPE(VkBindBufferMemoryDeviceGroupInfo);
DECLARE_DESERIALISE_TYPE(VkBindBufferMemoryInfo);
@@ -1090,6 +1095,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSampleLocationsPropertiesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSamplerYcbcrConversionFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceScalarBlockLayoutFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderAtomicInt64FeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderClockFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceShaderCorePropertiesAMD);
+1 -1
View File
@@ -384,7 +384,7 @@ private:
InstanceDeviceInfo m_EnabledExtensions;
const InstanceDeviceInfo &GetExtensions(VkResourceRecord *record)
const InstanceDeviceInfo &GetExtensions(VkResourceRecord *record) const
{
return record ? *record->instDevInfo : m_EnabledExtensions;
}
+4 -2
View File
@@ -485,7 +485,8 @@
DeclExt(KHR_timeline_semaphore); \
DeclExt(KHR_performance_query); \
DeclExt(KHR_buffer_device_address); \
DeclExt(EXT_tooling_info);
DeclExt(EXT_tooling_info); \
DeclExt(KHR_separate_depth_stencil_layouts);
// for simplicity and since the check itself is platform agnostic,
// these aren't protected in platform defines
@@ -575,7 +576,8 @@
CheckExt(KHR_timeline_semaphore, VKXX); \
CheckExt(KHR_performance_query, VKXX); \
CheckExt(KHR_buffer_device_address, VKXX); \
CheckExt(EXT_tooling_info, VKXX);
CheckExt(EXT_tooling_info, VKXX); \
CheckExt(KHR_separate_depth_stencil_layouts, VKXX);
#define HookInitVulkanInstanceExts_PhysDev() \
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
+6 -3
View File
@@ -74,7 +74,11 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
#define PROCESS_SIMPLE_STRUCTS() \
COPY_STRUCT(VK_STRUCTURE_TYPE_APPLICATION_INFO, VkApplicationInfo); \
COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, VkAttachmentDescription2KHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR, \
VkAttachmentDescriptionStencilLayoutKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, VkAttachmentReference2KHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR, \
VkAttachmentReferenceStencilLayoutKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, \
VkBindBufferMemoryDeviceGroupInfo); \
COPY_STRUCT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, \
@@ -255,6 +259,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkPhysicalDeviceSamplerYcbcrConversionFeatures); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, \
VkPhysicalDeviceScalarBlockLayoutFeaturesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR, \
VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, \
VkPhysicalDeviceShaderAtomicInt64FeaturesKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, \
@@ -527,8 +533,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID: \
case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID: \
case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: \
case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR: \
case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR: \
case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV: \
case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV: \
case VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX: \
@@ -587,7 +591,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR: \
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_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR: \
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: \
+59 -5
View File
@@ -958,6 +958,14 @@ SERIALISE_VK_HANDLES();
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, \
VkPhysicalDeviceShaderImageFootprintFeaturesNV) \
\
/* VK_KHR_separate_depth_stencil_layouts */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR, \
VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR, \
VkAttachmentReferenceStencilLayoutKHR) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR, \
VkAttachmentDescriptionStencilLayoutKHR) \
\
/* Surface creation structs. These would pull in dependencies on OS-specific includes. */ \
/* So treat them as unsupported. */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR) \
@@ -1025,11 +1033,6 @@ SERIALISE_VK_HANDLES();
/* VK_EXT_texture_compression_astc_hdr */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT) \
\
/* VK_KHR_separate_depth_stencil_layouts */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR) \
\
/* VK_KHR_performance_query */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR) \
@@ -7629,6 +7632,54 @@ void Deserialise(const VkPhysicalDeviceCoherentMemoryFeaturesAMD &el)
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(separateDepthStencilLayouts);
}
template <>
void Deserialise(const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkAttachmentDescriptionStencilLayoutKHR &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(stencilInitialLayout);
SERIALISE_MEMBER(stencilFinalLayout);
}
template <>
void Deserialise(const VkAttachmentDescriptionStencilLayoutKHR &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkAttachmentReferenceStencilLayoutKHR &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(stencilLayout);
}
template <>
void Deserialise(const VkAttachmentReferenceStencilLayoutKHR &el)
{
DeserialiseNext(el.pNext);
}
// pNext structs - always have deserialise for the next chain
INSTANTIATE_SERIALISE_TYPE(VkAcquireNextImageInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkApplicationInfo);
@@ -7908,6 +7959,9 @@ INSTANTIATE_SERIALISE_TYPE(VkValidationCacheCreateInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkValidationFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkValidationFlagsEXT);
INSTANTIATE_SERIALISE_TYPE(VkWriteDescriptorSet);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkAttachmentReferenceStencilLayoutKHR);
INSTANTIATE_SERIALISE_TYPE(VkAttachmentDescriptionStencilLayoutKHR);
// plain structs with no next chain
INSTANTIATE_SERIALISE_TYPE(VkAllocationCallbacks);
@@ -2336,6 +2336,14 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
CHECK_PHYS_EXT_FEATURE(timelineSemaphore);
}
END_PHYS_EXT_CHECK();
BEGIN_PHYS_EXT_CHECK(
VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR);
{
CHECK_PHYS_EXT_FEATURE(separateDepthStencilLayouts);
}
END_PHYS_EXT_CHECK();
}
if(availFeatures.depthClamp)