diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-06-19 10:37:10 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-06-19 10:43:09 +0100 |
commit | 99845dcb3ba862269b29aec782e2bcef31c0403e (patch) | |
tree | f5cfe7b4b9a31bee7087738fc09f90ce3c4f8d4e /src/intel_dri.c | |
parent | 4acf727941a37651f672db3774281a437940c540 (diff) |
Post Damage on the Screen Pixmap after a pageflip
This issue was raised by Dave Airlie as he is trying to integrate
multiple GPUs into the xserver, and a particular setup has a slave
rendering device that copies the contents from the GPU over a
DisplayLink USB adaptor. As such the slave device is listening for
Damage on the Screen Pixmap and needs the update following pageflips.
Since we already are posting damage for all the SwapBuffers paths other
than pageflip, for consistency we should post damage along the pageflip
path as well.
Reported-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/intel_dri.c')
-rw-r--r-- | src/intel_dri.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/intel_dri.c b/src/intel_dri.c index 6bf76d09..88ab2498 100644 --- a/src/intel_dri.c +++ b/src/intel_dri.c @@ -860,6 +860,21 @@ intel_exchange_pixmap_buffers(struct intel_screen_private *intel, PixmapPtr fron new_back->busy = -1; intel_glamor_exchange_buffers(intel, front, back); + + /* Post damage on the new front buffer so that listeners, such + * as DisplayLink know take a copy and shove it over the USB. + */ + { + RegionRec region; + + region.extents.x1 = region.extents.y1 = 0; + region.extents.x2 = front->drawable.width; + region.extents.y2 = front->drawable.height; + region.data = NULL; + DamageRegionAppend(&front->drawable, ®ion); + DamageRegionProcessPending(&front->drawable); + } + return new_front; } |