From 0e59573f2b55420c2c3fcfc3aaad56dba70e1492 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Thu, 20 Jan 2022 08:37:21 -0300 Subject: Add capability for BGRA formats (#3011) --- Ryujinx.Graphics.Shader/IGpuAccessor.cs | 5 +++++ Ryujinx.Graphics.Shader/Translation/EmitterContext.cs | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'Ryujinx.Graphics.Shader') diff --git a/Ryujinx.Graphics.Shader/IGpuAccessor.cs b/Ryujinx.Graphics.Shader/IGpuAccessor.cs index a6ccdedd..27f6f53b 100644 --- a/Ryujinx.Graphics.Shader/IGpuAccessor.cs +++ b/Ryujinx.Graphics.Shader/IGpuAccessor.cs @@ -61,6 +61,11 @@ namespace Ryujinx.Graphics.Shader return 16; } + bool QueryHostSupportsBgraFormat() + { + return true; + } + bool QueryHostSupportsFragmentShaderInterlock() { return true; diff --git a/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs b/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs index 2f839b7a..3dcb04ad 100644 --- a/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs +++ b/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs @@ -167,6 +167,7 @@ namespace Ryujinx.Graphics.Shader.Translation this.Copy(dest, src); } + bool supportsBgra = Config.GpuAccessor.QueryHostSupportsBgraFormat(); int regIndexBase = 0; for (int rtIndex = 0; rtIndex < 8; rtIndex++) @@ -185,7 +186,7 @@ namespace Ryujinx.Graphics.Shader.Translation Operand src = Register(regIndexBase + component, RegisterType.Gpr); // Perform B <-> R swap if needed, for BGRA formats (not supported on OpenGL). - if (component == 0 || component == 2) + if (!supportsBgra && (component == 0 || component == 2)) { Operand isBgra = Attribute(AttributeConsts.FragmentOutputIsBgraBase + rtIndex * 4); -- cgit v1.2.3