There will still be an issue with extension is supported and dynmaic state is not

This commit is contained in:
sunshineinabox 2024-09-01 21:33:05 -07:00
parent 09b8095584
commit 5e86d5e178
4 changed files with 13 additions and 11 deletions

View File

@ -134,7 +134,7 @@ namespace Ryujinx.Graphics.Vulkan
_supportExtDynamic2 = gd.Capabilities.SupportsExtendedDynamicState2.ExtendedDynamicState2; _supportExtDynamic2 = gd.Capabilities.SupportsExtendedDynamicState2.ExtendedDynamicState2;
_newState.Initialize(_supportExtDynamic, gd.Capabilities.SupportsExtendedDynamicState2); _newState.Initialize(gd.Capabilities);
} }
public void Initialize() public void Initialize()

View File

@ -159,7 +159,7 @@ namespace Ryujinx.Graphics.Vulkan
var extendedDynamicState = gd.Capabilities.SupportsExtendedDynamicState; var extendedDynamicState = gd.Capabilities.SupportsExtendedDynamicState;
PipelineState pipeline = new(); PipelineState pipeline = new();
pipeline.Initialize(extendedDynamicState, extendedDynamicState2); pipeline.Initialize(gd.Capabilities);
// It is assumed that Dynamic State is enabled when this conversion is used. // It is assumed that Dynamic State is enabled when this conversion is used.
pipeline.DepthBoundsTestEnable = false; // Not implemented. pipeline.DepthBoundsTestEnable = false; // Not implemented.

View File

@ -255,10 +255,10 @@ namespace Ryujinx.Graphics.Vulkan
private bool _supportsExtDynamicState; private bool _supportsExtDynamicState;
private PhysicalDeviceExtendedDynamicState2FeaturesEXT _supportsExtDynamicState2; private PhysicalDeviceExtendedDynamicState2FeaturesEXT _supportsExtDynamicState2;
private bool _supportsFeedBackLoopDynamicState;
public void Initialize(bool supportsExtDynamicState, public void Initialize(HardwareCapabilities capabilities)
PhysicalDeviceExtendedDynamicState2FeaturesEXT extendedDynamicState2)
{ {
HasTessellationControlShader = false; HasTessellationControlShader = false;
Stages = new NativeArray<PipelineShaderStageCreateInfo>(Constants.MaxShaderStages); Stages = new NativeArray<PipelineShaderStageCreateInfo>(Constants.MaxShaderStages);
@ -273,10 +273,14 @@ namespace Ryujinx.Graphics.Vulkan
PolygonMode = PolygonMode.Fill; PolygonMode = PolygonMode.Fill;
DepthBoundsTestEnable = false; DepthBoundsTestEnable = false;
FeedbackLoopAspects = FeedbackLoopAspects.None; _supportsExtDynamicState = capabilities.SupportsExtendedDynamicState;
_supportsExtDynamicState2 = capabilities.SupportsExtendedDynamicState2;
_supportsFeedBackLoopDynamicState = capabilities.SupportsDynamicAttachmentFeedbackLoop;
_supportsExtDynamicState = supportsExtDynamicState; if (_supportsFeedBackLoopDynamicState || !capabilities.SupportsAttachmentFeedbackLoop)
_supportsExtDynamicState2 = extendedDynamicState2; {
FeedbackLoopAspects = FeedbackLoopAspects.None;
}
if (_supportsExtDynamicState) if (_supportsExtDynamicState)
{ {
@ -577,8 +581,6 @@ namespace Ryujinx.Graphics.Vulkan
colorBlendState.PNext = &colorBlendAdvancedState; colorBlendState.PNext = &colorBlendAdvancedState;
} }
bool supportsFeedbackLoopDynamicState = gd.Capabilities.SupportsDynamicAttachmentFeedbackLoop;
DynamicState* dynamicStates = stackalloc DynamicState[MaxDynamicStatesCount]; DynamicState* dynamicStates = stackalloc DynamicState[MaxDynamicStatesCount];
uint dynamicStatesCount = 7; uint dynamicStatesCount = 7;
@ -633,7 +635,7 @@ namespace Ryujinx.Graphics.Vulkan
} }
} }
if (supportsFeedbackLoopDynamicState) if (_supportsFeedBackLoopDynamicState)
{ {
dynamicStates[dynamicStatesCount++] = DynamicState.AttachmentFeedbackLoopEnableExt; dynamicStates[dynamicStatesCount++] = DynamicState.AttachmentFeedbackLoopEnableExt;
} }

View File

@ -531,7 +531,7 @@ namespace Ryujinx.Graphics.Vulkan
public void CreateBackgroundComputePipeline() public void CreateBackgroundComputePipeline()
{ {
PipelineState pipeline = new(); PipelineState pipeline = new();
pipeline.Initialize(_gd.Capabilities.SupportsExtendedDynamicState, _gd.Capabilities.SupportsExtendedDynamicState2); pipeline.Initialize(_gd.Capabilities);
pipeline.Stages[0] = _shaders[0].GetInfo(); pipeline.Stages[0] = _shaders[0].GetInfo();
pipeline.StagesCount = 1; pipeline.StagesCount = 1;