Modesetting can't switch back from a software to a hardware cursor (patch to follow)

Michael Thayer michael.thayer at oracle.com
Sun Mar 6 11:51:13 UTC 2016


On 05.03.2016 09:42, Michael Thayer wrote:
[...]
> On 05.03.2016 00:19, Emil Velikov wrote:
>> -EINVAL is interpreted by most/all of us as not supported (too old of
>> a kernel). Although another thing was at the back of my mind - why are
>> you removing the use_set_cursor2 static boolean. In all fairness, I
>> doubt that we can get the actual integration happening between the two
>> SetCursor* calls. So one might want to keep it...
>
> I dare say we could restore this if we fixed all kernel drivers (that
> care) never to return -EINVAL in their SetCursor2 call-back.  Any
> thoughts what else they should return to say that a given cursor is
> (possibly temporarily) not supported by the hardware?  On the other
> hand, currently only qxl and virtgpu should care.  virtgpu returns
> -EINVAL if the cursor passed in by user space is invalid, and qxl could
> possibly pass up a -EINVAL from an API that it calls.

Actually SetCursor2 is supported by all kernels since 3.11, released in 
September 2013.  So if anything it would make sense these days not to 
try the fall-back at all.  That said, I wouldn't mind if this patch 
could be applied to older server branches too, since we want to support 
older distributions (one of our important use cases), and that increases 
the chances.

Regarding integration between the two APIs (I didn't answer that 
properly), on the whole we have the following cases: SetCursor2 is 
supported and the cursor is supported.  In that case the first call to 
SetCursor2 will succeed and we will never fall back.  SetCursor2 is 
supported and the cursor is not supported but the driver returns -EINVAL 
to say so.  In that case we will try SetCursor which will fail too, no 
big issue it seems to me.  SetCursor2 is supported and the driver 
returns something else.  Then we will not try the fall-back.  SetCursor2 
is not supported.  Then we will always try both APIs but only use 
SetCursor.  Not optimal, but I think that keeping the code simple is 
more important.  Generally, we will always use either SetCursor2 or 
SetCursor, in practice we will never mix and match, so I don't think the 
integration is a problems.

Regards,

Michael
-- 
Michael Thayer | VirtualBox engineer
ORACLE Deutschland B.V. & Co. KG | Werkstr. 24 | D-71384 Weinstadt

ORACLE Deutschland B.V. & Co. KG
Hauptverwaltung: Riesstraße 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Nederland, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Jan Schultheiss, Val Maher


More information about the xorg-devel mailing list