commit 8ef81d676c
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon Apr 7 07:59:42 2014 +0100
sna: Simplify checking for singular damage
overlooked that we were also checking for empty regions as well as
singular regions.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
OsBlockSIGIO/OsReleaseSIGIO was only introduced in xorg-server-1.13.0,
so we need a compat layer.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Fixes regresion from
commit 35b03b3fe6
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Mar 28 09:14:59 2014 +0000
sna: Virtual CRTCs are last, so break loops early
as the conflicting Zaphod detection requires on searching all potential
CRTCs without finding the match. By breaking early on the virtual CRTC,
we concluded that the setup was actually valid, but disabled.
Reported-by: Nick Bowler <nbowler@draconx.ca>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77156
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Once again, we must be careful when promoting from a region to whole
pixmap migration that we do not discard required damage.
Fixes regression from
commit 27ac9f574f [2.99.911]
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Thu Feb 27 08:33:52 2014 +0000
sna: Avoid promoting region-to-whole migration and discarding damage
Reported-by: gedgon@gmail.com
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77063
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Instead of using a NULL type depth buffer, it is strongly suggested to
use a 1x1 16-bit depth buffer instead (with address 0).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
The earlier query of cursor (simply to find out the hw size) was
replaced by an invariant determined when the cursor was first set.
However, not all uses of cursor->size were fixed.
Fixes regression from
commit f98b2e1646
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Apr 2 08:36:14 2014 +0100
sna: Prevent signal re-entrancy into cursor update routines
Reported-by: Christoph Haag <haagch.christoph@googlemail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77053
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
When dereferences priv, make sure it exists first. ShmPixmaps for
example, may not have one, nor do very small buffers.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
If the composite reads entirely from within a large pixmap which is a
clear color, just replace the source with a solid.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
As we may need to allocate from within the cursor update, we are prone
to re-entrancy issues within malloc()/free(). To avoid these we need to
block SigIO (for pointer updates) whilst in the critical section.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
The assertion was checking that the invalid condition was true, rather
than that it never happened. Oops.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
If the pixmap is already partially on the GPU, and the next operation
touches the entire pixmap, promote that operation back to the whole GPU.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
sna_display.c: In function '__sna_get_cursor':
sna_display.c:3153:6: warning: assignment from incompatible pointer type [enabled by default]
src = sna->cursor.ref->bits->argb;
^
sna_display.c:3209:10: warning: comparison of distinct pointer types lacks a cast [enabled by default]
if (src != sna->cursor.ref->bits->argb)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
As we need to recompute them for each CRTC, we need to reset the
computation each time or else we screw up the coordinates and hide
the cursors at random.
Breakage from commit 25ca8f136c
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Thu Mar 27 14:15:30 2014 +0000
sna: Support variable sized cursors
Reported-by: Jan Alexander Steffens <jan.steffens@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76724
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
We know that all the virtual CRTCs are at the end of the CRTC array, so
when we see the first one, we can stop the processing of real CRTCs.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Search for an exact match first, before looking for a cursor we can
reuse. This should help reuse with multiple rotated screens not stealing
the others' cursor on every pass.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
If the cursor does not completely fill the size of the hardware cursor,
we will retain whatever contents already filled that area.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
One of the downsides with supporting large cursors is that the full size
is very rarely used leading to a waste of permanently allocated
resources. Refactor our cursor handling so that we can allocate fresh
cursors on the fly that are appropriately sized.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
When iterating over the active list to mark the current damage, we need
to chase the ->active pointer rather than ->next or else we walk the
wrong list from the wrong starting point.
Reported-by: Kirill Müller <mail@kirill-mueller.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76271
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>