Allow shader language and target API to be specified on the shader translator (#2402)
This commit is contained in:
parent
b0ac1ade7f
commit
d125fce3e8
11 changed files with 87 additions and 27 deletions
|
@ -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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue