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;
|
_currentState.StoredBlend[i] = mtlBlend;
|
||||||
|
|
||||||
mtlBlend = new ColorBlendStateUid();
|
mtlBlend.Swap(new ColorBlendStateUid());
|
||||||
}
|
}
|
||||||
else if (mtlBlend.WriteMask == 0)
|
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;
|
_currentState.StoredBlend[index] = blendState;
|
||||||
|
|
||||||
blendState = new ColorBlendStateUid();
|
blendState.Swap(new ColorBlendStateUid());
|
||||||
}
|
}
|
||||||
|
|
||||||
_currentState.BlendColor = blend.BlendConstant;
|
_currentState.BlendColor = blend.BlendConstant;
|
||||||
|
|
|
@ -111,6 +111,14 @@ namespace Ryujinx.Graphics.Metal
|
||||||
readonly get => ((Id0 >> 63) & 0x1) != 0UL;
|
readonly get => ((Id0 >> 63) & 0x1) != 0UL;
|
||||||
set => Id0 = (Id0 & 0x7FFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 63);
|
set => Id0 = (Id0 & 0x7FFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 63);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Swap(ColorBlendStateUid uid)
|
||||||
|
{
|
||||||
|
var format = PixelFormat;
|
||||||
|
|
||||||
|
this = uid;
|
||||||
|
PixelFormat = format;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[SupportedOSPlatform("macos")]
|
[SupportedOSPlatform("macos")]
|
||||||
|
|
Loading…
Reference in a new issue