Fix blend state optimisation breaking attachments
Fixes SM3DW
This commit is contained in:
parent
fd0329f2eb
commit
9d866ff282
2 changed files with 11 additions and 3 deletions
|
@ -390,11 +390,11 @@ namespace Ryujinx.Graphics.Metal
|
|||
{
|
||||
_currentState.StoredBlend[i] = mtlBlend;
|
||||
|
||||
mtlBlend = new ColorBlendStateUid();
|
||||
mtlBlend.Swap(new ColorBlendStateUid());
|
||||
}
|
||||
else if (mtlBlend.WriteMask == 0)
|
||||
{
|
||||
mtlBlend = _currentState.StoredBlend[i];
|
||||
mtlBlend.Swap(_currentState.StoredBlend[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -535,7 +535,7 @@ namespace Ryujinx.Graphics.Metal
|
|||
{
|
||||
_currentState.StoredBlend[index] = blendState;
|
||||
|
||||
blendState = new ColorBlendStateUid();
|
||||
blendState.Swap(new ColorBlendStateUid());
|
||||
}
|
||||
|
||||
_currentState.BlendColor = blend.BlendConstant;
|
||||
|
|
|
@ -111,6 +111,14 @@ namespace Ryujinx.Graphics.Metal
|
|||
readonly get => ((Id0 >> 63) & 0x1) != 0UL;
|
||||
set => Id0 = (Id0 & 0x7FFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 63);
|
||||
}
|
||||
|
||||
public void Swap(ColorBlendStateUid uid)
|
||||
{
|
||||
var format = PixelFormat;
|
||||
|
||||
this = uid;
|
||||
PixelFormat = format;
|
||||
}
|
||||
}
|
||||
|
||||
[SupportedOSPlatform("macos")]
|
||||
|
|
Loading…
Reference in a new issue