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