VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.9.0/randrstr.h@ 62425

最後變更 在這個檔案從62425是 32163,由 vboxsync 提交於 14 年 前

Additions/x11/x11include: additional headers for building drivers for X.Org Server 1.9

  • 屬性 svn:eol-style 設為 native
檔案大小: 23.5 KB
 
1/*
2 * Copyright © 2000 Compaq Computer Corporation
3 * Copyright © 2002 Hewlett-Packard Company
4 * Copyright © 2006 Intel Corporation
5 * Copyright © 2008 Red Hat, Inc.
6 *
7 * Permission to use, copy, modify, distribute, and sell this software and its
8 * documentation for any purpose is hereby granted without fee, provided that
9 * the above copyright notice appear in all copies and that both that copyright
10 * notice and this permission notice appear in supporting documentation, and
11 * that the name of the copyright holders not be used in advertising or
12 * publicity pertaining to distribution of the software without specific,
13 * written prior permission. The copyright holders make no representations
14 * about the suitability of this software for any purpose. It is provided "as
15 * is" without express or implied warranty.
16 *
17 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
18 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
19 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
20 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
22 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
23 * OF THIS SOFTWARE.
24 *
25 * Author: Jim Gettys, Hewlett-Packard Company, Inc.
26 * Keith Packard, Intel Corporation
27 */
28
29#ifdef HAVE_DIX_CONFIG_H
30#include <dix-config.h>
31#endif
32
33#ifndef _RANDRSTR_H_
34#define _RANDRSTR_H_
35
36#include <X11/X.h>
37#include <X11/Xproto.h>
38#include "misc.h"
39#include "os.h"
40#include "dixstruct.h"
41#include "resource.h"
42#include "scrnintstr.h"
43#include "windowstr.h"
44#include "pixmapstr.h"
45#include "extnsionst.h"
46#include "servermd.h"
47#include "rrtransform.h"
48#include <X11/extensions/randr.h>
49#include <X11/extensions/randrproto.h>
50#include <X11/extensions/render.h> /* we share subpixel order information */
51#include "picturestr.h"
52#include <X11/Xfuncproto.h>
53
54/* required for ABI compatibility for now */
55#define RANDR_10_INTERFACE 1
56#define RANDR_12_INTERFACE 1
57#define RANDR_13_INTERFACE 1 /* requires RANDR_12_INTERFACE */
58#define RANDR_GET_CRTC_INTERFACE 1
59
60#define RANDR_INTERFACE_VERSION 0x0103
61
62typedef XID RRMode;
63typedef XID RROutput;
64typedef XID RRCrtc;
65
66extern _X_EXPORT int RREventBase, RRErrorBase;
67
68extern _X_EXPORT int (*ProcRandrVector[RRNumberRequests])(ClientPtr);
69extern _X_EXPORT int (*SProcRandrVector[RRNumberRequests])(ClientPtr);
70
71/*
72 * Modeline for a monitor. Name follows directly after this struct
73 */
74
75#define RRModeName(pMode) ((char *) (pMode + 1))
76typedef struct _rrMode RRModeRec, *RRModePtr;
77typedef struct _rrPropertyValue RRPropertyValueRec, *RRPropertyValuePtr;
78typedef struct _rrProperty RRPropertyRec, *RRPropertyPtr;
79typedef struct _rrCrtc RRCrtcRec, *RRCrtcPtr;
80typedef struct _rrOutput RROutputRec, *RROutputPtr;
81
82struct _rrMode {
83 int refcnt;
84 xRRModeInfo mode;
85 char *name;
86 ScreenPtr userScreen;
87};
88
89struct _rrPropertyValue {
90 Atom type; /* ignored by server */
91 short format; /* format of data for swapping - 8,16,32 */
92 long size; /* size of data in (format/8) bytes */
93 pointer data; /* private to client */
94};
95
96struct _rrProperty {
97 RRPropertyPtr next;
98 ATOM propertyName;
99 Bool is_pending;
100 Bool range;
101 Bool immutable;
102 int num_valid;
103 INT32 *valid_values;
104 RRPropertyValueRec current, pending;
105};
106
107struct _rrCrtc {
108 RRCrtc id;
109 ScreenPtr pScreen;
110 RRModePtr mode;
111 int x, y;
112 Rotation rotation;
113 Rotation rotations;
114 Bool changed;
115 int numOutputs;
116 RROutputPtr *outputs;
117 int gammaSize;
118 CARD16 *gammaRed;
119 CARD16 *gammaBlue;
120 CARD16 *gammaGreen;
121 void *devPrivate;
122 Bool transforms;
123 RRTransformRec client_pending_transform;
124 RRTransformRec client_current_transform;
125 PictTransform transform;
126 struct pict_f_transform f_transform;
127 struct pict_f_transform f_inverse;
128};
129
130struct _rrOutput {
131 RROutput id;
132 ScreenPtr pScreen;
133 char *name;
134 int nameLength;
135 CARD8 connection;
136 CARD8 subpixelOrder;
137 int mmWidth;
138 int mmHeight;
139 RRCrtcPtr crtc;
140 int numCrtcs;
141 RRCrtcPtr *crtcs;
142 int numClones;
143 RROutputPtr *clones;
144 int numModes;
145 int numPreferred;
146 RRModePtr *modes;
147 int numUserModes;
148 RRModePtr *userModes;
149 Bool changed;
150 RRPropertyPtr properties;
151 Bool pendingProperties;
152 void *devPrivate;
153};
154
155#if RANDR_12_INTERFACE
156typedef Bool (*RRScreenSetSizeProcPtr) (ScreenPtr pScreen,
157 CARD16 width,
158 CARD16 height,
159 CARD32 mmWidth,
160 CARD32 mmHeight);
161
162typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen,
163 RRCrtcPtr crtc,
164 RRModePtr mode,
165 int x,
166 int y,
167 Rotation rotation,
168 int numOutputs,
169 RROutputPtr *outputs);
170
171typedef Bool (*RRCrtcSetGammaProcPtr) (ScreenPtr pScreen,
172 RRCrtcPtr crtc);
173
174typedef Bool (*RRCrtcGetGammaProcPtr) (ScreenPtr pScreen,
175 RRCrtcPtr crtc);
176
177typedef Bool (*RROutputSetPropertyProcPtr) (ScreenPtr pScreen,
178 RROutputPtr output,
179 Atom property,
180 RRPropertyValuePtr value);
181
182typedef Bool (*RROutputValidateModeProcPtr) (ScreenPtr pScreen,
183 RROutputPtr output,
184 RRModePtr mode);
185
186typedef void (*RRModeDestroyProcPtr) (ScreenPtr pScreen,
187 RRModePtr mode);
188
189#endif
190
191#if RANDR_13_INTERFACE
192typedef Bool (*RROutputGetPropertyProcPtr) (ScreenPtr pScreen,
193 RROutputPtr output,
194 Atom property);
195typedef Bool (*RRGetPanningProcPtr) (ScreenPtr pScrn,
196 RRCrtcPtr crtc,
197 BoxPtr totalArea,
198 BoxPtr trackingArea,
199 INT16 *border);
200typedef Bool (*RRSetPanningProcPtr) (ScreenPtr pScrn,
201 RRCrtcPtr crtc,
202 BoxPtr totalArea,
203 BoxPtr trackingArea,
204 INT16 *border);
205
206#endif /* RANDR_13_INTERFACE */
207
208typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation *rotations);
209typedef Bool (*RRCloseScreenProcPtr) ( int i, ScreenPtr pscreen);
210
211/* These are for 1.0 compatibility */
212
213typedef struct _rrRefresh {
214 CARD16 rate;
215 RRModePtr mode;
216} RRScreenRate, *RRScreenRatePtr;
217
218typedef struct _rrScreenSize {
219 int id;
220 short width, height;
221 short mmWidth, mmHeight;
222 int nRates;
223 RRScreenRatePtr pRates;
224} RRScreenSize, *RRScreenSizePtr;
225
226#ifdef RANDR_10_INTERFACE
227
228typedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen,
229 Rotation rotation,
230 int rate,
231 RRScreenSizePtr pSize);
232
233#endif
234
235
236typedef struct _rrScrPriv {
237 /*
238 * 'public' part of the structure; DDXen fill this in
239 * as they initialize
240 */
241#if RANDR_10_INTERFACE
242 RRSetConfigProcPtr rrSetConfig;
243#endif
244 RRGetInfoProcPtr rrGetInfo;
245#if RANDR_12_INTERFACE
246 RRScreenSetSizeProcPtr rrScreenSetSize;
247 RRCrtcSetProcPtr rrCrtcSet;
248 RRCrtcSetGammaProcPtr rrCrtcSetGamma;
249 RRCrtcGetGammaProcPtr rrCrtcGetGamma;
250 RROutputSetPropertyProcPtr rrOutputSetProperty;
251 RROutputValidateModeProcPtr rrOutputValidateMode;
252 RRModeDestroyProcPtr rrModeDestroy;
253#endif
254#if RANDR_13_INTERFACE
255 RROutputGetPropertyProcPtr rrOutputGetProperty;
256 RRGetPanningProcPtr rrGetPanning;
257 RRSetPanningProcPtr rrSetPanning;
258#endif
259
260 /*
261 * Private part of the structure; not considered part of the ABI
262 */
263 TimeStamp lastSetTime; /* last changed by client */
264 TimeStamp lastConfigTime; /* possible configs changed */
265 RRCloseScreenProcPtr CloseScreen;
266
267 Bool changed; /* some config changed */
268 Bool configChanged; /* configuration changed */
269 Bool layoutChanged; /* screen layout changed */
270
271 CARD16 minWidth, minHeight;
272 CARD16 maxWidth, maxHeight;
273 CARD16 width, height; /* last known screen size */
274 CARD16 mmWidth, mmHeight; /* last known screen size */
275
276 int numOutputs;
277 RROutputPtr *outputs;
278 RROutputPtr primaryOutput;
279
280 int numCrtcs;
281 RRCrtcPtr *crtcs;
282
283 /* Last known pointer position */
284 RRCrtcPtr pointerCrtc;
285
286#ifdef RANDR_10_INTERFACE
287 /*
288 * Configuration information
289 */
290 Rotation rotations;
291 CARD16 reqWidth, reqHeight;
292
293 int nSizes;
294 RRScreenSizePtr pSizes;
295
296 Rotation rotation;
297 int rate;
298 int size;
299#endif
300} rrScrPrivRec, *rrScrPrivPtr;
301
302extern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec;
303#define rrPrivKey (&rrPrivKeyRec)
304
305#define rrGetScrPriv(pScr) ((rrScrPrivPtr)dixLookupPrivate(&(pScr)->devPrivates, rrPrivKey))
306#define rrScrPriv(pScr) rrScrPrivPtr pScrPriv = rrGetScrPriv(pScr)
307#define SetRRScreen(s,p) dixSetPrivate(&(s)->devPrivates, rrPrivKey, p)
308
309/*
310 * each window has a list of clients requesting
311 * RRNotify events. Each client has a resource
312 * for each window it selects RRNotify input for,
313 * this resource is used to delete the RRNotifyRec
314 * entry from the per-window queue.
315 */
316
317typedef struct _RREvent *RREventPtr;
318
319typedef struct _RREvent {
320 RREventPtr next;
321 ClientPtr client;
322 WindowPtr window;
323 XID clientResource;
324 int mask;
325} RREventRec;
326
327typedef struct _RRTimes {
328 TimeStamp setTime;
329 TimeStamp configTime;
330} RRTimesRec, *RRTimesPtr;
331
332typedef struct _RRClient {
333 int major_version;
334 int minor_version;
335/* RRTimesRec times[0]; */
336} RRClientRec, *RRClientPtr;
337
338extern _X_EXPORT RESTYPE RRClientType, RREventType; /* resource types for event masks */
339extern _X_EXPORT DevPrivateKeyRec RRClientPrivateKeyRec;
340#define RRClientPrivateKey (&RRClientPrivateKeyRec)
341extern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType;
342
343#define VERIFY_RR_OUTPUT(id, ptr, a)\
344 {\
345 int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
346 RROutputType, client, a);\
347 if (rc != Success) {\
348 client->errorValue = id;\
349 return rc;\
350 }\
351 }
352
353#define VERIFY_RR_CRTC(id, ptr, a)\
354 {\
355 int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
356 RRCrtcType, client, a);\
357 if (rc != Success) {\
358 client->errorValue = id;\
359 return rc;\
360 }\
361 }
362
363#define VERIFY_RR_MODE(id, ptr, a)\
364 {\
365 int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
366 RRModeType, client, a);\
367 if (rc != Success) {\
368 client->errorValue = id;\
369 return rc;\
370 }\
371 }
372
373#define GetRRClient(pClient) ((RRClientPtr)dixLookupPrivate(&(pClient)->devPrivates, RRClientPrivateKey))
374#define rrClientPriv(pClient) RRClientPtr pRRClient = GetRRClient(pClient)
375
376/* Initialize the extension */
377extern _X_EXPORT void
378RRExtensionInit (void);
379
380#ifdef RANDR_12_INTERFACE
381/*
382 * Set the range of sizes for the screen
383 */
384extern _X_EXPORT void
385RRScreenSetSizeRange (ScreenPtr pScreen,
386 CARD16 minWidth,
387 CARD16 minHeight,
388 CARD16 maxWidth,
389 CARD16 maxHeight);
390#endif
391
392/* rrscreen.c */
393/*
394 * Notify the extension that the screen size has been changed.
395 * The driver is responsible for calling this whenever it has changed
396 * the size of the screen
397 */
398extern _X_EXPORT void
399RRScreenSizeNotify (ScreenPtr pScreen);
400
401/*
402 * Request that the screen be resized
403 */
404extern _X_EXPORT Bool
405RRScreenSizeSet (ScreenPtr pScreen,
406 CARD16 width,
407 CARD16 height,
408 CARD32 mmWidth,
409 CARD32 mmHeight);
410
411/*
412 * Send ConfigureNotify event to root window when 'something' happens
413 */
414extern _X_EXPORT void
415RRSendConfigNotify (ScreenPtr pScreen);
416
417/*
418 * screen dispatch
419 */
420extern _X_EXPORT int
421ProcRRGetScreenSizeRange (ClientPtr client);
422
423extern _X_EXPORT int
424ProcRRSetScreenSize (ClientPtr client);
425
426extern _X_EXPORT int
427ProcRRGetScreenResources (ClientPtr client);
428
429extern _X_EXPORT int
430ProcRRGetScreenResourcesCurrent (ClientPtr client);
431
432extern _X_EXPORT int
433ProcRRSetScreenConfig (ClientPtr client);
434
435extern _X_EXPORT int
436ProcRRGetScreenInfo (ClientPtr client);
437
438/*
439 * Deliver a ScreenNotify event
440 */
441extern _X_EXPORT void
442RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
443
444/* mirandr.c */
445extern _X_EXPORT Bool
446miRandRInit (ScreenPtr pScreen);
447
448extern _X_EXPORT Bool
449miRRGetInfo (ScreenPtr pScreen, Rotation *rotations);
450
451extern _X_EXPORT Bool
452miRRCrtcSet (ScreenPtr pScreen,
453 RRCrtcPtr crtc,
454 RRModePtr mode,
455 int x,
456 int y,
457 Rotation rotation,
458 int numOutput,
459 RROutputPtr *outputs);
460
461extern _X_EXPORT Bool
462miRROutputSetProperty (ScreenPtr pScreen,
463 RROutputPtr output,
464 Atom property,
465 RRPropertyValuePtr value);
466
467extern _X_EXPORT Bool
468miRROutputGetProperty (ScreenPtr pScreen,
469 RROutputPtr output,
470 Atom property);
471
472extern _X_EXPORT Bool
473miRROutputValidateMode (ScreenPtr pScreen,
474 RROutputPtr output,
475 RRModePtr mode);
476
477extern _X_EXPORT void
478miRRModeDestroy (ScreenPtr pScreen,
479 RRModePtr mode);
480
481/* randr.c */
482/*
483 * Send all pending events
484 */
485extern _X_EXPORT void
486RRTellChanged (ScreenPtr pScreen);
487
488/*
489 * Poll the driver for changed information
490 */
491extern _X_EXPORT Bool
492RRGetInfo (ScreenPtr pScreen, Bool force_query);
493
494extern _X_EXPORT Bool RRInit (void);
495
496extern _X_EXPORT Bool RRScreenInit(ScreenPtr pScreen);
497
498extern _X_EXPORT RROutputPtr
499RRFirstOutput (ScreenPtr pScreen);
500
501extern _X_EXPORT Rotation
502RRGetRotation (ScreenPtr pScreen);
503
504extern _X_EXPORT CARD16
505RRVerticalRefresh (xRRModeInfo *mode);
506
507#ifdef RANDR_10_INTERFACE
508/*
509 * This is the old interface, deprecated but left
510 * around for compatibility
511 */
512
513/*
514 * Then, register the specific size with the screen
515 */
516
517extern _X_EXPORT RRScreenSizePtr
518RRRegisterSize (ScreenPtr pScreen,
519 short width,
520 short height,
521 short mmWidth,
522 short mmHeight);
523
524extern _X_EXPORT Bool
525RRRegisterRate (ScreenPtr pScreen,
526 RRScreenSizePtr pSize,
527 int rate);
528
529/*
530 * Finally, set the current configuration of the screen
531 */
532
533extern _X_EXPORT void
534RRSetCurrentConfig (ScreenPtr pScreen,
535 Rotation rotation,
536 int rate,
537 RRScreenSizePtr pSize);
538
539extern _X_EXPORT Bool RRScreenInit (ScreenPtr pScreen);
540
541extern _X_EXPORT Rotation
542RRGetRotation (ScreenPtr pScreen);
543
544#endif
545
546/* rrcrtc.c */
547
548/*
549 * Notify the CRTC of some change; layoutChanged indicates that
550 * some position or size element changed
551 */
552extern _X_EXPORT void
553RRCrtcChanged (RRCrtcPtr crtc, Bool layoutChanged);
554
555/*
556 * Create a CRTC
557 */
558extern _X_EXPORT RRCrtcPtr
559RRCrtcCreate (ScreenPtr pScreen, void *devPrivate);
560
561/*
562 * Set the allowed rotations on a CRTC
563 */
564extern _X_EXPORT void
565RRCrtcSetRotations (RRCrtcPtr crtc, Rotation rotations);
566
567/*
568 * Set whether transforms are allowed on a CRTC
569 */
570extern _X_EXPORT void
571RRCrtcSetTransformSupport (RRCrtcPtr crtc, Bool transforms);
572
573/*
574 * Notify the extension that the Crtc has been reconfigured,
575 * the driver calls this whenever it has updated the mode
576 */
577extern _X_EXPORT Bool
578RRCrtcNotify (RRCrtcPtr crtc,
579 RRModePtr mode,
580 int x,
581 int y,
582 Rotation rotation,
583 RRTransformPtr transform,
584 int numOutputs,
585 RROutputPtr *outputs);
586
587extern _X_EXPORT void
588RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc);
589
590/*
591 * Request that the Crtc be reconfigured
592 */
593extern _X_EXPORT Bool
594RRCrtcSet (RRCrtcPtr crtc,
595 RRModePtr mode,
596 int x,
597 int y,
598 Rotation rotation,
599 int numOutput,
600 RROutputPtr *outputs);
601
602/*
603 * Request that the Crtc gamma be changed
604 */
605
606extern _X_EXPORT Bool
607RRCrtcGammaSet (RRCrtcPtr crtc,
608 CARD16 *red,
609 CARD16 *green,
610 CARD16 *blue);
611
612/*
613 * Request current gamma back from the DDX (if possible).
614 * This includes gamma size.
615 */
616
617extern _X_EXPORT Bool
618RRCrtcGammaGet(RRCrtcPtr crtc);
619
620/*
621 * Notify the extension that the Crtc gamma has been changed
622 * The driver calls this whenever it has changed the gamma values
623 * in the RRCrtcRec
624 */
625
626extern _X_EXPORT Bool
627RRCrtcGammaNotify (RRCrtcPtr crtc);
628
629/*
630 * Set the size of the gamma table at server startup time
631 */
632
633extern _X_EXPORT Bool
634RRCrtcGammaSetSize (RRCrtcPtr crtc,
635 int size);
636
637/*
638 * Return the area of the frame buffer scanned out by the crtc,
639 * taking into account the current mode and rotation
640 */
641
642extern _X_EXPORT void
643RRCrtcGetScanoutSize(RRCrtcPtr crtc, int *width, int *height);
644
645/*
646 * Compute the complete transformation matrix including
647 * client-specified transform, rotation/reflection values and the crtc
648 * offset.
649 *
650 * Return TRUE if the resulting transform is not a simple translation.
651 */
652extern _X_EXPORT Bool
653RRTransformCompute (int x,
654 int y,
655 int width,
656 int height,
657 Rotation rotation,
658 RRTransformPtr rr_transform,
659
660 PictTransformPtr transform,
661 struct pict_f_transform *f_transform,
662 struct pict_f_transform *f_inverse);
663
664/*
665 * Return crtc transform
666 */
667extern _X_EXPORT RRTransformPtr
668RRCrtcGetTransform (RRCrtcPtr crtc);
669
670/*
671 * Check whether the pending and current transforms are the same
672 */
673extern _X_EXPORT Bool
674RRCrtcPendingTransform (RRCrtcPtr crtc);
675
676/*
677 * Destroy a Crtc at shutdown
678 */
679extern _X_EXPORT void
680RRCrtcDestroy (RRCrtcPtr crtc);
681
682
683/*
684 * Set the pending CRTC transformation
685 */
686
687extern _X_EXPORT int
688RRCrtcTransformSet (RRCrtcPtr crtc,
689 PictTransformPtr transform,
690 struct pict_f_transform *f_transform,
691 struct pict_f_transform *f_inverse,
692 char *filter,
693 int filter_len,
694 xFixed *params,
695 int nparams);
696
697/*
698 * Initialize crtc type
699 */
700extern _X_EXPORT Bool
701RRCrtcInit (void);
702
703/*
704 * Crtc dispatch
705 */
706
707extern _X_EXPORT int
708ProcRRGetCrtcInfo (ClientPtr client);
709
710extern _X_EXPORT int
711ProcRRSetCrtcConfig (ClientPtr client);
712
713extern _X_EXPORT int
714ProcRRGetCrtcGammaSize (ClientPtr client);
715
716extern _X_EXPORT int
717ProcRRGetCrtcGamma (ClientPtr client);
718
719extern _X_EXPORT int
720ProcRRSetCrtcGamma (ClientPtr client);
721
722extern _X_EXPORT int
723ProcRRSetCrtcTransform (ClientPtr client);
724
725extern _X_EXPORT int
726ProcRRGetCrtcTransform (ClientPtr client);
727
728int
729ProcRRGetPanning (ClientPtr client);
730
731int
732ProcRRSetPanning (ClientPtr client);
733
734/* rrdispatch.c */
735extern _X_EXPORT Bool
736RRClientKnowsRates (ClientPtr pClient);
737
738/* rrmode.c */
739/*
740 * Find, and if necessary, create a mode
741 */
742
743extern _X_EXPORT RRModePtr
744RRModeGet (xRRModeInfo *modeInfo,
745 const char *name);
746
747/*
748 * Destroy a mode.
749 */
750
751extern _X_EXPORT void
752RRModeDestroy (RRModePtr mode);
753
754/*
755 * Return a list of modes that are valid for some output in pScreen
756 */
757extern _X_EXPORT RRModePtr *
758RRModesForScreen (ScreenPtr pScreen, int *num_ret);
759
760/*
761 * Initialize mode type
762 */
763extern _X_EXPORT Bool
764RRModeInit (void);
765
766extern _X_EXPORT int
767ProcRRCreateMode (ClientPtr client);
768
769extern _X_EXPORT int
770ProcRRDestroyMode (ClientPtr client);
771
772extern _X_EXPORT int
773ProcRRAddOutputMode (ClientPtr client);
774
775extern _X_EXPORT int
776ProcRRDeleteOutputMode (ClientPtr client);
777
778/* rroutput.c */
779
780/*
781 * Notify the output of some change. configChanged indicates whether
782 * any external configuration (mode list, clones, connected status)
783 * has changed, or whether the change was strictly internal
784 * (which crtc is in use)
785 */
786extern _X_EXPORT void
787RROutputChanged (RROutputPtr output, Bool configChanged);
788
789/*
790 * Create an output
791 */
792
793extern _X_EXPORT RROutputPtr
794RROutputCreate (ScreenPtr pScreen,
795 const char *name,
796 int nameLength,
797 void *devPrivate);
798
799/*
800 * Notify extension that output parameters have been changed
801 */
802extern _X_EXPORT Bool
803RROutputSetClones (RROutputPtr output,
804 RROutputPtr *clones,
805 int numClones);
806
807extern _X_EXPORT Bool
808RROutputSetModes (RROutputPtr output,
809 RRModePtr *modes,
810 int numModes,
811 int numPreferred);
812
813extern _X_EXPORT int
814RROutputAddUserMode (RROutputPtr output,
815 RRModePtr mode);
816
817extern _X_EXPORT int
818RROutputDeleteUserMode (RROutputPtr output,
819 RRModePtr mode);
820
821extern _X_EXPORT Bool
822RROutputSetCrtcs (RROutputPtr output,
823 RRCrtcPtr *crtcs,
824 int numCrtcs);
825
826extern _X_EXPORT Bool
827RROutputSetConnection (RROutputPtr output,
828 CARD8 connection);
829
830extern _X_EXPORT Bool
831RROutputSetSubpixelOrder (RROutputPtr output,
832 int subpixelOrder);
833
834extern _X_EXPORT Bool
835RROutputSetPhysicalSize (RROutputPtr output,
836 int mmWidth,
837 int mmHeight);
838
839extern _X_EXPORT void
840RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output);
841
842extern _X_EXPORT void
843RROutputDestroy (RROutputPtr output);
844
845extern _X_EXPORT int
846ProcRRGetOutputInfo (ClientPtr client);
847
848extern _X_EXPORT int
849ProcRRSetOutputPrimary (ClientPtr client);
850
851extern _X_EXPORT int
852ProcRRGetOutputPrimary (ClientPtr client);
853
854/*
855 * Initialize output type
856 */
857extern _X_EXPORT Bool
858RROutputInit (void);
859
860/* rrpointer.c */
861extern _X_EXPORT void
862RRPointerMoved (ScreenPtr pScreen, int x, int y);
863
864extern _X_EXPORT void
865RRPointerScreenConfigured (ScreenPtr pScreen);
866
867/* rrproperty.c */
868
869extern _X_EXPORT void
870RRDeleteAllOutputProperties (RROutputPtr output);
871
872extern _X_EXPORT RRPropertyValuePtr
873RRGetOutputProperty (RROutputPtr output, Atom property, Bool pending);
874
875extern _X_EXPORT RRPropertyPtr
876RRQueryOutputProperty (RROutputPtr output, Atom property);
877
878extern _X_EXPORT void
879RRDeleteOutputProperty (RROutputPtr output, Atom property);
880
881extern _X_EXPORT Bool
882RRPostPendingProperties (RROutputPtr output);
883
884extern _X_EXPORT int
885RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
886 int format, int mode, unsigned long len,
887 pointer value, Bool sendevent, Bool pending);
888
889extern _X_EXPORT int
890RRConfigureOutputProperty (RROutputPtr output, Atom property,
891 Bool pending, Bool range, Bool immutable,
892 int num_values, INT32 *values);
893extern _X_EXPORT int
894ProcRRChangeOutputProperty (ClientPtr client);
895
896extern _X_EXPORT int
897ProcRRGetOutputProperty (ClientPtr client);
898
899extern _X_EXPORT int
900ProcRRListOutputProperties (ClientPtr client);
901
902extern _X_EXPORT int
903ProcRRQueryOutputProperty (ClientPtr client);
904
905extern _X_EXPORT int
906ProcRRConfigureOutputProperty (ClientPtr client);
907
908extern _X_EXPORT int
909ProcRRDeleteOutputProperty (ClientPtr client);
910
911/* rrxinerama.c */
912#ifdef XINERAMA
913extern _X_EXPORT void
914RRXineramaExtensionInit(void);
915#endif
916
917#endif /* _RANDRSTR_H_ */
918
919/*
920
921randr extension implementation structure
922
923Query state:
924 ProcRRGetScreenInfo/ProcRRGetScreenResources
925 RRGetInfo
926
927 • Request configuration from driver, either 1.0 or 1.2 style
928 • These functions only record state changes, all
929 other actions are pended until RRTellChanged is called
930
931 ->rrGetInfo
932 1.0:
933 RRRegisterSize
934 RRRegisterRate
935 RRSetCurrentConfig
936 1.2:
937 RRScreenSetSizeRange
938 RROutputSetCrtcs
939 RRModeGet
940 RROutputSetModes
941 RROutputSetConnection
942 RROutputSetSubpixelOrder
943 RROutputSetClones
944 RRCrtcNotify
945
946 • Must delay scanning configuration until after ->rrGetInfo returns
947 because some drivers will call SetCurrentConfig in the middle
948 of the ->rrGetInfo operation.
949
950 1.0:
951
952 • Scan old configuration, mirror to new structures
953
954 RRScanOldConfig
955 RRCrtcCreate
956 RROutputCreate
957 RROutputSetCrtcs
958 RROutputSetConnection
959 RROutputSetSubpixelOrder
960 RROldModeAdd • This adds modes one-at-a-time
961 RRModeGet
962 RRCrtcNotify
963
964 • send events, reset pointer if necessary
965
966 RRTellChanged
967 WalkTree (sending events)
968
969 • when layout has changed:
970 RRPointerScreenConfigured
971 RRSendConfigNotify
972
973Asynchronous state setting (1.2 only)
974 When setting state asynchronously, the driver invokes the
975 ->rrGetInfo function and then calls RRTellChanged to flush
976 the changes to the clients and reset pointer if necessary
977
978Set state
979
980 ProcRRSetScreenConfig
981 RRCrtcSet
982 1.2:
983 ->rrCrtcSet
984 RRCrtcNotify
985 1.0:
986 ->rrSetConfig
987 RRCrtcNotify
988 RRTellChanged
989 */
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette