mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-23 15:30:09 +00:00
panfrost: Only copy resources when they are in a pending batch
Fixes a performance regression in alacritty, and rendering is still
fine in GLQuake ports.
Fixes: 361fb38662
("panfrost: Copy resources when mapping to avoid waiting for readers")
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5642>
This commit is contained in:
parent
66df2ffa36
commit
be5d06106f
@ -604,10 +604,14 @@ panfrost_transfer_map(struct pipe_context *pctx,
|
||||
!(usage & PIPE_TRANSFER_UNSYNCHRONIZED) &&
|
||||
(usage & PIPE_TRANSFER_WRITE) &&
|
||||
!(resource->target == PIPE_BUFFER
|
||||
&& !util_ranges_intersect(&rsrc->valid_buffer_range, box->x, box->x + box->width))) {
|
||||
&& !util_ranges_intersect(&rsrc->valid_buffer_range, box->x, box->x + box->width)) &&
|
||||
panfrost_pending_batches_access_bo(ctx, bo)) {
|
||||
|
||||
/* It is often faster to copy the whole resource than to flush
|
||||
* readers */
|
||||
/* When a resource to be modified is already being used by a
|
||||
* pending batch, it is often faster to copy the whole BO than
|
||||
* to flush and split the frame in two. This also mostly
|
||||
* mitigates broken depth reload.
|
||||
*/
|
||||
|
||||
panfrost_flush_batches_accessing_bo(ctx, bo, PAN_BO_ACCESS_WRITE);
|
||||
panfrost_bo_wait(bo, INT64_MAX, PAN_BO_ACCESS_WRITE);
|
||||
|
Loading…
Reference in New Issue
Block a user