mirror of
https://github.com/Takiiiiiiii/strato.git
synced 2025-07-17 08:46:39 +00:00
Add quirk for relaxed render pass compatibility
As we require a relaxed version of the Vulkan render pass compatibility clause for caching multi-subpass render passes, we now utilize a quirk to determine if this is supported which it is on Nvidia/Adreno while AMD/Mali where it isn't supported we force single-subpass render passes.
This commit is contained in:
@ -143,6 +143,7 @@ namespace skyline::gpu {
|
||||
needsIndividualTextureBindingWrites = true;
|
||||
vkImageMutableFormatCostly = true; // Disables UBWC
|
||||
brokenDescriptorAliasing = true;
|
||||
relaxedRenderPassCompatibility = true; // Adreno drivers support relaxed render pass compatibility rules
|
||||
|
||||
if (deviceProperties.driverVersion < VK_MAKE_VERSION(512, 600, 0))
|
||||
maxSubpassCount = 64; // Driver will segfault while destroying the renderpass and associated objects if this is exceeded on all 5xx and below drivers
|
||||
@ -160,6 +161,11 @@ namespace skyline::gpu {
|
||||
break;
|
||||
}
|
||||
|
||||
case vk::DriverId::eNvidiaProprietary: {
|
||||
relaxedRenderPassCompatibility = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case vk::DriverId::eAmdProprietary: {
|
||||
maxGlobalPriority = vk::QueueGlobalPriorityEXT::eHigh;
|
||||
break;
|
||||
@ -172,8 +178,8 @@ namespace skyline::gpu {
|
||||
|
||||
std::string TraitManager::QuirkManager::Summary() {
|
||||
return fmt::format(
|
||||
"\n* Needs Individual Texture Binding Writes: {}\n* VkImage Mutable Format is costly: {}\n* Broken Descriptor Aliasing: {}\n* Max Subpass Count: {}\n* Max Global Queue Priority: {}",
|
||||
needsIndividualTextureBindingWrites, vkImageMutableFormatCostly, brokenDescriptorAliasing, maxSubpassCount, vk::to_string(maxGlobalPriority)
|
||||
"\n* Needs Individual Texture Binding Writes: {}\n* VkImage Mutable Format is costly: {}\n* Broken Descriptor Aliasing: {}\n* Relaxed Render Pass Compatibility: {}\n* Max Subpass Count: {}\n* Max Global Queue Priority: {}",
|
||||
needsIndividualTextureBindingWrites, vkImageMutableFormatCostly, brokenDescriptorAliasing, relaxedRenderPassCompatibility, maxSubpassCount, vk::to_string(maxGlobalPriority)
|
||||
);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user