summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-06-05 09:33:58 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2010-06-13 21:05:27 +0100
commita48edfad8ab95c331d768ba30a16ea51faec05da (patch)
tree9a166169f9eb1d30649bbb05238e52885c604912
parent1f756d916a48393ce4ff7c284193e48a510c175b (diff)
i915: Fix off-by-one for drawing rectangle.
The drawing rectangle is given in *inclusive* pixel values, so the range is only [0,2047]. Hence when rendering to a 2048 wide target, such as an extended desktop, we would issue an illegal instruction zeroing the draw area. Fixes: Bug 27408: Primary and Secondary display blanks in extended desktop mode with Compiz enabled https://bugs.freedesktop.org/show_bug.cgi?id=27408 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> (cherry picked from commit add3260157368458501709d08a3f913ed448234f) Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r--src/mesa/drivers/dri/i915/i915_vtbl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c
index 0a93e64b1fa..b7e38bd6b4a 100644
--- a/src/mesa/drivers/dri/i915/i915_vtbl.c
+++ b/src/mesa/drivers/dri/i915/i915_vtbl.c
@@ -627,8 +627,8 @@ i915_set_draw_region(struct intel_context *intel,
state->Buffer[I915_DESTREG_DRAWRECT2] = 0;
state->Buffer[I915_DESTREG_DRAWRECT3] = (draw_y << 16) | draw_x;
state->Buffer[I915_DESTREG_DRAWRECT4] =
- ((ctx->DrawBuffer->Width + draw_x) & 0xffff) |
- ((ctx->DrawBuffer->Height + draw_y) << 16);
+ ((ctx->DrawBuffer->Width + draw_x - 1) & 0xffff) |
+ ((ctx->DrawBuffer->Height + draw_y - 1) << 16);
state->Buffer[I915_DESTREG_DRAWRECT5] = (draw_y << 16) | draw_x;
I915_STATECHANGE(i915, I915_UPLOAD_BUFFERS);