diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs b/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs index 1f7433515..6493042c1 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs @@ -29,6 +29,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. @@ -461,6 +462,14 @@ namespace Ryujinx.Graphics.Vulkan features2.PNext = &supportedFeaturesShaderInt8; } + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT supportedPageableDeviceLocalMemoryFeatures = new() + { + SType = StructureType.PhysicalDevicePageableDeviceLocalMemoryFeaturesExt, + PNext = features2.PNext, + }; + + features2.PNext = &supportedPageableDeviceLocalMemoryFeatures; + PhysicalDeviceVulkan12Features supportedPhysicalDeviceVulkan12Features = new() { SType = StructureType.PhysicalDeviceVulkan12Features, @@ -633,6 +642,15 @@ namespace Ryujinx.Graphics.Vulkan pExtendedFeatures = &featuresDynamicAttachmentFeedbackLoop; } + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT featuresPageableDeviceLocalMemory = new() + { + SType = StructureType.PhysicalDevicePageableDeviceLocalMemoryFeaturesExt, + PNext = pExtendedFeatures, + PageableDeviceLocalMemory = supportedPageableDeviceLocalMemoryFeatures.PageableDeviceLocalMemory, + }; + + pExtendedFeatures = &featuresPageableDeviceLocalMemory; + var enabledExtensions = _requiredExtensions.Union(_desirableExtensions.Intersect(physicalDevice.DeviceExtensions)); if (VendorUtils.FromId(physicalDevice.PhysicalDeviceProperties.VendorID) == Vendor.Qualcomm &&