tc: don't reuse first rp info on batch if there is work pending
this otherwise causes a mismatch if drivers try to access previous info during a set_framebuffer_state call (e.g., to flush clears) Acked-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35777>
This commit is contained in:
committed by
Marge Bot
parent
f0c58518cc
commit
9482ad212d
@@ -1452,8 +1452,10 @@ tc_set_framebuffer_state(struct pipe_context *_pipe,
|
||||
{
|
||||
struct threaded_context *tc = threaded_context(_pipe);
|
||||
unsigned next = tc->next;
|
||||
/* always skip incrementing if this is the first call on a batch */
|
||||
bool set_skip_first_increment = !tc->batch_slots[tc->next].num_total_slots;
|
||||
/* always skip incrementing if this is the first call on a batch AND there is no pending work from previous batch */
|
||||
bool set_skip_first_increment = !tc->batch_slots[tc->next].num_total_slots &&
|
||||
(!tc->renderpass_info_recording ||
|
||||
!TC_RENDERPASS_INFO_HAS_WORK(tc->renderpass_info_recording->data32[0]));
|
||||
struct tc_framebuffer *p =
|
||||
tc_add_call_no_copy(tc, TC_CALL_set_framebuffer_state, tc_framebuffer);
|
||||
unsigned nr_cbufs = fb->nr_cbufs;
|
||||
|
||||
Reference in New Issue
Block a user