Resolve remaining pipeline creation errors when extended pipeline states extension not supported

This commit is contained in:
sunshineinabox 2024-09-01 18:17:19 -07:00
parent 07f80bdbb7
commit 2298362e7f
5 changed files with 57 additions and 37 deletions

View file

@ -53,7 +53,7 @@ namespace Ryujinx.Graphics.Vulkan
private uint _patchControlPoints;
private PrimitiveTopology _topology;
public PrimitiveTopology _topology;
private bool _primitiveRestartEnable;
@ -455,7 +455,33 @@ namespace Ryujinx.Graphics.Vulkan
private readonly void RecordPrimitiveRestartEnable(VulkanRenderer gd, CommandBuffer commandBuffer)
{
gd.ExtendedDynamicState2Api.CmdSetPrimitiveRestartEnable(commandBuffer, _primitiveRestartEnable);
bool primitiveRestartEnable = _primitiveRestartEnable;
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;
//Cannot disable primitiveRestartEnable for these Topologies on MacOS
if (gd.IsMoltenVk)
{
primitiveRestartEnable = true;
}
gd.ExtendedDynamicState2Api.CmdSetPrimitiveRestartEnable(commandBuffer, primitiveRestartEnable);
}
private readonly void RecordPrimitiveTopology(VulkanRenderer gd, CommandBuffer commandBuffer)