Mesa (master): i965: Use unsynchronized mappings for BufferSubData on non-LLC

Matt Turner mattst88 at kemper.freedesktop.org
Tue Jun 6 18:48:00 UTC 2017


Module: Mesa
Branch: master
Commit: e0a9b261e5938e121304ba3bde4423bee3496752
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e0a9b261e5938e121304ba3bde4423bee3496752

Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Jun  5 09:54:06 2017 -0700

i965: Use unsynchronized mappings for BufferSubData on non-LLC

Now that unsynchronized maps actually work, we can use them, like we do
on LLC platforms.

On Broxton, the performance of Unigine Valley 1.1-rc1 is improved by
37.6656% +/- 0.401389% (n=20) at 1280x720/QUALITY_LOW, and by
20.862% +/- 2.20901% (n=3) at 1920x1080/QUALITY_LOW.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/intel_buffer_objects.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_buffer_objects.c b/src/mesa/drivers/dri/i965/intel_buffer_objects.c
index fcf04ebfdd..a9ac29a6a8 100644
--- a/src/mesa/drivers/dri/i965/intel_buffer_objects.c
+++ b/src/mesa/drivers/dri/i965/intel_buffer_objects.c
@@ -216,17 +216,13 @@ brw_buffer_subdata(struct gl_context *ctx,
     */
    if (offset + size <= intel_obj->gpu_active_start ||
        intel_obj->gpu_active_end <= offset) {
-      if (brw->has_llc) {
-         void *map = brw_bo_map_unsynchronized(brw, intel_obj->buffer);
-         memcpy(map + offset, data, size);
-         brw_bo_unmap(intel_obj->buffer);
+      void *map = brw_bo_map(brw, intel_obj->buffer, MAP_WRITE | MAP_ASYNC);
+      memcpy(map + offset, data, size);
+      brw_bo_unmap(intel_obj->buffer);
 
-         if (intel_obj->gpu_active_end > intel_obj->gpu_active_start)
-            intel_obj->prefer_stall_to_blit = true;
-         return;
-      } else {
-         perf_debug("BufferSubData could be unsynchronized, but !LLC doesn't support it yet\n");
-      }
+      if (intel_obj->gpu_active_end > intel_obj->gpu_active_start)
+         intel_obj->prefer_stall_to_blit = true;
+      return;
    }
 
    busy =




More information about the mesa-commit mailing list