mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 18:10:11 +01:00
tu: Use a temporary descriptor to patch input attachments
The final descriptor is in write-combined memory, so avoid reading from it. Instead modify a temporary descriptor on the stack. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35420>
This commit is contained in:
parent
83212054e0
commit
d77166edec
1 changed files with 6 additions and 2 deletions
|
|
@ -2075,7 +2075,7 @@ tu_emit_input_attachments(struct tu_cmd_buffer *cmd,
|
||||||
const struct tu_image_view *iview = cmd->state.attachments[a];
|
const struct tu_image_view *iview = cmd->state.attachments[a];
|
||||||
const struct tu_render_pass_attachment *att =
|
const struct tu_render_pass_attachment *att =
|
||||||
&cmd->state.pass->attachments[a];
|
&cmd->state.pass->attachments[a];
|
||||||
uint32_t *dst = &texture.map[A6XX_TEX_CONST_DWORDS * i];
|
uint32_t dst[A6XX_TEX_CONST_DWORDS];
|
||||||
uint32_t gmem_offset = tu_attachment_gmem_offset(cmd, att, 0);
|
uint32_t gmem_offset = tu_attachment_gmem_offset(cmd, att, 0);
|
||||||
uint32_t cpp = att->cpp;
|
uint32_t cpp = att->cpp;
|
||||||
|
|
||||||
|
|
@ -2134,8 +2134,10 @@ tu_emit_input_attachments(struct tu_cmd_buffer *cmd,
|
||||||
gmem_offset = att->gmem_offset_stencil[cmd->state.gmem_layout];
|
gmem_offset = att->gmem_offset_stencil[cmd->state.gmem_layout];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gmem || !subpass->input_attachments[i / 2].patch_input_gmem)
|
if (!gmem || !subpass->input_attachments[i / 2].patch_input_gmem) {
|
||||||
|
memcpy(&texture.map[i * A6XX_TEX_CONST_DWORDS], dst, sizeof(dst));
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* patched for gmem */
|
/* patched for gmem */
|
||||||
dst[0] = pkt_field_set(A6XX_TEX_CONST_0_TILE_MODE, dst[0], TILE6_2);
|
dst[0] = pkt_field_set(A6XX_TEX_CONST_0_TILE_MODE, dst[0], TILE6_2);
|
||||||
|
|
@ -2166,6 +2168,8 @@ tu_emit_input_attachments(struct tu_cmd_buffer *cmd,
|
||||||
dst[5] &= A6XX_TEX_CONST_5_DEPTH__MASK;
|
dst[5] &= A6XX_TEX_CONST_5_DEPTH__MASK;
|
||||||
for (unsigned i = 6; i < A6XX_TEX_CONST_DWORDS; i++)
|
for (unsigned i = 6; i < A6XX_TEX_CONST_DWORDS; i++)
|
||||||
dst[i] = 0;
|
dst[i] = 0;
|
||||||
|
|
||||||
|
memcpy(&texture.map[i * A6XX_TEX_CONST_DWORDS], dst, sizeof(dst));
|
||||||
}
|
}
|
||||||
|
|
||||||
struct tu_cs cs;
|
struct tu_cs cs;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue