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