From 2e43d01d3658d82f98c9eeea8280d8ec122c0c6b Mon Sep 17 00:00:00 2001 From: gdkchan <gab.dark.100@gmail.com> Date: Fri, 18 Nov 2022 23:27:54 -0300 Subject: Move gl_Layer from vertex to geometry if GPU does not support it on vertex (#3866) * Move gl_Layer from vertex to geometry if GPU does not support it on vertex * Shader cache version bump * PR feedback --- Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs') diff --git a/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs b/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs index 2a9dd6a5..3eaab79f 100644 --- a/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs +++ b/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs @@ -356,6 +356,8 @@ namespace Ryujinx.Graphics.Gpu.Shader CachedShaderStage[] shaders = new CachedShaderStage[Constants.ShaderStages + 1]; List<ShaderSource> shaderSources = new List<ShaderSource>(); + TranslatorContext previousStage = null; + for (int stageIndex = 0; stageIndex < Constants.ShaderStages; stageIndex++) { TranslatorContext currentStage = translatorContexts[stageIndex + 1]; @@ -392,6 +394,16 @@ namespace Ryujinx.Graphics.Gpu.Shader { shaderSources.Add(CreateShaderSource(program)); } + + previousStage = currentStage; + } + else if ( + previousStage != null && + previousStage.LayerOutputWritten && + stageIndex == 3 && + !_context.Capabilities.SupportsLayerVertexTessellation) + { + shaderSources.Add(CreateShaderSource(previousStage.GenerateGeometryPassthrough())); } } -- cgit v1.2.3-70-g09d2