aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs')
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs14
1 files changed, 11 insertions, 3 deletions
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs b/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
index fad7f9b8..69283b0a 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
@@ -62,10 +62,18 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
context.AddCapability(Capability.TransformFeedback);
}
- if (config.Stage == ShaderStage.Fragment && context.Config.GpuAccessor.QueryHostSupportsFragmentShaderInterlock())
+ if (config.Stage == ShaderStage.Fragment)
{
- context.AddCapability(Capability.FragmentShaderPixelInterlockEXT);
- context.AddExtension("SPV_EXT_fragment_shader_interlock");
+ if (context.Info.Inputs.Contains(AttributeConsts.Layer))
+ {
+ context.AddCapability(Capability.Geometry);
+ }
+
+ if (context.Config.GpuAccessor.QueryHostSupportsFragmentShaderInterlock())
+ {
+ context.AddCapability(Capability.FragmentShaderPixelInterlockEXT);
+ context.AddExtension("SPV_EXT_fragment_shader_interlock");
+ }
}
else if (config.Stage == ShaderStage.Geometry)
{