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

Reply via email to