diff options
author | gdkchan <gab.dark.100@gmail.com> | 2022-11-18 23:27:54 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-18 23:27:54 -0300 |
commit | 2e43d01d3658d82f98c9eeea8280d8ec122c0c6b (patch) | |
tree | 9d9e33db173a6dfc9e3fa0c05b3421a74f621d14 /Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs | |
parent | 7373ec579226e198d3d7825811eb592489acee1c (diff) |
Move gl_Layer from vertex to geometry if GPU does not support it on vertex (#3866)1.1.364
* Move gl_Layer from vertex to geometry if GPU does not support it on vertex
* Shader cache version bump
* PR feedback
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs')
-rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs b/Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs index 04d93bba..9261cb0d 100644 --- a/Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs +++ b/Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs @@ -636,6 +636,8 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache CachedShaderStage[] shaders = new CachedShaderStage[guestShaders.Length]; List<ShaderProgram> translatedStages = new List<ShaderProgram>(); + TranslatorContext previousStage = null; + for (int stageIndex = 0; stageIndex < Constants.ShaderStages; stageIndex++) { TranslatorContext currentStage = translatorContexts[stageIndex + 1]; @@ -668,6 +670,16 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache { translatedStages.Add(program); } + + previousStage = currentStage; + } + else if ( + previousStage != null && + previousStage.LayerOutputWritten && + stageIndex == 3 && + !_context.Capabilities.SupportsLayerVertexTessellation) + { + translatedStages.Add(previousStage.GenerateGeometryPassthrough()); } } |