aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-07-06 16:20:06 -0300
committerGitHub <noreply@github.com>2021-07-06 21:20:06 +0200
commitd125fce3e8c780c042040ac8064155cd6751d353 (patch)
treedf64688dd517a858517da7b4da83871b59e6268b /Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs
parentb0ac1ade7fcde04f15384a329a0eca5ae9ed5065 (diff)
Allow shader language and target API to be specified on the shader translator (#2402)
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs')
-rw-r--r--Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs19
1 files changed, 13 insertions, 6 deletions
diff --git a/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs b/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs
index efb0503c..46a6ba98 100644
--- a/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs
+++ b/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs
@@ -192,7 +192,8 @@ namespace Ryujinx.Graphics.Gpu.Shader
{
IGpuAccessor gpuAccessor = new CachedGpuAccessor(_context, entry.Code, entry.Header.GpuAccessorHeader, entry.TextureDescriptors);
- program = Translator.CreateContext(0, gpuAccessor, DefaultFlags | TranslationFlags.Compute).Translate(out shaderProgramInfo);
+ var options = new TranslationOptions(TargetLanguage.Glsl, TargetApi.OpenGL, DefaultFlags | TranslationFlags.Compute);
+ program = Translator.CreateContext(0, gpuAccessor, options).Translate(out shaderProgramInfo);
});
task.OnTask(compileTask, (bool _, ShaderCompileTask task) =>
@@ -298,8 +299,11 @@ namespace Ryujinx.Graphics.Gpu.Shader
{
IGpuAccessor gpuAccessor = new CachedGpuAccessor(_context, entry.Code, entry.Header.GpuAccessorHeader, entry.TextureDescriptors);
- TranslatorContext translatorContext = Translator.CreateContext(0, gpuAccessor, flags, counts);
- TranslatorContext translatorContext2 = Translator.CreateContext((ulong)entry.Header.Size, gpuAccessor, flags | TranslationFlags.VertexA, counts);
+ var options = new TranslationOptions(TargetLanguage.Glsl, TargetApi.OpenGL, flags);
+ var options2 = new TranslationOptions(TargetLanguage.Glsl, TargetApi.OpenGL, flags | TranslationFlags.VertexA);
+
+ TranslatorContext translatorContext = Translator.CreateContext(0, gpuAccessor, options, counts);
+ TranslatorContext translatorContext2 = Translator.CreateContext((ulong)entry.Header.Size, gpuAccessor, options2, counts);
program = translatorContext.Translate(out shaderProgramInfo, translatorContext2);
}
@@ -323,7 +327,8 @@ namespace Ryujinx.Graphics.Gpu.Shader
{
IGpuAccessor gpuAccessor = new CachedGpuAccessor(_context, entry.Code, entry.Header.GpuAccessorHeader, entry.TextureDescriptors);
- program = Translator.CreateContext(0, gpuAccessor, flags, counts).Translate(out shaderProgramInfo);
+ var options = new TranslationOptions(TargetLanguage.Glsl, TargetApi.OpenGL, flags);
+ program = Translator.CreateContext(0, gpuAccessor, options, counts).Translate(out shaderProgramInfo);
}
shaders[i] = new ShaderCodeHolder(program, shaderProgramInfo, entry.Code);
@@ -851,7 +856,8 @@ namespace Ryujinx.Graphics.Gpu.Shader
GpuAccessor gpuAccessor = new GpuAccessor(_context, state, localSizeX, localSizeY, localSizeZ, localMemorySize, sharedMemorySize);
- return Translator.CreateContext(gpuVa, gpuAccessor, DefaultFlags | TranslationFlags.Compute);
+ var options = new TranslationOptions(TargetLanguage.Glsl, TargetApi.OpenGL, DefaultFlags | TranslationFlags.Compute);
+ return Translator.CreateContext(gpuVa, gpuAccessor, options);
}
/// <summary>
@@ -880,7 +886,8 @@ namespace Ryujinx.Graphics.Gpu.Shader
GpuAccessor gpuAccessor = new GpuAccessor(_context, state, (int)stage - 1);
- return Translator.CreateContext(gpuVa, gpuAccessor, flags, counts);
+ var options = new TranslationOptions(TargetLanguage.Glsl, TargetApi.OpenGL, flags);
+ return Translator.CreateContext(gpuVa, gpuAccessor, options, counts);
}
/// <summary>