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 --- .../Multithreading/Resources/Programs/BinaryProgramRequest.cs | 8 ++++++-- .../Multithreading/Resources/Programs/SourceProgramRequest.cs | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'Ryujinx.Graphics.GAL/Multithreading/Resources/Programs') diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs index 96bfedf8..b4c6853f 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs @@ -5,17 +5,21 @@ public ThreadedProgram Threaded { get; set; } private byte[] _data; + private bool _hasFragmentShader; + private ShaderInfo _info; - public BinaryProgramRequest(ThreadedProgram program, byte[] data) + public BinaryProgramRequest(ThreadedProgram program, byte[] data, bool hasFragmentShader, ShaderInfo info) { Threaded = program; _data = data; + _hasFragmentShader = hasFragmentShader; + _info = info; } public IProgram Create(IRenderer renderer) { - return renderer.LoadProgramBinary(_data); + return renderer.LoadProgramBinary(_data, _hasFragmentShader, _info); } } } diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs index 8e4cd1d4..d808fe22 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs @@ -7,12 +7,14 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs public ThreadedProgram Threaded { get; set; } private IShader[] _shaders; + private ShaderInfo _info; - public SourceProgramRequest(ThreadedProgram program, IShader[] shaders) + public SourceProgramRequest(ThreadedProgram program, IShader[] shaders, ShaderInfo info) { Threaded = program; _shaders = shaders; + _info = info; } public IProgram Create(IRenderer renderer) @@ -24,7 +26,7 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs return threaded?.Base; }).ToArray(); - return renderer.CreateProgram(shaders); + return renderer.CreateProgram(shaders, _info); } } } -- cgit v1.2.3