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

2017-07-13 Thread Kenneth Graunke
On Thursday, July 13, 2017 3:04:59 PM PDT Jason Ekstrand wrote:
> Do you have any data on how much this helps?  Regardless, the series is
> 
> Reviewed-by: Jason Ekstrand 

Thanks!  It turns out that, no, I don't have any data on this patch.

I'd originally found it helpful, but I had been testing a broken version
which assumed that GL_MAP_WRITE_BIT implied the mapped region would be
overwritten...but it doesn't, unless you have GL_MAP_INVALIDATE_RANGE_BIT.

With that fixed, I'm not seeing this condition ever trigger in any of the
workloads I looked at.

It still seems like the right thing to do, but maybe I should hold off for
now.  (I should also implement InvalidateBufferSubData...)

Patches 1-3 are still definitely useful.

signature.asc
Description: This is a digitally signed message part.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2017-07-13 Thread Jason Ekstrand
Do you have any data on how much this helps?  Regardless, the series is

Reviewed-by: Jason Ekstrand 

On Mon, Jun 12, 2017 at 5:33 PM, Kenneth Graunke 
wrote:

> 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;
> +   }
> +
> /* If the access is synchronized (like a normal buffer mapping), then
> get
>  * things flushed out so the later mapping syncs appropriately through
> GEM.
>  * If the user doesn't care about existing buffer contents and mapping
> would
> --
> 2.13.1
>
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2017-06-13 Thread Chris Wilson
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
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2017-06-12 Thread Kenneth Graunke
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;
+   }
+
/* If the access is synchronized (like a normal buffer mapping), then get
 * things flushed out so the later mapping syncs appropriately through GEM.
 * If the user doesn't care about existing buffer contents and mapping would
-- 
2.13.1

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev