util/u_threaded: fix a CPU storage crash due to an invalid codepath taken

Fixes: 3df9d8ed80 - gallium/u_threaded: implement pipelined partial buffer uploads using CPU storage

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6837
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6594
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6613

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17556>
This commit is contained in:
Marek Olšák 2022-07-15 07:31:49 -04:00 committed by Marge Bot
parent 62207cf885
commit 83d820973c
1 changed files with 8 additions and 2 deletions

View File

@ -2370,8 +2370,14 @@ tc_transfer_flush_region(struct pipe_context *_pipe,
tc_buffer_do_flush_region(tc, ttrans, &box);
}
/* Staging transfers don't send the call to the driver. */
if (ttrans->staging)
/* Staging transfers don't send the call to the driver.
*
* Transfers using the CPU storage shouldn't call transfer_flush_region
* in the driver because the buffer is not really mapped on the driver
* side and the CPU storage always re-uploads everything (flush_region
* makes no difference).
*/
if (ttrans->staging || ttrans->cpu_storage_mapped)
return;
}