diff --git a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp index 05b624a86..8e848cd4d 100644 --- a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp @@ -676,6 +676,7 @@ void VulkanPipelineStateViewer::clearState() b->setEnabled(false); const QPixmap &tick = Pixmaps::tick(this); + const QPixmap &cross = Pixmaps::cross(this); ui->fillMode->setText(tr("Solid", "Fill Mode")); ui->cullMode->setText(tr("Front", "Cull Mode")); @@ -686,6 +687,7 @@ void VulkanPipelineStateViewer::clearState() ui->slopeScaledBias->setText(lit("0.0")); ui->depthClamp->setPixmap(tick); + ui->depthClip->setPixmap(cross); ui->rasterizerDiscard->setPixmap(tick); ui->lineWidth->setText(lit("1.0")); @@ -2094,6 +2096,7 @@ void VulkanPipelineStateViewer::setState() ui->slopeScaledBias->setText(Formatter::Format(state.rasterizer.slopeScaledDepthBias)); ui->depthClamp->setPixmap(state.rasterizer.depthClampEnable ? tick : cross); + ui->depthClip->setPixmap(state.rasterizer.depthClipEnable ? tick : cross); ui->rasterizerDiscard->setPixmap(state.rasterizer.rasterizerDiscardEnable ? tick : cross); ui->lineWidth->setText(Formatter::Format(state.rasterizer.lineWidth)); @@ -3164,9 +3167,15 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const VKPipe:: xml.writeStartElement(lit("p")); xml.writeEndElement(); - m_Common.exportHTMLTable(xml, {tr("Depth Clip Enable"), tr("Rasterizer Discard Enable")}, - {rs.depthClampEnable ? tr("Yes") : tr("No"), - rs.rasterizerDiscardEnable ? tr("Yes") : tr("No")}); + m_Common.exportHTMLTable( + xml, + { + tr("Depth Clamp Enable"), tr("Depth Clip Enable"), tr("Rasterizer Discard Enable"), + }, + { + rs.depthClampEnable ? tr("Yes") : tr("No"), rs.depthClipEnable ? tr("Yes") : tr("No"), + rs.rasterizerDiscardEnable ? tr("Yes") : tr("No"), + }); xml.writeStartElement(lit("p")); xml.writeEndElement(); diff --git a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui index 8e4f9fc0a..7373a1ece 100644 --- a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui @@ -1794,6 +1794,86 @@ 0 + + + + + 12 + + + + Disabled + + + Qt::AlignCenter + + + 4 + + + + + + + Overestimate Size: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + + + + + + 12 + + + + 0.00 + + + Qt::AlignCenter + + + 4 + + + + + + + Multiview: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + + + + + + 12 + + + + TextLabel + + + Qt::AlignCenter + + + 4 + + + @@ -1802,6 +1882,9 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + true + @@ -1999,19 +2082,6 @@ - - - - Rasterizer Discard: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - @@ -2025,22 +2095,6 @@ - - - - - - - :/cross.png - - - Qt::AlignCenter - - - 4 - - - @@ -2077,7 +2131,7 @@ - + Qt::Horizontal @@ -2109,15 +2163,13 @@ - - - - - 12 - - + + - Disabled + + + + :/cross.png Qt::AlignCenter @@ -2127,53 +2179,36 @@ - - + + - Overestimate Size: + Rasterizer Discard: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 12 - - - - 0.00 - - - Qt::AlignCenter - - - 4 + + true - - + + - Multiview: + Depth Clip: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + true + - - - - - 12 - - - - TextLabel + + + + :/cross.png Qt::AlignCenter diff --git a/renderdoc/api/replay/vk_pipestate.h b/renderdoc/api/replay/vk_pipestate.h index e948d318a..992536c62 100644 --- a/renderdoc/api/replay/vk_pipestate.h +++ b/renderdoc/api/replay/vk_pipestate.h @@ -655,9 +655,16 @@ struct Rasterizer Rasterizer(const Rasterizer &) = default; DOCUMENT(R"(``True`` if pixels outside of the near and far depth planes should be clamped and -to ``0.0`` to ``1.0`` and not clipped. +to ``0.0`` to ``1.0``. )"); bool depthClampEnable = false; + DOCUMENT(R"(``True`` if pixels outside of the near and far depth planes should be clipped. + +.. note:: + In Vulkan 1.0 this value was implicitly set to the opposite of :data:`depthClampEnable`, but with + later extensions & versions it can be set independently. +)"); + bool depthClipEnable = true; DOCUMENT("``True`` if primitives should be discarded during rasterization."); bool rasterizerDiscardEnable = false; DOCUMENT(R"(``True`` if counter-clockwise polygons are front-facing. diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index 396366002..9a618f5f0 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -690,6 +690,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDevice8BitStorageFeaturesKHR); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceASTCDecodeFeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceConditionalRenderingFeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceConservativeRasterizationPropertiesEXT); +DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDepthClipEnableFeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDepthStencilResolvePropertiesKHR); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDiscardRectanglePropertiesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceDriverPropertiesKHR); @@ -745,6 +746,7 @@ DECLARE_REFLECTION_STRUCT(VkPipelineInputAssemblyStateCreateInfo); DECLARE_REFLECTION_STRUCT(VkPipelineLayoutCreateInfo); DECLARE_REFLECTION_STRUCT(VkPipelineMultisampleStateCreateInfo); DECLARE_REFLECTION_STRUCT(VkPipelineRasterizationConservativeStateCreateInfoEXT); +DECLARE_REFLECTION_STRUCT(VkPipelineRasterizationDepthClipStateCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkPipelineRasterizationStateCreateInfo); DECLARE_REFLECTION_STRUCT(VkPipelineRasterizationStateStreamCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkPipelineSampleLocationsStateCreateInfoEXT); @@ -911,6 +913,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDevice8BitStorageFeaturesKHR); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceASTCDecodeFeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceConditionalRenderingFeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceConservativeRasterizationPropertiesEXT); +DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDepthClipEnableFeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDepthStencilResolvePropertiesKHR); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDiscardRectanglePropertiesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceDriverPropertiesKHR); @@ -966,6 +969,7 @@ DECLARE_DESERIALISE_TYPE(VkPipelineInputAssemblyStateCreateInfo); DECLARE_DESERIALISE_TYPE(VkPipelineLayoutCreateInfo); DECLARE_DESERIALISE_TYPE(VkPipelineMultisampleStateCreateInfo); DECLARE_DESERIALISE_TYPE(VkPipelineRasterizationConservativeStateCreateInfoEXT); +DECLARE_DESERIALISE_TYPE(VkPipelineRasterizationDepthClipStateCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkPipelineRasterizationStateCreateInfo); DECLARE_DESERIALISE_TYPE(VkPipelineRasterizationStateStreamCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkPipelineSampleLocationsStateCreateInfoEXT); diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index faaf6c774..f3c8cafe2 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -654,6 +654,9 @@ static const VkExtensionProperties supportedExtensions[] = { { VK_EXT_DEBUG_UTILS_EXTENSION_NAME, VK_EXT_DEBUG_UTILS_SPEC_VERSION, }, + { + VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION, + }, { VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME, VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION, }, diff --git a/renderdoc/driver/vulkan/vk_info.cpp b/renderdoc/driver/vulkan/vk_info.cpp index d45f28e0d..0d0bc189b 100644 --- a/renderdoc/driver/vulkan/vk_info.cpp +++ b/renderdoc/driver/vulkan/vk_info.cpp @@ -375,6 +375,18 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *resourceMan, Vulk if(rastStream) rasterizationStream = rastStream->rasterizationStream; + // VkPipelineRasterizationStateStreamCreateInfoEXT + + // default to the opposite of depthClampEnable + depthClipEnable = !depthClampEnable; + + const VkPipelineRasterizationDepthClipStateCreateInfoEXT *depthClipState = + (const VkPipelineRasterizationDepthClipStateCreateInfoEXT *)FindNextStruct( + pCreateInfo->pRasterizationState, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT); + if(depthClipState) + depthClipEnable = depthClipState->depthClipEnable != VK_FALSE; + // VkPipelineRasterizationConservativeStateCreateInfoEXT conservativeRasterizationMode = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT; extraPrimitiveOverestimationSize = 0.0f; diff --git a/renderdoc/driver/vulkan/vk_info.h b/renderdoc/driver/vulkan/vk_info.h index 7efcd4c82..f6b9b1919 100644 --- a/renderdoc/driver/vulkan/vk_info.h +++ b/renderdoc/driver/vulkan/vk_info.h @@ -217,6 +217,9 @@ struct VulkanCreationInfo // VkPipelineRasterizationStateStreamCreateInfoEXT uint32_t rasterizationStream; + // VkPipelineRasterizationStateStreamCreateInfoEXT + bool depthClipEnable; + // VkPipelineRasterizationConservativeStateCreateInfoEXT VkConservativeRasterizationModeEXT conservativeRasterizationMode; float extraPrimitiveOverestimationSize; diff --git a/renderdoc/driver/vulkan/vk_next_chains.cpp b/renderdoc/driver/vulkan/vk_next_chains.cpp index af403f13b..a511d2deb 100644 --- a/renderdoc/driver/vulkan/vk_next_chains.cpp +++ b/renderdoc/driver/vulkan/vk_next_chains.cpp @@ -160,6 +160,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, VkPhysicalDeviceConservativeRasterizationPropertiesEXT); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, \ VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, \ + VkPhysicalDeviceDepthClipEnableFeaturesEXT) \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR, \ VkPhysicalDeviceDepthStencilResolvePropertiesKHR); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, \ @@ -248,6 +250,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, VkPipelineCreationFeedbackCreateInfoEXT); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, \ VkPipelineColorBlendStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT, \ + VkPipelineRasterizationDepthClipStateCreateInfoEXT); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, \ VkPipelineDepthStencilStateCreateInfo); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT, \ @@ -476,7 +480,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: \ 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_DEPTH_CLIP_ENABLE_FEATURES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: \ @@ -497,7 +500,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: \ case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV: \ case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV: \ - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: \ case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: \ case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: \ case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: \ diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index dc0ff6f9c..6a2b56418 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -1076,6 +1076,7 @@ void VulkanReplay::SavePipelineState() // Rasterizer m_VulkanPipelineState.rasterizer.depthClampEnable = p.depthClampEnable; + m_VulkanPipelineState.rasterizer.depthClipEnable = p.depthClipEnable; m_VulkanPipelineState.rasterizer.rasterizerDiscardEnable = p.rasterizerDiscardEnable; m_VulkanPipelineState.rasterizer.frontCCW = p.frontFace == VK_FRONT_FACE_COUNTER_CLOCKWISE; diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 37c8f3bfd..1893ce8a4 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -152,6 +152,7 @@ DECL_VKFLAG_EXT(VkSurfaceCounter, EXT); DECL_VKFLAG_EXT(VkSurfaceTransform, KHR); DECL_VKFLAG_EXT(VkSwapchainCreate, KHR); DECL_VKFLAG_EMPTY_EXT(VkValidationCacheCreate, EXT); +DECL_VKFLAG_EMPTY_EXT(VkPipelineRasterizationDepthClipStateCreate, EXT); // serialise a member as flags - cast to the Bits enum for serialisation so the stringification // picks up the bitfield and doesn't treat it as uint32_t. Then we rename the type back to the base @@ -448,6 +449,12 @@ SERIALISE_VK_HANDLES(); PNEXT_STRUCT(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, \ VkDebugUtilsMessengerCreateInfoEXT) \ \ + /* VK_EXT_depth_clip_enable */ \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, \ + VkPhysicalDeviceDepthClipEnableFeaturesEXT) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT, \ + VkPipelineRasterizationDepthClipStateCreateInfoEXT) \ + \ /* VK_EXT_discard_rectangles */ \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, \ VkPhysicalDeviceDiscardRectanglePropertiesEXT) \ @@ -821,10 +828,6 @@ SERIALISE_VK_HANDLES(); PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT) \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT) \ \ - /* VK_EXT_depth_clip_enable */ \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT) \ - \ /* VK_EXT_descriptor_indexing */ \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT) \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT) \ @@ -5154,6 +5157,40 @@ void Deserialise(const VkPipelineDiscardRectangleStateCreateInfoEXT &el) delete[] el.pDiscardRectangles; } +template +void DoSerialise(SerialiserType &ser, VkPhysicalDeviceDepthClipEnableFeaturesEXT &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(depthClipEnable); +} + +template <> +void Deserialise(const VkPhysicalDeviceDepthClipEnableFeaturesEXT &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkPipelineRasterizationDepthClipStateCreateInfoEXT &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER_VKFLAGS(VkPipelineRasterizationDepthClipStateCreateFlagsEXT, flags); + + SERIALISE_MEMBER(depthClipEnable); +} + +template <> +void Deserialise(const VkPipelineRasterizationDepthClipStateCreateInfoEXT &el) +{ + DeserialiseNext(el.pNext); +} + template void DoSerialise(SerialiserType &ser, VkPipelineCreationFeedbackEXT &el) { @@ -6436,6 +6473,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevice8BitStorageFeaturesKHR); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceASTCDecodeFeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceConservativeRasterizationPropertiesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDepthStencilResolvePropertiesKHR); +INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDepthClipEnableFeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDiscardRectanglePropertiesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDriverPropertiesKHR); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExternalBufferInfo); @@ -6488,6 +6526,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPipelineInputAssemblyStateCreateInfo); INSTANTIATE_SERIALISE_TYPE(VkPipelineLayoutCreateInfo); INSTANTIATE_SERIALISE_TYPE(VkPipelineMultisampleStateCreateInfo); INSTANTIATE_SERIALISE_TYPE(VkPipelineRasterizationConservativeStateCreateInfoEXT); +INSTANTIATE_SERIALISE_TYPE(VkPipelineRasterizationDepthClipStateCreateInfoEXT); INSTANTIATE_SERIALISE_TYPE(VkPipelineRasterizationStateCreateInfo); INSTANTIATE_SERIALISE_TYPE(VkPipelineRasterizationStateStreamCreateInfoEXT); INSTANTIATE_SERIALISE_TYPE(VkPipelineSampleLocationsStateCreateInfoEXT); diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 37f5e0d47..19042ca12 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -1881,6 +1881,13 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi CHECK_PHYS_EXT_FEATURE(hostQueryReset); } END_PHYS_EXT_CHECK(); + + BEGIN_PHYS_EXT_CHECK(VkPhysicalDeviceDepthClipEnableFeaturesEXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT); + { + CHECK_PHYS_EXT_FEATURE(depthClipEnable); + } + END_PHYS_EXT_CHECK(); } if(availFeatures.depthClamp)