1 |
From 3a6271890cd40c1e37870802f9f3231b3170d27f Mon Sep 17 00:00:00 2001 |
2 |
From: Eric Anholt <eric@anholt.net> |
3 |
Date: Tue, 24 Dec 2013 15:11:29 -0800 |
4 |
Subject: [PATCH] i965: Don't do the temporary-and-blit-copy for |
5 |
INVALIDATE_RANGE maps. |
6 |
|
7 |
We definitely want to fall through to the unsynchronized map case, instead |
8 |
of wasting bandwidth on a copy. Prevents a -43.2407% +/- 1.06113% (n=49) |
9 |
performance regression on aa10perf when teaching glamor to provide the |
10 |
GL_INVALIDATE_RANGE_BIT information. |
11 |
|
12 |
This is a performance fix, which I usually wouldn't cherry-pick to stable. |
13 |
But this was really was just a bug in the code, its presence would |
14 |
discourage developers from giving us the best information they can, and I |
15 |
think we've got fairly high confidence in the unsynchronized map path |
16 |
already. |
17 |
|
18 |
Cc: 10.0 9.2 <mesa-stable@lists.freedesktop.org> |
19 |
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> |
20 |
(cherry picked from commit f46563fe1c8a5560e4de0adf03e3d8770b7fc734) |
21 |
--- |
22 |
src/mesa/drivers/dri/i965/intel_buffer_objects.c | 3 ++- |
23 |
1 file changed, 2 insertions(+), 1 deletion(-) |
24 |
|
25 |
diff --git a/src/mesa/drivers/dri/i965/intel_buffer_objects.c b/src/mesa/drivers/dri/i965/intel_buffer_objects.c |
26 |
index 779198f..a87ebf7 100644 |
27 |
--- a/src/mesa/drivers/dri/i965/intel_buffer_objects.c |
28 |
+++ b/src/mesa/drivers/dri/i965/intel_buffer_objects.c |
29 |
@@ -357,7 +357,8 @@ intel_bufferobj_map_range(struct gl_context * ctx, |
30 |
* BO, and we'll copy what they put in there out at unmap or |
31 |
* FlushRange time. |
32 |
*/ |
33 |
- if ((access & GL_MAP_INVALIDATE_RANGE_BIT) && |
34 |
+ if (!(access & GL_MAP_UNSYNCHRONIZED_BIT) && |
35 |
+ (access & GL_MAP_INVALIDATE_RANGE_BIT) && |
36 |
drm_intel_bo_busy(intel_obj->buffer)) { |
37 |
if (access & GL_MAP_FLUSH_EXPLICIT_BIT) { |
38 |
intel_obj->range_map_buffer = malloc(length); |
39 |
-- |
40 |
1.8.4.5 |
41 |
|