Implement Logical Operation registers and functionality (#1380)
* Implement Logical Operation registers and functionality. * Address Feedback 1
This commit is contained in:
@@ -252,6 +252,11 @@ namespace Ryujinx.Graphics.Gpu.Engine
|
||||
UpdateBlendState(state);
|
||||
}
|
||||
|
||||
if (state.QueryModified(MethodOffset.LogicOpState))
|
||||
{
|
||||
UpdateLogicOpState(state);
|
||||
}
|
||||
|
||||
CommitBindings();
|
||||
}
|
||||
|
||||
@@ -875,6 +880,17 @@ namespace Ryujinx.Graphics.Gpu.Engine
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates host logical operation state, based on guest state.
|
||||
/// </summary>
|
||||
/// <param name="state">Current GPU state</param>
|
||||
public void UpdateLogicOpState(GpuState state)
|
||||
{
|
||||
LogicalOpState logicOpState = state.Get<LogicalOpState>(MethodOffset.LogicOpState);
|
||||
|
||||
_context.Renderer.Pipeline.SetLogicOpState(logicOpState.Enable, logicOpState.LogicalOp);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Storage buffer address and size information.
|
||||
/// </summary>
|
||||
|
12
Ryujinx.Graphics.Gpu/State/LogicalOpState.cs
Normal file
12
Ryujinx.Graphics.Gpu/State/LogicalOpState.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Ryujinx.Graphics.GAL;
|
||||
|
||||
namespace Ryujinx.Graphics.Gpu.State
|
||||
{
|
||||
struct LogicalOpState
|
||||
{
|
||||
#pragma warning disable CS0649
|
||||
public Boolean32 Enable;
|
||||
public LogicalOp LogicalOp;
|
||||
#pragma warning restore CS0649
|
||||
}
|
||||
}
|
@@ -92,6 +92,7 @@ namespace Ryujinx.Graphics.Gpu.State
|
||||
FaceState = 0x646,
|
||||
ViewportTransformEnable = 0x64b,
|
||||
ViewVolumeClipControl = 0x64f,
|
||||
LogicOpState = 0x671,
|
||||
Clear = 0x674,
|
||||
RtColorMask = 0x680,
|
||||
ReportState = 0x6c0,
|
||||
|
Reference in New Issue
Block a user