From 97a21332071aceeef6f5035178a3523177570448 Mon Sep 17 00:00:00 2001 From: Mary Date: Sun, 18 Jul 2021 12:49:39 +0200 Subject: shadertools: Prepare for new target Languages and APIs (#2465) * shadertools: Prepare for new target Langugaes and APIs This improves shader tools command line by adding support for target language and api. * Address gdkchan's comments --- Ryujinx.Graphics.Shader/Translation/TargetLanguage.cs | 3 ++- Ryujinx.Graphics.Shader/Translation/Translator.cs | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'Ryujinx.Graphics.Shader/Translation') diff --git a/Ryujinx.Graphics.Shader/Translation/TargetLanguage.cs b/Ryujinx.Graphics.Shader/Translation/TargetLanguage.cs index db839e94..8314b223 100644 --- a/Ryujinx.Graphics.Shader/Translation/TargetLanguage.cs +++ b/Ryujinx.Graphics.Shader/Translation/TargetLanguage.cs @@ -3,6 +3,7 @@ namespace Ryujinx.Graphics.Shader.Translation public enum TargetLanguage { Glsl, - Spirv + Spirv, + Arb } } diff --git a/Ryujinx.Graphics.Shader/Translation/Translator.cs b/Ryujinx.Graphics.Shader/Translation/Translator.cs index 0f71b599..685b6a20 100644 --- a/Ryujinx.Graphics.Shader/Translation/Translator.cs +++ b/Ryujinx.Graphics.Shader/Translation/Translator.cs @@ -3,6 +3,7 @@ using Ryujinx.Graphics.Shader.Decoders; using Ryujinx.Graphics.Shader.IntermediateRepresentation; using Ryujinx.Graphics.Shader.StructuredIr; using Ryujinx.Graphics.Shader.Translation.Optimizations; +using System; using System.Collections.Generic; using static Ryujinx.Graphics.Shader.IntermediateRepresentation.OperandHelper; @@ -87,7 +88,16 @@ namespace Ryujinx.Graphics.Shader.Translation StructuredProgramInfo sInfo = StructuredProgram.MakeStructuredProgram(funcs, config); - string glslCode = GlslGenerator.Generate(sInfo, config); + ShaderProgram program; + + switch (config.Options.TargetLanguage) + { + case TargetLanguage.Glsl: + program = new ShaderProgram(config.Stage, GlslGenerator.Generate(sInfo, config)); + break; + default: + throw new NotImplementedException(config.Options.TargetLanguage.ToString()); + } shaderProgramInfo = new ShaderProgramInfo( config.GetConstantBufferDescriptors(), @@ -97,7 +107,7 @@ namespace Ryujinx.Graphics.Shader.Translation config.UsedFeatures.HasFlag(FeatureFlags.InstanceId), config.ClipDistancesWritten); - return new ShaderProgram(config.Stage, glslCode); + return program; } private static Block[][] DecodeShader( -- cgit v1.2.3