From 3bd357045f7581ee10d6c86ed8049bcebe35eda0 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 16 Feb 2022 19:15:39 -0300 Subject: Do not allow render targets not explicitly written by the fragment shader to be modified (#3063) * Do not allow render targets not explicitly written by the fragment shader to be modified * Shader cache version bump * Remove blank lines * Avoid redundant color mask updates * HostShaderCacheEntry can be null * Avoid more redundant glColorMask calls * nit: Mask -> Masks * Fix currentComponentMask * More efficient way to update _currentComponentMasks --- Ryujinx.Graphics.Shader/ShaderProgramInfo.cs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'Ryujinx.Graphics.Shader/ShaderProgramInfo.cs') diff --git a/Ryujinx.Graphics.Shader/ShaderProgramInfo.cs b/Ryujinx.Graphics.Shader/ShaderProgramInfo.cs index a9ce486b..d1c1b945 100644 --- a/Ryujinx.Graphics.Shader/ShaderProgramInfo.cs +++ b/Ryujinx.Graphics.Shader/ShaderProgramInfo.cs @@ -5,32 +5,35 @@ namespace Ryujinx.Graphics.Shader { public class ShaderProgramInfo { - public ReadOnlyCollection CBuffers { get; } - public ReadOnlyCollection SBuffers { get; } + public ReadOnlyCollection CBuffers { get; } + public ReadOnlyCollection SBuffers { get; } public ReadOnlyCollection Textures { get; } - public ReadOnlyCollection Images { get; } + public ReadOnlyCollection Images { get; } public bool UsesInstanceId { get; } public bool UsesRtLayer { get; } public byte ClipDistancesWritten { get; } + public int FragmentOutputMap { get; } public ShaderProgramInfo( - BufferDescriptor[] cBuffers, - BufferDescriptor[] sBuffers, + BufferDescriptor[] cBuffers, + BufferDescriptor[] sBuffers, TextureDescriptor[] textures, TextureDescriptor[] images, - bool usesInstanceId, - bool usesRtLayer, - byte clipDistancesWritten) + bool usesInstanceId, + bool usesRtLayer, + byte clipDistancesWritten, + int fragmentOutputMap) { CBuffers = Array.AsReadOnly(cBuffers); SBuffers = Array.AsReadOnly(sBuffers); Textures = Array.AsReadOnly(textures); - Images = Array.AsReadOnly(images); + Images = Array.AsReadOnly(images); UsesInstanceId = usesInstanceId; UsesRtLayer = usesRtLayer; ClipDistancesWritten = clipDistancesWritten; + FragmentOutputMap = fragmentOutputMap; } } } \ No newline at end of file -- cgit v1.2.3