Revert Silk.NET to main branch version.
Remove VK_EXT_extended_dynamic_state3 functionality until later PR
This commit is contained in:
parent
fb4ef3347a
commit
f43413f374
7 changed files with 46 additions and 386 deletions
|
@ -23,14 +23,14 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
private uint _frontReference;
|
||||
|
||||
private bool _opToo;
|
||||
private StencilOp _backfailop;
|
||||
private StencilOp _backpassop;
|
||||
private StencilOp _backdepthfailop;
|
||||
private CompareOp _backcompareop;
|
||||
private StencilOp _frontfailop;
|
||||
private StencilOp _frontpassop;
|
||||
private StencilOp _frontdepthfailop;
|
||||
private CompareOp _frontcompareop;
|
||||
private StencilOp _backFailOp;
|
||||
private StencilOp _backPassOp;
|
||||
private StencilOp _backDepthFailOp;
|
||||
private CompareOp _backCompareOp;
|
||||
private StencilOp _frontFailOp;
|
||||
private StencilOp _frontPassOp;
|
||||
private StencilOp _frontDepthFailOp;
|
||||
private CompareOp _frontCompareOp;
|
||||
|
||||
private float _lineWidth;
|
||||
|
||||
|
@ -54,19 +54,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
private uint _patchControlPoints;
|
||||
|
||||
private bool _logicOpEnable;
|
||||
|
||||
private bool _depthClampEnable;
|
||||
|
||||
private bool _alphaToCoverEnable;
|
||||
private bool _alphaToOneEnable;
|
||||
|
||||
public bool DepthMode;
|
||||
|
||||
private bool _primitiveRestartEnable;
|
||||
|
||||
public PrimitiveTopology Topology;
|
||||
|
||||
[Flags]
|
||||
private enum DirtyFlags
|
||||
{
|
||||
|
@ -84,18 +73,11 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
LineWidth = 1 << 10,
|
||||
RasterDiscard = 1 << 11,
|
||||
LogicOp = 1 << 12,
|
||||
DepthClampEnable = 1 << 13,
|
||||
LogicOpEnable = 1 << 14,
|
||||
AlphaToCover = 1 << 15,
|
||||
AlphaToOne = 1 << 16,
|
||||
PatchControlPoints = 1 << 17,
|
||||
DepthMode = 1 << 18,
|
||||
PrimitiveRestart = 1 << 19,
|
||||
PrimitiveTopology = 1 << 20,
|
||||
PatchControlPoints = 1 << 13,
|
||||
PrimitiveRestart = 1 << 14,
|
||||
Standard = Blend | DepthBias | Scissor | Stencil | Viewport | LineWidth,
|
||||
Extended = CullMode | FrontFace | DepthTestBool | DepthTestCompareOp | StencilTestEnable,
|
||||
Extended2 = RasterDiscard | LogicOp | PatchControlPoints | PrimitiveRestart,
|
||||
Extended3 = DepthClampEnable | LogicOpEnable | AlphaToCover | AlphaToOne | DepthMode | PrimitiveTopology,
|
||||
}
|
||||
|
||||
private DirtyFlags _dirty;
|
||||
|
@ -142,14 +124,14 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
CompareOp backCompareOp, StencilOp frontFailOp, StencilOp frontPassOp, StencilOp frontDepthFailOp,
|
||||
CompareOp frontCompareOp)
|
||||
{
|
||||
_backfailop = backFailOp;
|
||||
_backpassop = backPassOp;
|
||||
_backdepthfailop = backDepthFailOp;
|
||||
_backcompareop = backCompareOp;
|
||||
_frontfailop = frontFailOp;
|
||||
_frontpassop = frontPassOp;
|
||||
_frontdepthfailop = frontDepthFailOp;
|
||||
_frontcompareop = frontCompareOp;
|
||||
_backFailOp = backFailOp;
|
||||
_backPassOp = backPassOp;
|
||||
_backDepthFailOp = backDepthFailOp;
|
||||
_backCompareOp = backCompareOp;
|
||||
_frontFailOp = frontFailOp;
|
||||
_frontPassOp = frontPassOp;
|
||||
_frontDepthFailOp = frontDepthFailOp;
|
||||
_frontCompareOp = frontCompareOp;
|
||||
_opToo = true;
|
||||
}
|
||||
|
||||
|
@ -221,12 +203,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
_dirty |= DirtyFlags.PrimitiveRestart;
|
||||
}
|
||||
|
||||
public void SetPrimitiveTopology(PrimitiveTopology topology)
|
||||
{
|
||||
Topology = topology;
|
||||
_dirty |= DirtyFlags.PrimitiveTopology;
|
||||
}
|
||||
|
||||
public void SetLogicOp(LogicOp op)
|
||||
{
|
||||
_logicOp = op;
|
||||
|
@ -239,36 +215,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
_dirty |= DirtyFlags.PatchControlPoints;
|
||||
}
|
||||
|
||||
public void SetLogicOpEnable(bool logicOpEnable)
|
||||
{
|
||||
_logicOpEnable = logicOpEnable;
|
||||
_dirty |= DirtyFlags.LogicOpEnable;
|
||||
}
|
||||
|
||||
public void SetDepthClampEnable(bool depthClampEnable)
|
||||
{
|
||||
_depthClampEnable = depthClampEnable;
|
||||
_dirty |= DirtyFlags.DepthClampEnable;
|
||||
}
|
||||
|
||||
public void SetAlphaToCoverEnable(bool alphaToCoverEnable)
|
||||
{
|
||||
_alphaToCoverEnable = alphaToCoverEnable;
|
||||
_dirty |= DirtyFlags.AlphaToCover;
|
||||
}
|
||||
|
||||
public void SetAlphaToOneEnable(bool alphaToOneEnable)
|
||||
{
|
||||
_alphaToOneEnable = alphaToOneEnable;
|
||||
_dirty |= DirtyFlags.AlphaToOne;
|
||||
}
|
||||
|
||||
public void SetDepthMode(bool mode)
|
||||
{
|
||||
DepthMode = mode;
|
||||
_dirty |= DirtyFlags.DepthMode;
|
||||
}
|
||||
|
||||
public void ForceAllDirty(VulkanRenderer gd)
|
||||
{
|
||||
_dirty = DirtyFlags.Standard;
|
||||
|
@ -283,11 +229,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
_dirty = DirtyFlags.Standard | DirtyFlags.Extended | DirtyFlags.Extended2;
|
||||
}
|
||||
|
||||
if (gd.Capabilities.SupportsExtendedDynamicState3)
|
||||
{
|
||||
_dirty = DirtyFlags.Standard | DirtyFlags.Extended | DirtyFlags.Extended2 | DirtyFlags.Extended3;
|
||||
}
|
||||
|
||||
if (gd.IsMoltenVk)
|
||||
{
|
||||
_dirty &= ~DirtyFlags.LineWidth;
|
||||
|
@ -302,36 +243,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
{
|
||||
_dirty &= ~DirtyFlags.PatchControlPoints;
|
||||
}
|
||||
|
||||
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3AlphaToCoverageEnable)
|
||||
{
|
||||
_dirty &= ~DirtyFlags.AlphaToCover;
|
||||
}
|
||||
|
||||
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3AlphaToOneEnable)
|
||||
{
|
||||
_dirty &= ~DirtyFlags.AlphaToOne;
|
||||
}
|
||||
|
||||
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClampEnable)
|
||||
{
|
||||
_dirty &= ~DirtyFlags.DepthClampEnable;
|
||||
}
|
||||
|
||||
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3LogicOpEnable)
|
||||
{
|
||||
_dirty &= ~DirtyFlags.LogicOpEnable;
|
||||
}
|
||||
|
||||
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClipNegativeOneToOne)
|
||||
{
|
||||
_dirty &= ~DirtyFlags.DepthMode;
|
||||
}
|
||||
|
||||
if (!gd.SupportsUnrestrictedDynamicTopology)
|
||||
{
|
||||
_dirty &= ~DirtyFlags.PrimitiveTopology;
|
||||
}
|
||||
}
|
||||
|
||||
public void ReplayIfDirty(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
|
@ -401,7 +312,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
RecordPrimitiveRestartEnable(gd, commandBuffer);
|
||||
}
|
||||
|
||||
if (_dirty.HasFlag(DirtyFlags.PrimitiveTopology))
|
||||
if (_dirty.HasFlag(DirtyFlags.PrimitiveRestart))
|
||||
{
|
||||
RecordPrimitiveRestartEnable(gd, commandBuffer);
|
||||
}
|
||||
|
@ -416,36 +327,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
RecordPatchControlPoints(gd, commandBuffer);
|
||||
}
|
||||
|
||||
if (_dirty.HasFlag(DirtyFlags.LogicOpEnable))
|
||||
{
|
||||
RecordLogicOpEnable(gd, commandBuffer);
|
||||
}
|
||||
|
||||
if (_dirty.HasFlag(DirtyFlags.DepthClampEnable))
|
||||
{
|
||||
RecordDepthClampEnable(gd, commandBuffer);
|
||||
}
|
||||
|
||||
if (_dirty.HasFlag(DirtyFlags.AlphaToCover))
|
||||
{
|
||||
RecordAlphaToCoverEnable(gd, commandBuffer);
|
||||
}
|
||||
|
||||
if (_dirty.HasFlag(DirtyFlags.AlphaToOne))
|
||||
{
|
||||
RecordAlphaToOneEnable(gd, commandBuffer);
|
||||
}
|
||||
|
||||
if (_dirty.HasFlag(DirtyFlags.DepthMode))
|
||||
{
|
||||
RecordDepthMode(gd, commandBuffer);
|
||||
}
|
||||
|
||||
if (_dirty.HasFlag(DirtyFlags.PrimitiveTopology))
|
||||
{
|
||||
RecordPrimitiveTopology(gd, commandBuffer);
|
||||
}
|
||||
|
||||
_dirty = DirtyFlags.None;
|
||||
}
|
||||
|
||||
|
@ -491,10 +372,10 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
{
|
||||
if (_opToo)
|
||||
{
|
||||
gd.ExtendedDynamicStateApi.CmdSetStencilOp(commandBuffer, StencilFaceFlags.FaceBackBit, _backfailop, _backpassop,
|
||||
_backdepthfailop, _backcompareop);
|
||||
gd.ExtendedDynamicStateApi.CmdSetStencilOp(commandBuffer, StencilFaceFlags.FaceFrontBit, _frontfailop, _frontpassop,
|
||||
_frontdepthfailop, _frontcompareop);
|
||||
gd.ExtendedDynamicStateApi.CmdSetStencilOp(commandBuffer, StencilFaceFlags.FaceBackBit, _backFailOp, _backPassOp,
|
||||
_backDepthFailOp, _backCompareOp);
|
||||
gd.ExtendedDynamicStateApi.CmdSetStencilOp(commandBuffer, StencilFaceFlags.FaceFrontBit, _frontFailOp, _frontPassOp,
|
||||
_frontDepthFailOp, _frontCompareOp);
|
||||
}
|
||||
|
||||
gd.Api.CmdSetStencilCompareMask(commandBuffer, StencilFaceFlags.FaceBackBit, _backCompareMask);
|
||||
|
@ -562,46 +443,16 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
gd.ExtendedDynamicState2Api.CmdSetPrimitiveRestartEnable(commandBuffer, _primitiveRestartEnable);
|
||||
}
|
||||
|
||||
private readonly void RecordPrimitiveTopology(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
{
|
||||
gd.ExtendedDynamicStateApi.CmdSetPrimitiveTopology(commandBuffer, Topology);
|
||||
}
|
||||
|
||||
private readonly void RecordLogicOp(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
{
|
||||
gd.ExtendedDynamicState2Api.CmdSetLogicOp(commandBuffer, _logicOp);
|
||||
}
|
||||
|
||||
private readonly void RecordLogicOpEnable(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
{
|
||||
gd.ExtendedDynamicState3Api.CmdSetLogicOpEnable(commandBuffer, _logicOpEnable);
|
||||
}
|
||||
|
||||
private readonly void RecordDepthClampEnable(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
{
|
||||
gd.ExtendedDynamicState3Api.CmdSetDepthClampEnable(commandBuffer, _depthClampEnable);
|
||||
}
|
||||
|
||||
private readonly void RecordAlphaToCoverEnable(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
{
|
||||
gd.ExtendedDynamicState3Api.CmdSetAlphaToCoverageEnable(commandBuffer, _alphaToCoverEnable);
|
||||
}
|
||||
|
||||
private readonly void RecordAlphaToOneEnable(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
{
|
||||
gd.ExtendedDynamicState3Api.CmdSetAlphaToOneEnable(commandBuffer, _alphaToOneEnable);
|
||||
}
|
||||
|
||||
private readonly void RecordPatchControlPoints(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
{
|
||||
gd.ExtendedDynamicState2Api.CmdSetPatchControlPoints(commandBuffer, _patchControlPoints);
|
||||
}
|
||||
|
||||
private readonly void RecordDepthMode(VulkanRenderer gd, CommandBuffer commandBuffer)
|
||||
{
|
||||
gd.ExtendedDynamicState3Api.CmdSetDepthClipNegativeOneToOne(commandBuffer, DepthMode);
|
||||
}
|
||||
|
||||
private readonly void RecordLineWidth(Vk api, CommandBuffer commandBuffer)
|
||||
{
|
||||
if (!OperatingSystem.IsMacOS())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue