Vulkan: Enable pageable device-local memory

This commit is contained in:
sunshineinabox
2026-02-26 17:39:07 -06:00
committed by KeatonTheBot
parent caed40d99a
commit 6cf0a413a0
@@ -27,6 +27,7 @@ namespace Ryujinx.Graphics.Vulkan
KhrDrawIndirectCount.ExtensionName,
KhrPushDescriptor.ExtensionName,
ExtExternalMemoryHost.ExtensionName,
ExtPageableDeviceLocalMemory.ExtensionName,
"VK_EXT_blend_operation_advanced",
"VK_EXT_custom_border_color",
"VK_EXT_descriptor_indexing", // Enabling this works around an issue with disposed buffer bindings on RADV.
@@ -382,6 +383,14 @@ namespace Ryujinx.Graphics.Vulkan
features2.PNext = &supportedFeaturesDynamicAttachmentFeedbackLoopLayout;
}
PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT supportedPageableDeviceLocalMemoryFeatures = new()
{
SType = StructureType.PhysicalDevicePageableDeviceLocalMemoryFeaturesExt,
PNext = features2.PNext,
};
features2.PNext = &supportedPageableDeviceLocalMemoryFeatures;
PhysicalDeviceVulkan12Features supportedPhysicalDeviceVulkan12Features = new()
{
SType = StructureType.PhysicalDeviceVulkan12Features,
@@ -587,6 +596,15 @@ namespace Ryujinx.Graphics.Vulkan
pExtendedFeatures = &featuresDynamicAttachmentFeedbackLoopLayout;
}
PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT featuresPageableDeviceLocalMemory = new()
{
SType = StructureType.PhysicalDevicePageableDeviceLocalMemoryFeaturesExt,
PNext = pExtendedFeatures,
PageableDeviceLocalMemory = supportedPageableDeviceLocalMemoryFeatures.PageableDeviceLocalMemory,
};
pExtendedFeatures = &featuresPageableDeviceLocalMemory;
var enabledExtensions = _requiredExtensions.Union(_desirableExtensions.Intersect(physicalDevice.DeviceExtensions)).ToArray();
nint* ppEnabledExtensions = stackalloc nint[enabledExtensions.Length];