From e0a9b261e5938e121304ba3bde4423bee3496752 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Mon, 5 Jun 2017 09:54:06 -0700 Subject: [PATCH] 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 --- 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 fcf04ebfdd6..a9ac29a6a81 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 = -- 2.30.2