Module: Mesa Branch: main Commit: f1c9efc52e056ad1c48a66ddcbd5dc91e8815756 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1c9efc52e056ad1c48a66ddcbd5dc91e8815756
Author: Karmjit Mahil <karmjit.ma...@imgtec.com> Date: Mon Oct 9 10:25:35 2023 +0100 pvr: Don't merge subpasses on framebuffer-global dependancy When we have a framebuffer-local dependency we cannot merge subpasses. dEQP tests fixed: dEQP-VK.renderpass.suballocation.attachment_allocation .input_output.{15,23,35,61,80,93} dEQP-VK.renderpass.suballocation.attachment_allocation .roll.{13,31,42,47,55,59,61,98} Signed-off-by: Karmjit Mahil <karmjit.ma...@imgtec.com> Reviewed-by: Frank Binns <frank.bi...@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25612> --- src/imagination/vulkan/pvr_pass.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/imagination/vulkan/pvr_pass.c b/src/imagination/vulkan/pvr_pass.c index 027ac7af73c..42ad4c1501c 100644 --- a/src/imagination/vulkan/pvr_pass.c +++ b/src/imagination/vulkan/pvr_pass.c @@ -38,6 +38,7 @@ #include "vk_alloc.h" #include "vk_format.h" #include "vk_log.h" +#include "vk_render_pass.h" /***************************************************************************** PDS pre-baked program generation parameters and variables. @@ -611,10 +612,16 @@ VkResult pvr_CreateRenderPass2(VkDevice _device, dep->dstSubpass != VK_SUBPASS_EXTERNAL && dep->srcSubpass != dep->dstSubpass) { struct pvr_render_subpass *subpass = &pass->subpasses[dep->dstSubpass]; + bool is_dep_fb_local = + vk_subpass_dependency_is_fb_local(dep, + dep->srcStageMask, + dep->dstStageMask); subpass->dep_list[subpass->dep_count] = dep->srcSubpass; - if (pvr_subpass_has_msaa_input_attachment(subpass, pCreateInfo)) + if (pvr_subpass_has_msaa_input_attachment(subpass, pCreateInfo) || + !is_dep_fb_local) { subpass->flush_on_dep[subpass->dep_count] = true; + } subpass->dep_count++; }