Disable extended dynamic state on <r42 mali drivers

This commit is contained in:
Billy Laws 2023-02-20 17:52:17 +00:00
parent acf118155d
commit 750dfb8f00
2 changed files with 6 additions and 1 deletions

View file

@ -58,7 +58,7 @@ namespace skyline::gpu {
EXT_SET("VK_KHR_uniform_buffer_standard_layout", supportsUniformBufferStandardLayout);
EXT_SET("VK_EXT_primitive_topology_list_restart", hasPrimitiveTopologyListRestartExt);
EXT_SET("VK_EXT_transform_feedback", hasTransformFeedbackExt);
EXT_SET("VK_EXT_extended_dynamic_state", hasExtendedDynamicStateExt);
EXT_SET_COND("VK_EXT_extended_dynamic_state", hasExtendedDynamicStateExt, !quirks.brokenDynamicStateVertexBindings);
EXT_SET("VK_EXT_robustness2", hasRobustness2Ext);
}
@ -260,6 +260,10 @@ namespace skyline::gpu {
}
case vk::DriverId::eArmProprietary: {
if (deviceProperties.driverVersion < VK_MAKE_VERSION(42, 0, 0))
brokenDynamicStateVertexBindings = true;
vkImageMutableFormatCostly = true; // Disables AFBC in some cases
maxGlobalPriority = vk::QueueGlobalPriorityEXT::eHigh;
break;
}

View file

@ -78,6 +78,7 @@ namespace skyline::gpu {
bool brokenMultithreadedPipelineCompilation{}; //!< [Qualcomm Proprietary] A bug that causes the shader compiler to crash when compiling pipelines on multiple threads simultaneously
bool brokenSubgroupMaskExtractDynamic{}; //!< [Qualcomm Proprietary] A bug that causes shaders using OpVectorExtractDynamic on the subgroup mask builtins to fail to compile
bool brokenSubgroupShuffle{}; //!< [Qualcomm Proprietary] A bug that causes shaders using OpSubgroupShuffle to do all sorts of weird things
bool brokenDynamicStateVertexBindings{}; //!< [ARM Proprietary] A bug that causes VK_EXT_dynamic_state vertex bindings not to work correctly
u32 maxSubpassCount{std::numeric_limits<u32>::max()}; //!< The maximum amount of subpasses within a renderpass, this is limited to 64 on older Adreno proprietary drivers
vk::QueueGlobalPriorityEXT maxGlobalPriority{vk::QueueGlobalPriorityEXT::eMedium}; //!< The highest allowed global priority of the queue, drivers will not allow higher priorities to be set on queues