aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Vulkan/PipelineState.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Vulkan/PipelineState.cs')
-rw-r--r--src/Ryujinx.Graphics.Vulkan/PipelineState.cs28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs
index 11f53251..25fd7168 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs
@@ -312,7 +312,6 @@ namespace Ryujinx.Graphics.Vulkan
}
public NativeArray<PipelineShaderStageCreateInfo> Stages;
- public NativeArray<PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT> StageRequiredSubgroupSizes;
public PipelineLayout PipelineLayout;
public SpecData SpecializationData;
@@ -321,16 +320,6 @@ namespace Ryujinx.Graphics.Vulkan
public void Initialize()
{
Stages = new NativeArray<PipelineShaderStageCreateInfo>(Constants.MaxShaderStages);
- StageRequiredSubgroupSizes = new NativeArray<PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT>(Constants.MaxShaderStages);
-
- for (int index = 0; index < Constants.MaxShaderStages; index++)
- {
- StageRequiredSubgroupSizes[index] = new PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
- {
- SType = StructureType.PipelineShaderStageRequiredSubgroupSizeCreateInfoExt,
- RequiredSubgroupSize = RequiredSubgroupSize,
- };
- }
AdvancedBlendSrcPreMultiplied = true;
AdvancedBlendDstPreMultiplied = true;
@@ -397,7 +386,8 @@ namespace Ryujinx.Graphics.Vulkan
Device device,
ShaderCollection program,
PipelineCache cache,
- RenderPass renderPass)
+ RenderPass renderPass,
+ bool throwOnError = false)
{
if (program.TryGetGraphicsPipeline(ref Internal, out var pipeline))
{
@@ -630,7 +620,18 @@ namespace Ryujinx.Graphics.Vulkan
BasePipelineIndex = -1,
};
- gd.Api.CreateGraphicsPipelines(device, cache, 1, &pipelineCreateInfo, null, &pipelineHandle).ThrowOnError();
+ Result result = gd.Api.CreateGraphicsPipelines(device, cache, 1, &pipelineCreateInfo, null, &pipelineHandle);
+
+ if (throwOnError)
+ {
+ result.ThrowOnError();
+ }
+ else if (result.IsError())
+ {
+ program.AddGraphicsPipeline(ref Internal, null);
+
+ return null;
+ }
// Restore previous blend enable values if we changed it.
while (blendEnables != 0)
@@ -708,7 +709,6 @@ namespace Ryujinx.Graphics.Vulkan
public readonly void Dispose()
{
Stages.Dispose();
- StageRequiredSubgroupSizes.Dispose();
}
}
}