mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-10 01:18:18 +02:00
panvk/csf: Emit fragment layer state just before RUN_FRAGMENT2
Postpone emitting the fragment layer state in the fragment job issue path until just before RUN_FRAGMENT2 is emitted. This state is loaded from FBD_POINTER which might change due to IR. Therefore, postponing is required. Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com> Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41643>
This commit is contained in:
parent
5a7159f869
commit
588e211fde
1 changed files with 6 additions and 3 deletions
|
|
@ -3594,11 +3594,9 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf)
|
|||
bool has_oq_chain = cmdbuf->state.gfx.render.oq.chain != 0;
|
||||
|
||||
/* Now initialize the fragment bits. */
|
||||
struct cs_index fbd_pointer = cs_sr_reg64(b, FRAGMENT, FBD_POINTER);
|
||||
cs_update_frag_ctx(b) {
|
||||
#if PAN_ARCH >= 14
|
||||
cs_emit_static_fragment_state(b, cmdbuf);
|
||||
cs_emit_layer_fragment_state(b, fbd_pointer);
|
||||
#else
|
||||
const struct pan_fb_layout *fb = &cmdbuf->state.gfx.render.fb.layout;
|
||||
cs_move32_to(b, cs_sr_reg32(b, FRAGMENT, BBOX_MIN),
|
||||
|
|
@ -3685,8 +3683,12 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf)
|
|||
cs_wait_slot(b, SB_ID(IMM_FLUSH));
|
||||
}
|
||||
|
||||
struct cs_index fbd_pointer = cs_sr_reg64(b, FRAGMENT, FBD_POINTER);
|
||||
|
||||
if (cmdbuf->state.gfx.render.layer_count <= 1) {
|
||||
#if PAN_ARCH >= 14
|
||||
cs_update_frag_ctx(b)
|
||||
cs_emit_layer_fragment_state(b, fbd_pointer);
|
||||
cs_trace_run_fragment2(b, tracing_ctx, cs_scratch_reg_tuple(b, 0, 4),
|
||||
false, MALI_TILE_RENDER_ORDER_Z_ORDER);
|
||||
#else
|
||||
|
|
@ -3702,7 +3704,8 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf)
|
|||
cs_add_imm32(b, remaining_layers, remaining_layers, -1);
|
||||
|
||||
#if PAN_ARCH >= 14
|
||||
cs_emit_layer_fragment_state(b, fbd_pointer);
|
||||
cs_update_frag_ctx(b)
|
||||
cs_emit_layer_fragment_state(b, fbd_pointer);
|
||||
cs_trace_run_fragment2(b, tracing_ctx, run_fragment_regs, false,
|
||||
MALI_TILE_RENDER_ORDER_Z_ORDER);
|
||||
#else
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue