[PATCH] randr: add provider object (v5.1)

Dave Airlie airlied at gmail.com
Fri Jun 29 05:28:02 PDT 2012


>> +#define RR_Provider_Flag_Dynamic 1
>> +#define RR_Provider_Flag_MultiMaster 2
>
>
> Are these documented anywhere?

Oops totally forgot to add them, have done in v6.

Dynamic basically means you can make changes to the providers,
MultiMaster is to say xinerama style multiple rendering masters is supported.

>> +
>>   /*
>>    * event
>>    */
>> @@ -715,6 +892,33 @@ typedef struct {
>>   #define sz_xRROutputPropertyNotifyEvent        32
>>
>>   typedef struct {
>> +    CARD8 type;                                /* always evBase +
>> RRNotify */
>> +    CARD8 subCode;                     /* RRNotify_ProviderChange */
>> +    CARD16 sequenceNumber B16;
>> +    Time timestamp B32;                        /* time crtc was changed
>> */
>> +    Window window B32;                 /* window requesting notification
>> */
>> +    RRProvider provider B32;           /* affected provider */
>> +    CARD32 current_role B32;            /* current role */
>
>
> My stupid mailer is munching up the whitespace, but it looks like this line
> isn't tabbed while the earlier lines are.

Yeah I've hopefully fixed up most of the whitespace in there now thanks,

>>
>> +5.4. Protocol Types added in version 1.4 of the extension
>> +
>> +                             ❧❧❧❧❧❧❧❧❧❧❧
>> +5.5. Protocol Types added in version 1.5 of the extension
>> +
>> +PROVIDER { XID }
>> +
>> +ABILITYMASK { Offload, Output }
>> +        Abilities that this device can work with.
>
>
>        ^ tab, according to
> http://lists.x.org/archives/xorg-devel/2012-June/032007.html

Fixed.

>> +┌───
>> +    RRSetProviderRoles
>> +        providers: LISTofPROVIDER
>> +        role: LISTofROLEMASK
>> +     ▶
>> +└───
>> +        Errors: Provider
>> +
>> +        RRSetProviderRoles allows the roles of the multiple specified
>> providers
>> +       to be changed.
>
>
> This sets one rolemask per provider, right?  Should it return a Match or
> Value error if the lengths of the lists differ?

I've returned Match for mismatched lengths, and value if the role
isn't applicable.
(documented in v6).
>> +└───
>> +       Errors: Name, Atom, Provider
>> +
>> +       If the specified property does not exist for the specified
>> provider,
>> +       then a Name error is returned.
>> +
>> +       If 'pending' is TRUE, changes made to property values with
>> +       RRChangeProviderProperty will be saved in the pending property
>> value
>> +       and be automatically copied to the current value on the next
>> +       RRSetCrtcConfig request involving the named output. If 'pending'
>> is
>> +       FALSE, changes are copied immediately.
>
>
> This doesn't make much sense, since no output is named here and providers
> aren't involved in SetCrtcConfig requests.  What exactly promotes pending
> provider properties (and a peck of pickled peppers)?

The next mode set on any crtc on that provider makes most sense until we
get one modeset to rule them all. I've documented this, then again maybe
pending props make no sense for providers but I think they might be useful.
(as if anyone uses them in outputs :-P)

>> +       Errors: Atom, Provider
>> +
>> +       This request deletes the property from the specified window if the
>
>
> s/window/provider/?  Looks like another copy & paste error copied from an
> existing copy & paste error.  :)

fixed this one, we should keep a list of pastos that need fixing alternately.
>>
>> +8.2 Events added in version 1.5 of the RandR extension
>
>
> If RRNotify_ProviderChange / xRRProviderChangeNotifyEvent is being added,
> then it should probably at least be mentioned here since it's currently not
> clear from randrproto.txt when it would be sent or what it contains.

Yes + Keith's suggestion.

Thanks again Aaron for this, I''ll post v6 now once I've put
everything together again.

Dave.


More information about the xorg-devel mailing list