tu: Use image aspects for feedback loops

For consistency with the dynamic state.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23374>
This commit is contained in:
Connor Abbott 2023-05-26 15:47:23 +02:00 committed by Marge Bot
parent 339630ab05
commit 833a0cf76e
4 changed files with 7 additions and 11 deletions

View file

@ -3473,8 +3473,8 @@ tu_CmdBindPipeline(VkCommandBuffer commandBuffer,
cmd->state.dirty |= TU_CMD_DIRTY_PER_VIEW_VIEWPORT;
}
if (gfx_pipeline->feedback_loop_ds != cmd->state.pipeline_feedback_loop_ds) {
cmd->state.pipeline_feedback_loop_ds = gfx_pipeline->feedback_loop_ds;
if (gfx_pipeline->feedback_loops != cmd->state.pipeline_feedback_loops) {
cmd->state.pipeline_feedback_loops = gfx_pipeline->feedback_loops;
cmd->state.dirty |= TU_CMD_DIRTY_LRZ;
}
}
@ -4974,7 +4974,7 @@ tu6_build_depth_plane_z_mode(struct tu_cmd_buffer *cmd, struct tu_cs *cs)
const struct tu_subpass *subpass = cmd->state.subpass;
if ((fs->variant->has_kill ||
cmd->state.pipeline_feedback_loop_ds) &&
(cmd->state.pipeline_feedback_loops & VK_IMAGE_ASPECT_DEPTH_BIT)) &&
(depth_write || stencil_write)) {
zmode = (cmd->state.lrz.valid && cmd->state.lrz.enabled)
? A6XX_EARLY_LRZ_LATE_Z

View file

@ -505,11 +505,11 @@ struct tu_cmd_state
bool blend_reads_dest;
bool stencil_front_write;
bool stencil_back_write;
bool pipeline_feedback_loop_ds;
bool pipeline_sysmem_single_prim_mode;
bool pipeline_has_tess;
bool pipeline_has_gs;
bool pipeline_disable_gmem;
VkImageAspectFlags pipeline_feedback_loops;
bool pipeline_blend_lrz, pipeline_bandwidth;
uint32_t pipeline_draw_states;

View file

@ -3870,12 +3870,8 @@ tu_pipeline_builder_build(struct tu_pipeline_builder *builder,
&gfx_pipeline->sample_locations;
vk_dynamic_graphics_state_fill(&gfx_pipeline->dynamic_state,
&builder->graphics_state);
gfx_pipeline->feedback_loop_color =
(builder->graphics_state.pipeline_flags &
VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT);
gfx_pipeline->feedback_loop_ds =
(builder->graphics_state.pipeline_flags &
VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT);
gfx_pipeline->feedback_loops =
vk_pipeline_flags_feedback_loops(builder->graphics_state.pipeline_flags);
gfx_pipeline->feedback_loop_may_involve_textures =
builder->graphics_state.feedback_loop_not_input_only;
}

View file

@ -204,7 +204,7 @@ struct tu_graphics_pipeline {
*/
struct vk_sample_locations_state sample_locations;
bool feedback_loop_color, feedback_loop_ds;
VkImageAspectFlags feedback_loops;
bool feedback_loop_may_involve_textures;
};