mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-22 21:55:52 +00:00
Support VK_EXT_depth_clip_control
This extension adds a viewport pipeline state: negativeOneToOne
This commit is contained in:
committed by
Baldur Karlsson
parent
1f530a2564
commit
390e610687
@@ -953,6 +953,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceConditionalRenderingFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceConservativeRasterizationPropertiesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceCustomBorderColorFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceCustomBorderColorPropertiesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDepthClipControlFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDepthClipEnableFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDepthStencilResolveProperties);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDescriptorIndexingFeatures)
|
||||
@@ -1101,6 +1102,7 @@ DECLARE_REFLECTION_STRUCT(VkPipelineTessellationDomainOriginStateCreateInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkPipelineTessellationStateCreateInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkPipelineVertexInputDivisorStateCreateInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPipelineVertexInputStateCreateInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkPipelineViewportDepthClipControlCreateInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPipelineViewportStateCreateInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkPresentIdKHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkPresentInfoKHR);
|
||||
@@ -1331,6 +1333,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceConditionalRenderingFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceConservativeRasterizationPropertiesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceCustomBorderColorFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceCustomBorderColorPropertiesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDepthClipControlFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDepthClipEnableFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDepthStencilResolveProperties);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDescriptorIndexingFeatures)
|
||||
@@ -1479,6 +1482,7 @@ DECLARE_DESERIALISE_TYPE(VkPipelineTessellationDomainOriginStateCreateInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkPipelineTessellationStateCreateInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkPipelineVertexInputDivisorStateCreateInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPipelineVertexInputStateCreateInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkPipelineViewportDepthClipControlCreateInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPipelineViewportStateCreateInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkPresentIdKHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkPresentInfoKHR);
|
||||
|
||||
@@ -908,6 +908,9 @@ static const VkExtensionProperties supportedExtensions[] = {
|
||||
{
|
||||
VK_EXT_DEBUG_UTILS_EXTENSION_NAME, VK_EXT_DEBUG_UTILS_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION,
|
||||
},
|
||||
|
||||
@@ -512,6 +512,7 @@
|
||||
DeclExt(EXT_full_screen_exclusive); \
|
||||
DeclExt(EXT_hdr_metadata); \
|
||||
DeclExt(AMD_display_native_hdr); \
|
||||
DeclExt(EXT_depth_clip_control); \
|
||||
DeclExt(EXT_depth_clip_enable); \
|
||||
DeclExt(KHR_pipeline_executable_properties); \
|
||||
DeclExt(AMD_negative_viewport_height); \
|
||||
@@ -623,6 +624,7 @@
|
||||
CheckExt(EXT_buffer_device_address, VKXX); \
|
||||
CheckExt(EXT_hdr_metadata, VKXX); \
|
||||
CheckExt(AMD_display_native_hdr, VKXX); \
|
||||
CheckExt(EXT_depth_clip_control, VKXX); \
|
||||
CheckExt(EXT_depth_clip_enable, VKXX); \
|
||||
CheckExt(KHR_pipeline_executable_properties, VKXX); \
|
||||
CheckExt(AMD_negative_viewport_height, VKXX); \
|
||||
|
||||
@@ -866,6 +866,16 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *resourceMan,
|
||||
}
|
||||
}
|
||||
|
||||
// VkPipelineViewportDepthClipControlCreateInfoEXT
|
||||
negativeOneToOne = false;
|
||||
|
||||
const VkPipelineViewportDepthClipControlCreateInfoEXT *depthClipControl =
|
||||
(const VkPipelineViewportDepthClipControlCreateInfoEXT *)FindNextStruct(
|
||||
pCreateInfo->pViewportState,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT);
|
||||
if(depthClipControl)
|
||||
negativeOneToOne = depthClipControl->negativeOneToOne != VK_FALSE;
|
||||
|
||||
const VkPipelineLibraryCreateInfoKHR *libraryReference =
|
||||
(const VkPipelineLibraryCreateInfoKHR *)FindNextStruct(
|
||||
pCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR);
|
||||
@@ -934,6 +944,8 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *resourceMan,
|
||||
discardRectangles = pipeInfo.discardRectangles;
|
||||
discardMode = pipeInfo.discardMode;
|
||||
|
||||
negativeOneToOne = pipeInfo.negativeOneToOne;
|
||||
|
||||
flags |= pipeInfo.flags;
|
||||
}
|
||||
|
||||
|
||||
@@ -429,6 +429,9 @@ struct VulkanCreationInfo
|
||||
// VkPipelineFragmentShadingRateCreateInfoKHR
|
||||
VkExtent2D shadingRate;
|
||||
VkFragmentShadingRateCombinerOpKHR shadingRateCombiners[2];
|
||||
|
||||
// VkPipelineViewportDepthClipControlCreateInfoEXT
|
||||
bool negativeOneToOne;
|
||||
};
|
||||
std::unordered_map<ResourceId, Pipeline> m_Pipeline;
|
||||
|
||||
|
||||
@@ -227,6 +227,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
VkPhysicalDeviceCustomBorderColorPropertiesEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, \
|
||||
VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, \
|
||||
VkPhysicalDeviceDepthClipControlFeaturesEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, \
|
||||
VkPhysicalDeviceDepthClipEnableFeaturesEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, \
|
||||
@@ -501,6 +503,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
VkPipelineVertexInputDivisorStateCreateInfoEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, \
|
||||
VkPipelineVertexInputStateCreateInfo); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT, \
|
||||
VkPipelineViewportDepthClipControlCreateInfoEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, \
|
||||
VkPipelineViewportStateCreateInfo); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_ID_KHR, VkPresentIdKHR); \
|
||||
@@ -811,7 +815,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV: \
|
||||
@@ -881,7 +884,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: \
|
||||
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: \
|
||||
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: \
|
||||
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: \
|
||||
|
||||
@@ -618,6 +618,12 @@ SERIALISE_VK_HANDLES();
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, \
|
||||
VkDebugUtilsMessengerCreateInfoEXT) \
|
||||
\
|
||||
/* VK_EXT_depth_clip_control */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, \
|
||||
VkPhysicalDeviceDepthClipControlFeaturesEXT) \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT, \
|
||||
VkPipelineViewportDepthClipControlCreateInfoEXT) \
|
||||
\
|
||||
/* VK_EXT_depth_clip_enable */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, \
|
||||
VkPhysicalDeviceDepthClipEnableFeaturesEXT) \
|
||||
@@ -1349,10 +1355,6 @@ SERIALISE_VK_HANDLES();
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT) \
|
||||
\
|
||||
/* VK_EXT_depth_clip_control */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT) \
|
||||
\
|
||||
/* VK_EXT_device_memory_report */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT) \
|
||||
@@ -8419,6 +8421,38 @@ void Deserialise(const VkPipelineDiscardRectangleStateCreateInfoEXT &el)
|
||||
delete[] el.pDiscardRectangles;
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceDepthClipControlFeaturesEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() ||
|
||||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(depthClipControl);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkPhysicalDeviceDepthClipControlFeaturesEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPipelineViewportDepthClipControlCreateInfoEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() ||
|
||||
el.sType == VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(negativeOneToOne);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkPipelineViewportDepthClipControlCreateInfoEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceDepthClipEnableFeaturesEXT &el)
|
||||
{
|
||||
@@ -10617,6 +10651,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceConditionalRenderingFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceConservativeRasterizationPropertiesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceCustomBorderColorFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceCustomBorderColorPropertiesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDepthClipControlFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDepthClipEnableFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDepthStencilResolveProperties);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDescriptorIndexingFeatures)
|
||||
@@ -10764,6 +10799,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPipelineTessellationDomainOriginStateCreateInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPipelineTessellationStateCreateInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPipelineVertexInputDivisorStateCreateInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPipelineVertexInputStateCreateInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPipelineViewportDepthClipControlCreateInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPipelineViewportStateCreateInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPresentIdKHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPresentInfoKHR);
|
||||
|
||||
@@ -962,6 +962,18 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
|
||||
ret.pNext = &shadingRate;
|
||||
}
|
||||
|
||||
static VkPipelineViewportDepthClipControlCreateInfoEXT depthClipControl = {
|
||||
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
|
||||
};
|
||||
|
||||
if(m_pDriver->GetExtensions(GetRecord(m_Device)).ext_EXT_depth_clip_control)
|
||||
{
|
||||
depthClipControl.negativeOneToOne = pipeInfo.negativeOneToOne;
|
||||
|
||||
depthClipControl.pNext = vp.pNext;
|
||||
vp.pNext = &depthClipControl;
|
||||
}
|
||||
|
||||
// never create derivatives
|
||||
ret.flags &= ~VK_PIPELINE_CREATE_DERIVATIVE_BIT;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user