[RFC 0/8] rmk's Dove DRM/TDA19988 Cubox driver
Alex Deucher
alexdeucher at gmail.com
Mon May 20 06:36:02 PDT 2013
On Sun, May 19, 2013 at 4:59 AM, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Fri, May 17, 2013 at 07:40:23PM +0200, Jean-Francois Moine wrote:
>> Maybe I did not explain correctly: the colored cursor maybe RGB888 +
>> transparency (64x64) or full ARGB (64x32 or 32x64). I coded the first
>> case. And, yes, I better like a hardware cursor: it asks for less
>> computation, and I get it immediately at graphic starting time!
>
> Having looked at this now, using the RGB+transparency is less than ideal
> because we're having to reduce an alpha channel down to a simple on/off
> transparency. X cursors really are alphablended components!
>
> So, the options here are:
> (a) use "software" rendered cursor
> + correct and expected cursor size
> + correct rendering
> + possible to use the GPU (I believe mine does)
> - maybe time consuming as it has to be removed/replaced on the screen
> (b) use RGB+transparency for 64x64 hardware cursor
> + correct and expected cursor size
> + does not have to be removed/replaced when screen contents change
> - incorrect rendering due to reducing the alpha channel to a simple
> on/off transparency mask
> - has to be reloaded when the pointer is close to the edges of the
> screen which is CPU intensive
> - cursor image data passed into DRM is required to be ARGB (I've
> discussed this with David Airlie last night.) This means we have
> to do translation to RGB+T in the kernel which is *not* nice.
> (c) use ARGB 32x64 or 64x32 hardware cursor
> + does not have to be removed/replaced when screen contents change
> + correct rendering of cursor
> - unexpected cursor size; user clients do not expect to be restricted
> to 32 rows or 32 lines of cursor
> - can only select maximum cursor size on initialization of hardware
> cursor; can't dynamically switch between 32x64 and 64x32 sizes
> - has to be reloaded when the pointer is close to the edges of the
> screen which is CPU intensive
You can tell the xserver what size cursor you support when you call
xf86_cursors_init() in the ddx. Just expose a 32x64 or 64x32 ARGB
cursor. Most apps don't use a 64x64 cursor anyway. I've used
hardware with non-64x64 cursors and haven't run into any problems yet.
Alex
More information about the dri-devel
mailing list