anv: add missing handling for attachment locations in secondaries

Fixes:
  dEQP-VK.renderpasses.dynamic_rendering.partial_secondary_cmd_buff.local_read.interaction_with_shader_object
  dEQP-VK.renderpasses.dynamic_rendering.partial_secondary_cmd_buff.local_read.remap_single_attachment_shader_object

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: d2f7b6d5 ("anv: implement VK_KHR_dynamic_rendering_local_read")
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
(cherry picked from commit 095c470d25)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40359>
This commit is contained in:
Lionel Landwerlin 2026-02-23 14:22:49 +02:00 committed by Eric Engestrom
parent ec658ea317
commit 98ec831d58
2 changed files with 15 additions and 4 deletions

View file

@ -5304,7 +5304,7 @@
"description": "anv: add missing handling for attachment locations in secondaries",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "d2f7b6d5a7625f916baa9a9ec110a1799c045f49",
"notes": null

View file

@ -26,6 +26,7 @@
#include "anv_private.h"
#include "anv_measure.h"
#include "vk_common_entrypoints.h"
#include "vk_render_pass.h"
#include "vk_synchronization.h"
#include "vk_util.h"
@ -3917,12 +3918,12 @@ genX(BeginCommandBuffer)(
vk_get_command_buffer_inheritance_as_rendering_resume(cmd_buffer->vk.level,
pBeginInfo,
gcbiar_data);
const VkCommandBufferInheritanceRenderingInfo *inheritance_info =
vk_get_command_buffer_inheritance_rendering_info(cmd_buffer->vk.level,
pBeginInfo);
if (resume_info != NULL) {
genX(CmdBeginRendering)(commandBuffer, resume_info);
} else {
const VkCommandBufferInheritanceRenderingInfo *inheritance_info =
vk_get_command_buffer_inheritance_rendering_info(cmd_buffer->vk.level,
pBeginInfo);
assert(inheritance_info);
gfx->rendering_flags = inheritance_info->flags;
@ -3950,6 +3951,16 @@ genX(BeginCommandBuffer)(
cmd_buffer->state.gfx.dirty |= ANV_CMD_DIRTY_RENDER_AREA |
ANV_CMD_DIRTY_RENDER_TARGETS;
}
const VkRenderingAttachmentLocationInfo *att_loc_info =
inheritance_info ?
vk_find_struct_const(inheritance_info->pNext,
RENDERING_ATTACHMENT_LOCATION_INFO) :
NULL;
if (att_loc_info != NULL) {
vk_common_CmdSetRenderingAttachmentLocationsKHR(
commandBuffer, att_loc_info);
}
}
/* Emit the sample pattern at the beginning of the batch because the