Enable VK_EXT_extended_dynamic_state3 this time without seizures.
This commit is contained in:
parent
5bf0937be1
commit
2483b1a52a
2 changed files with 19 additions and 19 deletions
|
@ -79,13 +79,14 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
RasterDiscard = 1 << 11,
|
RasterDiscard = 1 << 11,
|
||||||
LogicOp = 1 << 12,
|
LogicOp = 1 << 12,
|
||||||
DepthClampEnable = 1 << 13,
|
DepthClampEnable = 1 << 13,
|
||||||
LogicOpEnalbe = 1 << 14,
|
LogicOpEnable = 1 << 14,
|
||||||
AlphaToCover = 1 << 15,
|
AlphaToCover = 1 << 15,
|
||||||
AlphaToOne = 1 << 16,
|
AlphaToOne = 1 << 16,
|
||||||
PatchControlPoints = 1 << 17,
|
PatchControlPoints = 1 << 17,
|
||||||
Standard = Blend | DepthBias | Scissor | Stencil | Viewport | LineWidth,
|
Standard = Blend | DepthBias | Scissor | Stencil | Viewport | LineWidth,
|
||||||
Extended = CullMode | FrontFace | DepthTestBool | DepthTestCompareOp | StencilTestEnable,
|
Extended = CullMode | FrontFace | DepthTestBool | DepthTestCompareOp | StencilTestEnable,
|
||||||
Extended2 = RasterDiscard | LogicOp | PatchControlPoints,
|
Extended2 = RasterDiscard | LogicOp | PatchControlPoints,
|
||||||
|
Extended3 = DepthClampEnable | LogicOpEnable | AlphaToCover | AlphaToOne,
|
||||||
}
|
}
|
||||||
|
|
||||||
private DirtyFlags _dirty;
|
private DirtyFlags _dirty;
|
||||||
|
@ -284,7 +285,7 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
if (_logicOpEnable != logicOpEnable)
|
if (_logicOpEnable != logicOpEnable)
|
||||||
{
|
{
|
||||||
_logicOpEnable = logicOpEnable;
|
_logicOpEnable = logicOpEnable;
|
||||||
_dirty |= DirtyFlags.LogicOpEnalbe;
|
_dirty |= DirtyFlags.LogicOpEnable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,6 +330,11 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
_dirty = DirtyFlags.Standard | DirtyFlags.Extended | DirtyFlags.Extended2;
|
_dirty = DirtyFlags.Standard | DirtyFlags.Extended | DirtyFlags.Extended2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gd.Capabilities.SupportsExtendedDynamicState3)
|
||||||
|
{
|
||||||
|
_dirty = DirtyFlags.Standard | DirtyFlags.Extended | DirtyFlags.Extended2 | DirtyFlags.Extended3;
|
||||||
|
}
|
||||||
|
|
||||||
if (gd.IsMoltenVk)
|
if (gd.IsMoltenVk)
|
||||||
{
|
{
|
||||||
_dirty &= ~DirtyFlags.LineWidth;
|
_dirty &= ~DirtyFlags.LineWidth;
|
||||||
|
@ -344,24 +350,24 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
_dirty &= ~DirtyFlags.LogicOp;
|
_dirty &= ~DirtyFlags.LogicOp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gd.ExtendedDynamicState3Features.ExtendedDynamicState3AlphaToCoverageEnable)
|
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3AlphaToCoverageEnable)
|
||||||
{
|
{
|
||||||
_dirty = DirtyFlags.AlphaToCover;
|
_dirty &= ~DirtyFlags.AlphaToCover;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gd.ExtendedDynamicState3Features.ExtendedDynamicState3AlphaToOneEnable)
|
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3AlphaToOneEnable)
|
||||||
{
|
{
|
||||||
_dirty = DirtyFlags.AlphaToOne;
|
_dirty &= ~DirtyFlags.AlphaToOne;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClampEnable)
|
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClampEnable)
|
||||||
{
|
{
|
||||||
_dirty = DirtyFlags.DepthClampEnable;
|
_dirty &= ~DirtyFlags.DepthClampEnable;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gd.ExtendedDynamicState3Features.ExtendedDynamicState3LogicOpEnable)
|
if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3LogicOpEnable)
|
||||||
{
|
{
|
||||||
_dirty = DirtyFlags.LogicOpEnalbe;
|
_dirty &= ~DirtyFlags.LogicOpEnable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -437,7 +443,7 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
RecordPatchControlPoints(gd, commandBuffer);
|
RecordPatchControlPoints(gd, commandBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_dirty.HasFlag(DirtyFlags.LogicOpEnalbe))
|
if (_dirty.HasFlag(DirtyFlags.LogicOpEnable))
|
||||||
{
|
{
|
||||||
RecordLogicOpEnable(gd, commandBuffer);
|
RecordLogicOpEnable(gd, commandBuffer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
ExtConditionalRendering.ExtensionName,
|
ExtConditionalRendering.ExtensionName,
|
||||||
ExtExtendedDynamicState.ExtensionName,
|
ExtExtendedDynamicState.ExtensionName,
|
||||||
ExtExtendedDynamicState2.ExtensionName,
|
ExtExtendedDynamicState2.ExtensionName,
|
||||||
|
ExtExtendedDynamicState3.ExtensionName,
|
||||||
ExtTransformFeedback.ExtensionName,
|
ExtTransformFeedback.ExtensionName,
|
||||||
KhrDrawIndirectCount.ExtensionName,
|
KhrDrawIndirectCount.ExtensionName,
|
||||||
KhrPushDescriptor.ExtensionName,
|
KhrPushDescriptor.ExtensionName,
|
||||||
|
@ -497,13 +498,6 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
pExtendedFeatures = &featuresExtendedDynamicState3;
|
pExtendedFeatures = &featuresExtendedDynamicState3;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Need To Enable the extension, once this is fixed
|
|
||||||
supportedFeaturesExtExtendedDynamicState3.ExtendedDynamicState3DepthClampEnable = false;
|
|
||||||
supportedFeaturesExtExtendedDynamicState3.ExtendedDynamicState3LogicOpEnable = false;
|
|
||||||
supportedFeaturesExtExtendedDynamicState3.ExtendedDynamicState3AlphaToCoverageEnable = false;
|
|
||||||
supportedFeaturesExtExtendedDynamicState3.ExtendedDynamicState3LogicOpEnable = false;
|
|
||||||
|
|
||||||
|
|
||||||
extendedDynamicState3Features = supportedFeaturesExtExtendedDynamicState3;
|
extendedDynamicState3Features = supportedFeaturesExtExtendedDynamicState3;
|
||||||
|
|
||||||
var featuresVk11 = new PhysicalDeviceVulkan11Features
|
var featuresVk11 = new PhysicalDeviceVulkan11Features
|
||||||
|
|
Loading…
Reference in a new issue