hk: fix partial EOT program

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31532>
This commit is contained in:
Alyssa Rosenzweig 2024-09-28 11:01:57 -04:00 committed by Marge Bot
parent ee96ab6976
commit e092e1c5bb
2 changed files with 13 additions and 3 deletions

View file

@ -745,11 +745,12 @@ hk_cs_init_graphics(struct hk_cmd_buffer *cmd, struct hk_cs *cs)
cs->tib = render->tilebuffer;
/* Assume this is not the first control stream of the render pass, so
* initially use the partial background program and ZLS control.
* hk_BeginRendering will override.
* initially use the partial background/EOT program and ZLS control.
* hk_BeginRendering/hk_EndRendering will override.
*/
cs->cr = render->cr;
cs->cr.bg.main = render->cr.bg.partial;
cs->cr.eot.main = render->cr.eot.partial;
cs->cr.zls_control = render->cr.zls_control_partial;
/* Barrier to enforce GPU-CPU coherency, in case this batch is back to back

View file

@ -612,7 +612,8 @@ hk_CmdBeginRendering(VkCommandBuffer commandBuffer,
render->cr.eot.main =
hk_build_bg_eot(cmd, pRenderingInfo, true, false, incomplete_render_area);
render->cr.eot.partial = render->cr.eot.main;
render->cr.eot.partial =
hk_build_bg_eot(cmd, pRenderingInfo, true, true, incomplete_render_area);
render->cr.isp_bgobjvals = 0x300;
@ -892,6 +893,14 @@ hk_CmdEndRendering(VkCommandBuffer commandBuffer)
struct hk_rendering_state *render = &cmd->state.gfx.render;
struct hk_device *dev = hk_cmd_buffer_device(cmd);
/* The last control stream of the render pass is special since it gets its
* stores dropped. Swap it in.
*/
struct hk_cs *cs = cmd->current_cs.gfx;
if (cs) {
cs->cr.eot.main = render->cr.eot.main;
}
perf_debug(dev, "End rendering");
hk_cmd_buffer_end_graphics(cmd);