pvr: take zonlyrender into account when setting up ZLS control

Signed-off-by: Luigi Santivetti <luigi.santivetti@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36412>
This commit is contained in:
Luigi Santivetti 2024-07-18 16:31:14 +01:00 committed by Marge Bot
parent 60896f1784
commit d905d0fca7
4 changed files with 16 additions and 0 deletions

View file

@ -1511,6 +1511,10 @@ static VkResult pvr_sub_cmd_gfx_job_init(const struct pvr_device_info *dev_info,
pvr_setup_emit_state(dev_info, hw_render, render_pass_info, &emit_state);
job->z_only_render = !hw_render->eot_surface_count &&
!sub_cmd->frag_has_side_effects &&
!sub_cmd->has_depth_feedback;
memcpy(job->pbe_reg_words,
emit_state.pbe_reg_words,
sizeof(job->pbe_reg_words));
@ -5779,6 +5783,8 @@ pvr_emit_dirty_ppp_state(struct pvr_cmd_buffer *const cmd_buffer,
struct pvr_cmd_buffer_state *const state = &cmd_buffer->state;
struct vk_dynamic_graphics_state *const dynamic_state =
&cmd_buffer->vk.dynamic_graphics_state;
const struct pvr_fragment_shader_state *fragment_state =
&state->gfx_pipeline->shader_state.fragment;
VkResult result;
/* TODO: The emit_header will be dirty only if
@ -5849,6 +5855,12 @@ pvr_emit_dirty_ppp_state(struct pvr_cmd_buffer *const cmd_buffer,
if (result != VK_SUCCESS)
return result;
if (state->gfx_pipeline &&
fragment_state->pass_type == ROGUE_TA_PASSTYPE_DEPTH_FEEDBACK) {
assert(state->current_sub_cmd->type == PVR_SUB_CMD_TYPE_GRAPHICS);
state->current_sub_cmd->gfx.has_depth_feedback = true;
}
return VK_SUCCESS;
}

View file

@ -1210,6 +1210,7 @@ static void pvr_frag_state_stream_init(struct pvr_render_ctx *ctx,
value.forcezload = value.zloaden || value.sloaden;
value.forcezstore = value.zstoreen || value.sstoreen;
value.zonlyrender = job->z_only_render;
}
stream_ptr += pvr_cmd_length(CR_ISP_ZLSCTL);

View file

@ -84,6 +84,7 @@ struct pvr_render_job {
bool has_stencil_attachment : 1;
bool requires_spm_scratch_buffer : 1;
bool disable_pixel_merging : 1;
bool z_only_render : 1;
};
uint32_t pds_pixel_event_data_offset;

View file

@ -512,6 +512,8 @@ struct pvr_sub_cmd_gfx {
bool has_occlusion_query;
bool wait_on_previous_transfer;
bool has_depth_feedback;
};
struct pvr_sub_cmd_compute {