mirror of
https://git.ryujinx.app/projects/Kenji-NX.git
synced 2026-10-09 00:59:13 +02:00
Tweak feedback loop restriction logic
This commit is contained in:
@@ -1532,24 +1532,20 @@ namespace Ryujinx.Graphics.Vulkan
|
|||||||
|
|
||||||
private bool ChangeFeedbackLoop(FeedbackLoopAspects aspects)
|
private bool ChangeFeedbackLoop(FeedbackLoopAspects aspects)
|
||||||
{
|
{
|
||||||
// AMD RDNA 3 GPUs + Qualcomm SoCs only
|
if (_feedbackLoop != aspects)
|
||||||
if (Gd.IsAmdRdna3 || Gd.Vendor == Vendor.Qualcomm)
|
|
||||||
{
|
{
|
||||||
if (_feedbackLoop != aspects)
|
if (Gd.Capabilities.SupportsDynamicAttachmentFeedbackLoop)
|
||||||
{
|
{
|
||||||
if (Gd.Capabilities.SupportsDynamicAttachmentFeedbackLoop)
|
DynamicState.SetFeedbackLoop(aspects);
|
||||||
{
|
|
||||||
DynamicState.SetFeedbackLoop(aspects);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_newState.FeedbackLoopAspects = aspects;
|
|
||||||
}
|
|
||||||
|
|
||||||
_feedbackLoop = aspects;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_newState.FeedbackLoopAspects = aspects;
|
||||||
|
}
|
||||||
|
|
||||||
|
_feedbackLoop = aspects;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||||||
internal bool IsIntelLinux { get; private set; }
|
internal bool IsIntelLinux { get; private set; }
|
||||||
internal bool IsAmdGcn { get; private set; }
|
internal bool IsAmdGcn { get; private set; }
|
||||||
internal bool IsAmdRdna3 { get; private set; }
|
internal bool IsAmdRdna3 { get; private set; }
|
||||||
|
internal bool IsFeedbackLoopDevice { get; private set; }
|
||||||
internal bool IsNvidiaPreTuring { get; private set; }
|
internal bool IsNvidiaPreTuring { get; private set; }
|
||||||
internal bool IsIntelArc { get; private set; }
|
internal bool IsIntelArc { get; private set; }
|
||||||
internal bool IsQualcommProprietary { get; private set; }
|
internal bool IsQualcommProprietary { get; private set; }
|
||||||
@@ -376,6 +377,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|||||||
// ROG Ally (X) Device IDs
|
// ROG Ally (X) Device IDs
|
||||||
|| properties.DeviceID is 0x15BF or 0x15C8 or 0x150E);
|
|| properties.DeviceID is 0x15BF or 0x15C8 or 0x150E);
|
||||||
|
|
||||||
|
IsFeedbackLoopDevice = IsAmdRdna3;
|
||||||
|
|
||||||
if (Vendor == Vendor.Nvidia)
|
if (Vendor == Vendor.Nvidia)
|
||||||
{
|
{
|
||||||
var match = VendorUtils.NvidiaConsumerClassRegex().Match(GpuRenderer);
|
var match = VendorUtils.NvidiaConsumerClassRegex().Match(GpuRenderer);
|
||||||
@@ -439,8 +442,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|||||||
_physicalDevice.IsDeviceExtensionPresent("VK_NV_viewport_array2"),
|
_physicalDevice.IsDeviceExtensionPresent("VK_NV_viewport_array2"),
|
||||||
_physicalDevice.IsDeviceExtensionPresent(ExtExternalMemoryHost.ExtensionName),
|
_physicalDevice.IsDeviceExtensionPresent(ExtExternalMemoryHost.ExtensionName),
|
||||||
supportsDepthClipControl && featuresDepthClipControl.DepthClipControl,
|
supportsDepthClipControl && featuresDepthClipControl.DepthClipControl,
|
||||||
supportsAttachmentFeedbackLoop && featuresAttachmentFeedbackLoop.AttachmentFeedbackLoopLayout,
|
supportsAttachmentFeedbackLoop && featuresAttachmentFeedbackLoop.AttachmentFeedbackLoopLayout && IsFeedbackLoopDevice,
|
||||||
supportsDynamicAttachmentFeedbackLoop && featuresDynamicAttachmentFeedbackLoop.AttachmentFeedbackLoopDynamicState,
|
supportsDynamicAttachmentFeedbackLoop && featuresDynamicAttachmentFeedbackLoop.AttachmentFeedbackLoopDynamicState && IsFeedbackLoopDevice,
|
||||||
propertiesSubgroup.SubgroupSize,
|
propertiesSubgroup.SubgroupSize,
|
||||||
supportedSampleCounts,
|
supportedSampleCounts,
|
||||||
portabilityFlags,
|
portabilityFlags,
|
||||||
|
|||||||
Reference in New Issue
Block a user