mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
iris: Promote DISCARD_RANGE to DISCARD_WHOLE_RESOURCE where possible
This allows us to replace the backing storage for a buffer, which means we'd have an idle buffer and thus could do an unsynchronized mapping where we otherwise wouldn't. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19209>
This commit is contained in:
parent
465eb092ed
commit
6954a8ddbe
1 changed files with 10 additions and 0 deletions
|
|
@ -2383,6 +2383,16 @@ iris_transfer_map(struct pipe_context *ctx,
|
|||
if (res->base.is_user_ptr)
|
||||
usage |= PIPE_MAP_PERSISTENT;
|
||||
|
||||
/* Promote discarding a range to discarding the entire buffer where
|
||||
* possible. This may allow us to replace the backing storage entirely
|
||||
* and let us do an unsynchronized map when we otherwise wouldn't.
|
||||
*/
|
||||
if (resource->target == PIPE_BUFFER &&
|
||||
(usage & PIPE_MAP_DISCARD_RANGE) &&
|
||||
box->x == 0 && box->width == resource->width0) {
|
||||
usage |= PIPE_MAP_DISCARD_WHOLE_RESOURCE;
|
||||
}
|
||||
|
||||
if (usage & PIPE_MAP_DISCARD_WHOLE_RESOURCE) {
|
||||
/* Replace the backing storage with a fresh buffer for non-async maps */
|
||||
if (!(usage & (PIPE_MAP_UNSYNCHRONIZED |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue