randr provider object

Adam Jackson ajax at nwnk.net
Tue May 15 11:02:02 PDT 2012


On 5/6/12 12:51 PM, Dave Airlie wrote:

> The provider object also contains the list of crtcs and outputs
> controlled by this provider.

I don't think you need (or want) outputs here.  GetCrtcInfo already 
gives you the current and possible mapping for crtc->output.

> The set provider API is then used to dynamically do things, like
> attach/detach output slaves, switch an offload slave into a master
> (GPU switching), etc.

This might be a little thin.  You have:

typedef struct {
     CARD8 reqType;
     CARD8 randrReqType;
     CARD16 length B16;
     RRProvider provider B32;
     Time configTimestamp B32;
     CARD32 new_role B32;
     CARD32 exclusive_master B32; /* xinerama or GPU switch */
} xRRSetProviderRoleReq;
#define sz_xRRSetProviderRoleReq 20

You might need a Window here to name the protocol screen you're 
configuring (think: multiple protocol screens, each driven by randrful 
drivers).  Alternatively, you can say that Providers are unique to a 
Screen (and therefore the Window isn't necessary).  But since there's no 
english description of the protocol...

I'm also not totally sure I like the "exclusive_master" field.  Or the 
whole Set request really.  The single worst thing about how RANDR is 
currently implemented is the damn poke-one-crtc-at-a-time model.  This 
just makes it worse.

- ajax


More information about the xorg-devel mailing list