anv: use the color_map if present for calculating color_mask
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

If the FS has writes to multiple color outputs, but there are not enough
color attachments for them all, we may optimize out the exceeding ones.
With VK_KHR_dynamic_rendering_local_read, we were not respecting the
mapping from output to attachment set by the application, and the wrong
writes were getting eliminated.

Fixes future CTS tests: dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.local_read.remap_single_attachment*

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37531>
This commit is contained in:
Iván Briano 2025-09-22 17:06:36 -07:00 committed by Marge Bot
parent 66fcae5b1b
commit 186cd59cf2
4 changed files with 8 additions and 9 deletions

View file

@ -1,2 +0,0 @@
# New failures with ES CTS 3.2.12.0
KHR-GLES3.framebuffer_blit.scissor_blit,Fail

View file

@ -13,6 +13,3 @@ KHR-GLES31.core.texture_border_clamp.Texture2DDC16Linear,Fail
# new with ANGLE 2024-10-17
KHR-GLES31.core.blend_equation_advanced.test_coherency.multiplySequence,Fail
# New failures with ES CTS 3.2.12.0
KHR-GLES3.framebuffer_blit.scissor_blit,Fail

View file

@ -1,2 +0,0 @@
# New failures with ES CTS 3.2.12.0
KHR-GLES3.framebuffer_blit.scissor_blit,Fail

View file

@ -395,9 +395,15 @@ rp_color_mask(const struct vk_graphics_pipeline_state *state)
uint32_t color_mask = 0;
for (uint32_t i = 0; i < state->rp->color_attachment_count; i++) {
if (state->rp->color_attachment_formats[i] != VK_FORMAT_UNDEFINED)
if (state->rp->color_attachment_formats[i] != VK_FORMAT_UNDEFINED) {
if (state->cal) {
if (state->cal->color_map[i] != MESA_VK_ATTACHMENT_UNUSED)
color_mask |= BITFIELD_BIT(state->cal->color_map[i]);
} else {
color_mask |= BITFIELD_BIT(i);
}
}
}
return color_mask;
}