Use dynamic state for primitive topology if dynamicPrimitiveTopologyUnrestricted is supported.

This commit is contained in:
sunshineinabox 2024-05-22 09:45:50 -07:00
parent dcc999c798
commit 89dee194d2
4 changed files with 77 additions and 5 deletions

View file

@ -435,9 +435,13 @@ namespace Ryujinx.Graphics.Vulkan
var inputAssemblyState = new PipelineInputAssemblyStateCreateInfo
{
SType = StructureType.PipelineInputAssemblyStateCreateInfo,
Topology = Topology,
};
if (!gd.SupportsUnrestrictedDynamicTopology)
{
inputAssemblyState.Topology = Topology;
}
var tessellationState = new PipelineTessellationStateCreateInfo
{
SType = StructureType.PipelineTessellationStateCreateInfo,
@ -633,6 +637,11 @@ namespace Ryujinx.Graphics.Vulkan
{
additionalDynamicStatesCount++;
}
if (gd.SupportsUnrestrictedDynamicTopology)
{
additionalDynamicStatesCount++;
}
}
int dynamicStatesCount = baseDynamicStatesCount + additionalDynamicStatesCount;
@ -710,6 +719,11 @@ namespace Ryujinx.Graphics.Vulkan
{
dynamicStates[currentIndex++] = DynamicState.DepthClipNegativeOneToOneExt;
}
if (gd.SupportsUnrestrictedDynamicTopology)
{
dynamicStates[currentIndex++] = DynamicState.PrimitiveTopology;
}
}
var pipelineDynamicStateCreateInfo = new PipelineDynamicStateCreateInfo