Avoid creating pipelines for each topology.

This commit is contained in:
sunshineinabox 2024-08-12 22:09:09 -07:00
parent 2d1af4ddb4
commit 674288a71f
2 changed files with 3 additions and 3 deletions

View file

@ -671,7 +671,7 @@ namespace Ryujinx.Graphics.Vulkan
{ {
if (oldTopology.ConvertToClass() != _newState.Topology.ConvertToClass()) if (oldTopology.ConvertToClass() != _newState.Topology.ConvertToClass())
{ {
_newState.Topology = oldTopology; _newState.Topology = oldTopology.ConvertToClass();
} }
DynamicState.SetCullMode(oldCullMode); DynamicState.SetCullMode(oldCullMode);
@ -1078,7 +1078,7 @@ namespace Ryujinx.Graphics.Vulkan
if ((_newState.Topology.ConvertToClass() != newTopologyClass)) if ((_newState.Topology.ConvertToClass() != newTopologyClass))
{ {
_newState.Topology = vkTopology; _newState.Topology = vkTopology.ConvertToClass();
} }
DynamicState.SetPrimitiveTopology(vkTopology); DynamicState.SetPrimitiveTopology(vkTopology);

View file

@ -218,7 +218,7 @@ namespace Ryujinx.Graphics.Vulkan
pipeline.StencilBackDepthFailOp = extendedDynamicState ? 0 : state.StencilTest.BackDpFail.Convert(); pipeline.StencilBackDepthFailOp = extendedDynamicState ? 0 : state.StencilTest.BackDpFail.Convert();
pipeline.StencilBackCompareOp = extendedDynamicState ? 0 : state.StencilTest.BackFunc.Convert(); pipeline.StencilBackCompareOp = extendedDynamicState ? 0 : state.StencilTest.BackFunc.Convert();
pipeline.Topology = gd.TopologyRemap(state.Topology).Convert(); pipeline.Topology = extendedDynamicState ? gd.TopologyRemap(state.Topology).Convert().ConvertToClass() : gd.TopologyRemap(state.Topology).Convert();
int vaCount = Math.Min(Constants.MaxVertexAttributes, state.VertexAttribCount); int vaCount = Math.Min(Constants.MaxVertexAttributes, state.VertexAttribCount);
int vbCount = Math.Min(Constants.MaxVertexBuffers, state.VertexBufferCount); int vbCount = Math.Min(Constants.MaxVertexBuffers, state.VertexBufferCount);