[Mesa-dev] [PATCH 4/4] i965: Orphan storage in MapBufferRange if invalidating all valid data.

Chris Wilson chris at chris-wilson.co.uk
Tue Jun 13 11:58:02 UTC 2017


Quoting Kenneth Graunke (2017-06-13 01:33:32)
> We can promote INVALIDATE_RANGE_BIT to INVALIDATE_BUFFER_BIT if the
> range contains the only valid data in the buffer.  This allows us to
> orphan the storage, instead of doing stall avoidance blits.
> ---
>  src/mesa/drivers/dri/i965/intel_buffer_objects.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> I don't have any performance data for this.
> 
> diff --git a/src/mesa/drivers/dri/i965/intel_buffer_objects.c b/src/mesa/drivers/dri/i965/intel_buffer_objects.c
> index 09c18db1afe..c305539e1b5 100644
> --- a/src/mesa/drivers/dri/i965/intel_buffer_objects.c
> +++ b/src/mesa/drivers/dri/i965/intel_buffer_objects.c
> @@ -371,6 +371,13 @@ brw_map_buffer_range(struct gl_context *ctx,
>        return NULL;
>     }
>  
> +   if ((access & GL_MAP_INVALIDATE_RANGE_BIT) &&
> +       (length == obj->Size ||
> +        (intel_obj->valid_data_start >= offset &&
> +         intel_obj->valid_data_end <= offset + length))) {
> +      access |= GL_MAP_INVALIDATE_BUFFER_BIT;

Lgtm, but repetition here could be moved to a helper.
-Chris


More information about the mesa-dev mailing list