Only enable enable LogicOp dynamic state and logic op if its enabled.
This commit is contained in:
parent
424166acd8
commit
efdcce4415
2 changed files with 11 additions and 11 deletions
|
@ -1001,20 +1001,20 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
|
|
||||||
public void SetLogicOpState(bool enable, LogicalOp op)
|
public void SetLogicOpState(bool enable, LogicalOp op)
|
||||||
{
|
{
|
||||||
if (Gd.ExtendedDynamicState2Features.ExtendedDynamicState2LogicOp)
|
|
||||||
{
|
|
||||||
DynamicState.SetLogicOp(op.Convert());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_newState.LogicOp = op.Convert();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vendors other than NVIDIA have a bug where it enables logical operations even for float formats,
|
// Vendors other than NVIDIA have a bug where it enables logical operations even for float formats,
|
||||||
// so we need to force disable them here.
|
// so we need to force disable them here.
|
||||||
bool logicOpEnable = enable && (Gd.Vendor == Vendor.Nvidia || _newState.Internal.LogicOpsAllowed);
|
bool logicOpEnable = enable && (Gd.Vendor == Vendor.Nvidia || _newState.Internal.LogicOpsAllowed);
|
||||||
|
|
||||||
_newState.LogicOpEnable = logicOpEnable;
|
_newState.LogicOpEnable = logicOpEnable;
|
||||||
|
|
||||||
|
if (Gd.ExtendedDynamicState2Features.ExtendedDynamicState2LogicOp && logicOpEnable)
|
||||||
|
{
|
||||||
|
DynamicState.SetLogicOp(op.Convert());
|
||||||
|
}
|
||||||
|
else if (logicOpEnable)
|
||||||
|
{
|
||||||
|
_newState.LogicOp = op.Convert();
|
||||||
|
}
|
||||||
|
|
||||||
SignalStateChange();
|
SignalStateChange();
|
||||||
}
|
}
|
||||||
|
|
|
@ -595,7 +595,7 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
if (supportsExtDynamicState2)
|
if (supportsExtDynamicState2)
|
||||||
{
|
{
|
||||||
additionalDynamicStatesCount += 3;
|
additionalDynamicStatesCount += 3;
|
||||||
if (gd.ExtendedDynamicState2Features.ExtendedDynamicState2LogicOp)
|
if (gd.ExtendedDynamicState2Features.ExtendedDynamicState2LogicOp && LogicOpEnable)
|
||||||
{
|
{
|
||||||
additionalDynamicStatesCount++;
|
additionalDynamicStatesCount++;
|
||||||
}
|
}
|
||||||
|
@ -649,7 +649,7 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
dynamicStates[currentIndex++] = DynamicState.RasterizerDiscardEnableExt;
|
dynamicStates[currentIndex++] = DynamicState.RasterizerDiscardEnableExt;
|
||||||
dynamicStates[currentIndex++] = DynamicState.PrimitiveRestartEnableExt;
|
dynamicStates[currentIndex++] = DynamicState.PrimitiveRestartEnableExt;
|
||||||
|
|
||||||
if (gd.ExtendedDynamicState2Features.ExtendedDynamicState2LogicOp)
|
if (gd.ExtendedDynamicState2Features.ExtendedDynamicState2LogicOp && LogicOpEnable)
|
||||||
{
|
{
|
||||||
dynamicStates[currentIndex++] = DynamicState.LogicOpExt;
|
dynamicStates[currentIndex++] = DynamicState.LogicOpExt;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue