diff options
author | gdkchan <gab.dark.100@gmail.com> | 2022-02-16 19:15:39 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-16 23:15:39 +0100 |
commit | 3bd357045f7581ee10d6c86ed8049bcebe35eda0 (patch) | |
tree | aa2d243843f2d31d3afa690f26352713ddac4349 /Ryujinx.Graphics.Gpu/Shader/Cache/Definition/HostShaderCacheEntryHeader.cs | |
parent | ab5d77c0c4925955180dc51e9f289187ce6f2901 (diff) |
Do not allow render targets not explicitly written by the fragment shader to be modified (#3063)1.1.31
* 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
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Shader/Cache/Definition/HostShaderCacheEntryHeader.cs')
-rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/Cache/Definition/HostShaderCacheEntryHeader.cs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Ryujinx.Graphics.Gpu/Shader/Cache/Definition/HostShaderCacheEntryHeader.cs b/Ryujinx.Graphics.Gpu/Shader/Cache/Definition/HostShaderCacheEntryHeader.cs index 4b8b15bc..c3c0de22 100644 --- a/Ryujinx.Graphics.Gpu/Shader/Cache/Definition/HostShaderCacheEntryHeader.cs +++ b/Ryujinx.Graphics.Gpu/Shader/Cache/Definition/HostShaderCacheEntryHeader.cs @@ -26,7 +26,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.Cache.Definition /// <summary> /// Host shader entry header used for binding information. /// </summary> - [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x14)] + [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x18)] struct HostShaderCacheEntryHeader { /// <summary> @@ -71,6 +71,11 @@ namespace Ryujinx.Graphics.Gpu.Shader.Cache.Definition public byte Reserved; /// <summary> + /// Mask of components written by the fragment shader stage. + /// </summary> + public int FragmentOutputMap; + + /// <summary> /// Create a new host shader cache entry header. /// </summary> /// <param name="cBuffersCount">Count of constant buffer descriptors</param> @@ -78,6 +83,8 @@ namespace Ryujinx.Graphics.Gpu.Shader.Cache.Definition /// <param name="texturesCount">Count of texture descriptors</param> /// <param name="imagesCount">Count of image descriptors</param> /// <param name="usesInstanceId">Set to true if the shader uses instance id</param> + /// <param name="clipDistancesWritten">Mask of clip distances that are written to on the shader</param> + /// <param name="fragmentOutputMap">Mask of components written by the fragment shader stage</param> public HostShaderCacheEntryHeader( int cBuffersCount, int sBuffersCount, @@ -85,13 +92,15 @@ namespace Ryujinx.Graphics.Gpu.Shader.Cache.Definition int imagesCount, bool usesInstanceId, bool usesRtLayer, - byte clipDistancesWritten) : this() + byte clipDistancesWritten, + int fragmentOutputMap) : this() { CBuffersCount = cBuffersCount; SBuffersCount = sBuffersCount; TexturesCount = texturesCount; ImagesCount = imagesCount; ClipDistancesWritten = clipDistancesWritten; + FragmentOutputMap = fragmentOutputMap; InUse = true; UseFlags = usesInstanceId ? UseFlags.InstanceId : UseFlags.None; |