mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 00:49:04 +02:00
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:
parent
60896f1784
commit
d905d0fca7
4 changed files with 16 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue