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
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel