Only pass Tesselation state create info if dynamic state is not supported

This commit is contained in:
sunshineinabox 2024-07-31 17:12:57 -07:00
parent 693f268090
commit da11dc1288

View file

@ -427,13 +427,11 @@ namespace Ryujinx.Graphics.Vulkan
Topology = supportsExtDynamicState ? TopologyClass : Topology,
};
var tessellationState = new PipelineTessellationStateCreateInfo
{
SType = StructureType.PipelineTessellationStateCreateInfo,
};
PipelineTessellationStateCreateInfo tessellationState;
if (!gd.ExtendedDynamicState2Features.ExtendedDynamicState2PatchControlPoints)
{
tessellationState.SType = StructureType.PipelineTessellationStateCreateInfo;
tessellationState.PatchControlPoints = PatchControlPoints;
}
@ -663,7 +661,6 @@ namespace Ryujinx.Graphics.Vulkan
PStages = Stages.Pointer,
PVertexInputState = &vertexInputState,
PInputAssemblyState = &inputAssemblyState,
PTessellationState = &tessellationState,
PViewportState = &viewportState,
PRasterizationState = &rasterizationState,
PMultisampleState = &multisampleState,
@ -674,6 +671,11 @@ namespace Ryujinx.Graphics.Vulkan
RenderPass = renderPass,
};
if (!gd.ExtendedDynamicState2Features.ExtendedDynamicState2PatchControlPoints)
{
pipelineCreateInfo.PTessellationState = &tessellationState;
}
Result result = gd.Api.CreateGraphicsPipelines(device, cache, 1, &pipelineCreateInfo, null, &pipelineHandle);
if (throwOnError)