aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-09-16 13:49:13 -0300
committerGitHub <noreply@github.com>2023-09-16 18:49:13 +0200
commit88df636c870528a24695a23ffeb3768399bcf0af (patch)
tree3f19a0e6da255c028a9b136269d7337ada4ff21d
parent7ccff037e87f82f3461f3e1422235e29800eaa2f (diff)
Replace ShaderOutputLayer with equivalent ShaderViewportIndexLayerEXT capability (#5683)1.1.1015
-rw-r--r--src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
index 44d3e985..0e9e32bb 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
@@ -89,6 +89,16 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
context.AddCapability(Capability.DrawParameters);
}
+ if (context.Definitions.Stage != ShaderStage.Fragment &&
+ context.Definitions.Stage != ShaderStage.Geometry &&
+ context.Definitions.Stage != ShaderStage.Compute &&
+ (context.Info.IoDefinitions.Contains(new IoDefinition(StorageKind.Output, IoVariable.Layer)) ||
+ context.Info.IoDefinitions.Contains(new IoDefinition(StorageKind.Output, IoVariable.ViewportIndex))))
+ {
+ context.AddExtension("SPV_EXT_shader_viewport_index_layer");
+ context.AddCapability(Capability.ShaderViewportIndexLayerEXT);
+ }
+
if (context.Info.IoDefinitions.Contains(new IoDefinition(StorageKind.Output, IoVariable.ViewportMask)))
{
context.AddExtension("SPV_NV_viewport_array2");
@@ -277,14 +287,6 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
localSizeZ);
}
- if (context.Definitions.Stage != ShaderStage.Fragment &&
- context.Definitions.Stage != ShaderStage.Geometry &&
- context.Definitions.Stage != ShaderStage.Compute &&
- context.Info.IoDefinitions.Contains(new IoDefinition(StorageKind.Output, IoVariable.Layer)))
- {
- context.AddCapability(Capability.ShaderLayer);
- }
-
if (context.Definitions.TransformFeedbackEnabled && context.Definitions.LastInVertexPipeline)
{
context.AddExecutionMode(spvFunc, ExecutionMode.Xfb);