Mesa (10.0): i965: Don' t do the temporary-and-blit-copy for INVALIDATE_RANGE maps.

Carl Worth cworth at kemper.freedesktop.org
Thu Jan 9 20:57:13 UTC 2014


Module: Mesa
Branch: 10.0
Commit: 3a6271890cd40c1e37870802f9f3231b3170d27f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a6271890cd40c1e37870802f9f3231b3170d27f

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Dec 24 15:11:54 2013 -0800

i965: Don't do the temporary-and-blit-copy for INVALIDATE_RANGE maps.

We definitely want to fall through to the unsynchronized map case, instead
of wasting bandwidth on a copy.  Prevents a -43.2407% +/- 1.06113% (n=49)
performance regression on aa10perf when teaching glamor to provide the
GL_INVALIDATE_RANGE_BIT information.

This is a performance fix, which I usually wouldn't cherry-pick to stable.
But this was really was just a bug in the code, its presence would
discourage developers from giving us the best information they can, and I
think we've got fairly high confidence in the unsynchronized map path
already.

Cc: 10.0 9.2 <mesa-stable at lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
(cherry picked from commit f46563fe1c8a5560e4de0adf03e3d8770b7fc734)

---

 src/mesa/drivers/dri/i965/intel_buffer_objects.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/intel_buffer_objects.c b/src/mesa/drivers/dri/i965/intel_buffer_objects.c
index 779198f..a87ebf7 100644
--- a/src/mesa/drivers/dri/i965/intel_buffer_objects.c
+++ b/src/mesa/drivers/dri/i965/intel_buffer_objects.c
@@ -357,7 +357,8 @@ intel_bufferobj_map_range(struct gl_context * ctx,
     * BO, and we'll copy what they put in there out at unmap or
     * FlushRange time.
     */
-   if ((access & GL_MAP_INVALIDATE_RANGE_BIT) &&
+   if (!(access & GL_MAP_UNSYNCHRONIZED_BIT) &&
+       (access & GL_MAP_INVALIDATE_RANGE_BIT) &&
        drm_intel_bo_busy(intel_obj->buffer)) {
       if (access & GL_MAP_FLUSH_EXPLICIT_BIT) {
 	 intel_obj->range_map_buffer = malloc(length);




More information about the mesa-commit mailing list