aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Vulkan/PipelineState.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-02-26 19:19:00 -0300
committerGitHub <noreply@github.com>2023-02-26 19:19:00 -0300
commit5d85468302dd21a93ac141abfb7b8749b938dc9a (patch)
tree67374ba03aed05f38295189e11d9d3430aa9519e /Ryujinx.Graphics.Vulkan/PipelineState.cs
parent9b1cc2cec6135602efc5dc5afa45ed3db261eb42 (diff)
Vulkan: Support list topology primitive restart (#4483)1.1.644
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/PipelineState.cs')
-rw-r--r--Ryujinx.Graphics.Vulkan/PipelineState.cs21
1 files changed, 16 insertions, 5 deletions
diff --git a/Ryujinx.Graphics.Vulkan/PipelineState.cs b/Ryujinx.Graphics.Vulkan/PipelineState.cs
index 0d549476..dccc8ce6 100644
--- a/Ryujinx.Graphics.Vulkan/PipelineState.cs
+++ b/Ryujinx.Graphics.Vulkan/PipelineState.cs
@@ -417,11 +417,22 @@ namespace Ryujinx.Graphics.Vulkan
bool primitiveRestartEnable = PrimitiveRestartEnable;
- primitiveRestartEnable &= Topology == PrimitiveTopology.LineStrip ||
- Topology == PrimitiveTopology.TriangleStrip ||
- Topology == PrimitiveTopology.TriangleFan ||
- Topology == PrimitiveTopology.LineStripWithAdjacency ||
- Topology == PrimitiveTopology.TriangleStripWithAdjacency;
+ bool topologySupportsRestart;
+
+ if (gd.Capabilities.SupportsPrimitiveTopologyListRestart)
+ {
+ topologySupportsRestart = gd.Capabilities.SupportsPrimitiveTopologyPatchListRestart || Topology != PrimitiveTopology.PatchList;
+ }
+ else
+ {
+ topologySupportsRestart = Topology == PrimitiveTopology.LineStrip ||
+ Topology == PrimitiveTopology.TriangleStrip ||
+ Topology == PrimitiveTopology.TriangleFan ||
+ Topology == PrimitiveTopology.LineStripWithAdjacency ||
+ Topology == PrimitiveTopology.TriangleStripWithAdjacency;
+ }
+
+ primitiveRestartEnable &= topologySupportsRestart;
var inputAssemblyState = new PipelineInputAssemblyStateCreateInfo()
{