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.Mahil@imgtec.com> Reviewed-by: Frank Binns <frank.binns@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25612>
This commit is contained in:
@@ -38,6 +38,7 @@
|
|||||||
#include "vk_alloc.h"
|
#include "vk_alloc.h"
|
||||||
#include "vk_format.h"
|
#include "vk_format.h"
|
||||||
#include "vk_log.h"
|
#include "vk_log.h"
|
||||||
|
#include "vk_render_pass.h"
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
PDS pre-baked program generation parameters and variables.
|
PDS pre-baked program generation parameters and variables.
|
||||||
@@ -611,10 +612,16 @@ VkResult pvr_CreateRenderPass2(VkDevice _device,
|
|||||||
dep->dstSubpass != VK_SUBPASS_EXTERNAL &&
|
dep->dstSubpass != VK_SUBPASS_EXTERNAL &&
|
||||||
dep->srcSubpass != dep->dstSubpass) {
|
dep->srcSubpass != dep->dstSubpass) {
|
||||||
struct pvr_render_subpass *subpass = &pass->subpasses[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;
|
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->flush_on_dep[subpass->dep_count] = true;
|
||||||
|
}
|
||||||
|
|
||||||
subpass->dep_count++;
|
subpass->dep_count++;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user