Disable compute shaders on mali

This will need to be debugged properly at some point but its fine for now.
This commit is contained in:
Billy Laws 2022-11-19 20:20:27 +00:00
parent d69c6851f3
commit a16383fd4b
3 changed files with 5 additions and 0 deletions

View File

@ -28,6 +28,9 @@ namespace skyline::gpu::interconnect::kepler_compute {
} }
void KeplerCompute::Dispatch(const QMD &qmd) { void KeplerCompute::Dispatch(const QMD &qmd) {
if (ctx.gpu.traits.quirks.brokenComputeShaders)
return;
StateUpdateBuilder builder{*ctx.executor.allocator}; StateUpdateBuilder builder{*ctx.executor.allocator};
constantBuffers.Update(ctx, qmd); constantBuffers.Update(ctx, qmd);

View File

@ -239,6 +239,7 @@ namespace skyline::gpu {
case vk::DriverId::eArmProprietary: { case vk::DriverId::eArmProprietary: {
maxGlobalPriority = vk::QueueGlobalPriorityEXT::eHigh; maxGlobalPriority = vk::QueueGlobalPriorityEXT::eHigh;
brokenComputeShaders = true;
break; break;
} }

View File

@ -64,6 +64,7 @@ namespace skyline::gpu {
bool relaxedRenderPassCompatibility{}; //!< [Adreno Proprietary/Freedreno] A relaxed version of Vulkan specification's render pass compatibility clause which allows for caching pipeline objects for multi-subpass renderpasses, this is intentionally disabled by default as it requires testing prior to enabling bool relaxedRenderPassCompatibility{}; //!< [Adreno Proprietary/Freedreno] A relaxed version of Vulkan specification's render pass compatibility clause which allows for caching pipeline objects for multi-subpass renderpasses, this is intentionally disabled by default as it requires testing prior to enabling
bool brokenPushDescriptors{}; //!< [Adreno Proprietary] A bug that causes push descriptor updates to ignored by the driver in certain situations bool brokenPushDescriptors{}; //!< [Adreno Proprietary] A bug that causes push descriptor updates to ignored by the driver in certain situations
bool brokenSpirvPositionInput{}; //!< [Adreno Proprietary] A bug that causes the shader compiler to fail on shaders with vertex position inputs not contained within a struct bool brokenSpirvPositionInput{}; //!< [Adreno Proprietary] A bug that causes the shader compiler to fail on shaders with vertex position inputs not contained within a struct
bool brokenComputeShaders{}; //!< [ARM Proprietary] A bug that causes compute shaders in some games to crash the GPU
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 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 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