From fd7567a6b56fcb82a52b85097582fc0a67038457 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 28 Sep 2021 20:55:12 -0300 Subject: Only make render target 2D textures layered if needed (#2646) * Only make render target 2D textures layered if needed * Shader cache version bump * Ensure topology is updated on channel swap --- Ryujinx.Graphics.Shader/Translation/EmitterContext.cs | 5 +++++ Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs | 7 ++++--- Ryujinx.Graphics.Shader/Translation/Translator.cs | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) (limited to 'Ryujinx.Graphics.Shader/Translation') diff --git a/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs b/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs index 5cdd5c0a..c96b75a5 100644 --- a/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs +++ b/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs @@ -121,6 +121,11 @@ namespace Ryujinx.Graphics.Shader.Translation break; } } + + if (Config.Stage != ShaderStage.Fragment && attribute == AttributeConsts.Layer) + { + Config.SetUsedFeature(FeatureFlags.RtLayer); + } } public void MarkLabel(Operand label) diff --git a/Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs b/Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs index 1636afd3..f602ea64 100644 --- a/Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs +++ b/Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs @@ -17,8 +17,9 @@ namespace Ryujinx.Graphics.Shader.Translation Bindless = 1 << 2, InstanceId = 1 << 3, - CbIndexing = 1 << 4, - IaIndexing = 1 << 5, - OaIndexing = 1 << 6 + RtLayer = 1 << 4, + CbIndexing = 1 << 5, + IaIndexing = 1 << 6, + OaIndexing = 1 << 7 } } diff --git a/Ryujinx.Graphics.Shader/Translation/Translator.cs b/Ryujinx.Graphics.Shader/Translation/Translator.cs index f1e92d7c..1abf19d7 100644 --- a/Ryujinx.Graphics.Shader/Translation/Translator.cs +++ b/Ryujinx.Graphics.Shader/Translation/Translator.cs @@ -106,6 +106,7 @@ namespace Ryujinx.Graphics.Shader.Translation config.GetTextureDescriptors(), config.GetImageDescriptors(), config.UsedFeatures.HasFlag(FeatureFlags.InstanceId), + config.UsedFeatures.HasFlag(FeatureFlags.RtLayer), config.ClipDistancesWritten); return program; -- cgit v1.2.3