zink: try update fb resource refs when starting new renderpass
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fri, 19 May 2023 14:27:25 +0000 (10:27 -0400)
committerMarge Bot <emma+marge@anholt.net>
Mon, 22 May 2023 11:15:22 +0000 (11:15 +0000)
commit62961b172f75ba628cad8ee58445f51a1c88fc5d
tree6fe38c6fe046ffcc5df5c7d8fab8ddbd7a3defd2
parentcab7ba00e2ea57ba8205ff11bae29aabfd37b8c4
zink: try update fb resource refs when starting new renderpass

in the case where a draw is triggered after a flush, zink_update_descriptor_refs
will be called to set batch tracking for descriptors. this function also
handles refs for fb attachments, and everything is usually fine there

the problem with this approach is that tracking is no longer set on view
objects at renderpass begin, which makes them susceptible to early deletion
if a rp isn't started from a draw call

instead, apply batch tracking to fb attachment resources on renderpass
begin if the BATCH_CHANGED flag is set (need to rename this at some point)
in order to guarantee that the resource (object) lifetime will match the
cmdbuf runtime [since imageviews are now only freed upon batch completion]

fixes #9059

Fixes: f6bbd7875a8 ("zink: remove batch tracking/usage from view types"
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23132>
src/gallium/drivers/zink/zink_context.c