aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Vulkan/PipelineState.cs
diff options
context:
space:
mode:
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()
{