i965: Use unsynchronized mappings for BufferSubData on non-LLC
authorMatt Turner <mattst88@gmail.com>
Mon, 5 Jun 2017 16:54:06 +0000 (09:54 -0700)
committerMatt Turner <mattst88@gmail.com>
Tue, 6 Jun 2017 18:47:47 +0000 (11:47 -0700)
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@whitecape.org>
src/mesa/drivers/dri/i965/intel_buffer_objects.c

index fcf04ebfdd6de2b95a71226e844f78d8610aa3c8..a9ac29a6a81080cfa4f4cffd29873e9be7899f7c 100644 (file)
@@ -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 =