diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-06-05 09:33:58 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-06-05 09:33:58 +0100 |
commit | add3260157368458501709d08a3f913ed448234f (patch) | |
tree | 786e906b77eb619f23f5ca71ca16ce1c0b145358 /src | |
parent | ff74c2ced5e7234902d43712a3759f91fd534a91 (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i915/i915_vtbl.c | 4 |
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 974ab3ec14..b2f9b90abd 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); |