2 * Copyright © 2006 Keith Packard
3 * Copyright © 2011 Aaron Plattner
5 * Permission to use, copy, modify, distribute, and sell this software and its
6 * documentation for any purpose is hereby granted without fee, provided that
7 * the above copyright notice appear in all copies and that both that copyright
8 * notice and this permission notice appear in supporting documentation, and
9 * that the name of the copyright holders not be used in advertising or
10 * publicity pertaining to distribution of the software without specific,
11 * written prior permission. The copyright holders make no representations
12 * about the suitability of this software for any purpose. It is provided "as
13 * is" without express or implied warranty.
15 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
17 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
18 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
19 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
20 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
28 #include "xf86Modes.h"
29 #include "xf86Cursor.h"
32 #include "picturestr.h"
34 /* Compat definitions for older X Servers. */
36 #define M_T_PREFERRED 0x08
39 #define M_T_DRIVER 0x40
42 #define M_T_USERPREF 0x80
44 #ifndef HARDWARE_CURSOR_ARGB
45 #define HARDWARE_CURSOR_ARGB 0x00004000
48 typedef struct _xf86Crtc xf86CrtcRec
, *xf86CrtcPtr
;
49 typedef struct _xf86Output xf86OutputRec
, *xf86OutputPtr
;
51 /* define a standard for connector types */
52 typedef enum _xf86ConnectorType
{
58 XF86ConnectorComposite
,
60 XF86ConnectorComponent
,
62 XF86ConnectorProprietary
,
64 XF86ConnectorDisplayPort
,
67 typedef enum _xf86OutputStatus
{
68 XF86OutputStatusConnected
,
69 XF86OutputStatusDisconnected
,
70 XF86OutputStatusUnknown
73 typedef struct _xf86CrtcFuncs
{
75 * Turns the crtc on/off, or sets intermediate power levels if available.
77 * Unsupported intermediate modes drop to the lower power setting. If the
78 * mode is DPMSModeOff, the crtc must be disabled sufficiently for it to
79 * be safe to call mode_set.
82 (*dpms
) (xf86CrtcPtr crtc
, int mode
);
85 * Saves the crtc's state for restoration on VT switch.
88 (*save
) (xf86CrtcPtr crtc
);
91 * Restore's the crtc's state at VT switch.
94 (*restore
) (xf86CrtcPtr crtc
);
97 * Lock CRTC prior to mode setting, mostly for DRI.
98 * Returns whether unlock is needed
101 (*lock
) (xf86CrtcPtr crtc
);
104 * Unlock CRTC after mode setting, mostly for DRI
107 (*unlock
) (xf86CrtcPtr crtc
);
110 * Callback to adjust the mode to be set in the CRTC.
112 * This allows a CRTC to adjust the clock or even the entire set of
113 * timings, which is used for panels with fixed timings or for
114 * buses with clock limitations.
117 (*mode_fixup
) (xf86CrtcPtr crtc
,
118 DisplayModePtr mode
, DisplayModePtr adjusted_mode
);
121 * Prepare CRTC for an upcoming mode set.
124 (*prepare
) (xf86CrtcPtr crtc
);
127 * Callback for setting up a video mode after fixups have been made.
130 (*mode_set
) (xf86CrtcPtr crtc
,
132 DisplayModePtr adjusted_mode
, int x
, int y
);
135 * Commit mode changes to a CRTC
138 (*commit
) (xf86CrtcPtr crtc
);
140 /* Set the color ramps for the CRTC to the given values. */
142 (*gamma_set
) (xf86CrtcPtr crtc
, CARD16
*red
, CARD16
*green
, CARD16
*blue
,
146 * Allocate the shadow area, delay the pixmap creation until needed
148 void *(*shadow_allocate
) (xf86CrtcPtr crtc
, int width
, int height
);
151 * Create shadow pixmap for rotation support
154 (*shadow_create
) (xf86CrtcPtr crtc
, void *data
, int width
, int height
);
157 * Destroy shadow pixmap
160 (*shadow_destroy
) (xf86CrtcPtr crtc
, PixmapPtr pPixmap
, void *data
);
166 (*set_cursor_colors
) (xf86CrtcPtr crtc
, int bg
, int fg
);
169 * Set cursor position
172 (*set_cursor_position
) (xf86CrtcPtr crtc
, int x
, int y
);
178 (*show_cursor
) (xf86CrtcPtr crtc
);
184 (*hide_cursor
) (xf86CrtcPtr crtc
);
187 * Load monochrome image
190 (*load_cursor_image
) (xf86CrtcPtr crtc
, CARD8
*image
);
196 (*load_cursor_argb
) (xf86CrtcPtr crtc
, CARD32
*image
);
199 * Clean up driver-specific bits of the crtc
202 (*destroy
) (xf86CrtcPtr crtc
);
205 * Less fine-grained mode setting entry point for kernel modesetting
208 (*set_mode_major
) (xf86CrtcPtr crtc
, DisplayModePtr mode
,
209 Rotation rotation
, int x
, int y
);
212 * Callback for panning. Doesn't change the mode.
213 * Added in ABI version 2
216 (*set_origin
) (xf86CrtcPtr crtc
, int x
, int y
);
221 (*set_scanout_pixmap
)(xf86CrtcPtr crtc
, PixmapPtr pixmap
);
223 } xf86CrtcFuncsRec
, *xf86CrtcFuncsPtr
;
225 #define XF86_CRTC_VERSION 5
234 * Associated ScrnInfo
239 * Desired state of this CRTC
241 * Set when this CRTC should be driving one or more outputs
248 * This reflects the mode as set in the CRTC currently
249 * It will be cleared when the VT is not active or
250 * during server startup
254 PixmapPtr rotatedPixmap
;
260 * Locates this CRTC within the frame buffer
267 * This is set to the requested mode, independent of
268 * whether the VT is active. In particular, it receives
269 * the startup configured mode and saves the active mode
272 DisplayModeRec desiredMode
;
273 Rotation desiredRotation
;
274 int desiredX
, desiredY
;
276 /** crtc-specific functions */
277 const xf86CrtcFuncsRec
*funcs
;
282 * Holds driver-private information
284 void *driver_private
;
286 #ifdef RANDR_12_INTERFACE
290 * When RandR 1.2 is available, this
291 * points at the associated crtc object
293 RRCrtcPtr randr_crtc
;
299 * Current cursor is ARGB
303 * Track whether cursor is within CRTC range
305 Bool cursor_in_range
;
307 * Track state of cursor associated with this CRTC
312 * Current transformation matrix
314 PictTransform crtc_to_framebuffer
;
315 /* framebuffer_to_crtc was removed in ABI 2 */
316 struct pict_f_transform f_crtc_to_framebuffer
; /* ABI 2 */
317 struct pict_f_transform f_framebuffer_to_crtc
; /* ABI 2 */
318 PictFilterPtr filter
; /* ABI 2 */
319 xFixed
*params
; /* ABI 2 */
320 int nparams
; /* ABI 2 */
321 int filter_width
; /* ABI 2 */
322 int filter_height
; /* ABI 2 */
323 Bool transform_in_use
;
324 RRTransformRec transform
; /* ABI 2 */
325 Bool transformPresent
; /* ABI 2 */
326 RRTransformRec desiredTransform
; /* ABI 2 */
327 Bool desiredTransformPresent
; /* ABI 2 */
329 * Bounding box in screen space
334 * TotalArea: total panning area, larger than CRTC's size
335 * TrackingArea: Area of the pointer for which the CRTC is panned
336 * border: Borders of the displayed CRTC area which induces panning if the pointer reaches them
337 * Added in ABI version 2
339 BoxRec panningTotalArea
;
340 BoxRec panningTrackingArea
;
341 INT16 panningBorder
[4];
344 * Current gamma, especially useful after initial config.
345 * Added in ABI version 3
353 * Actual state of this CRTC
355 * Set to TRUE after modesetting, set to FALSE if no outputs are connected
356 * Added in ABI version 3
365 * Indicates that the driver is handling the transform, so the shadow
366 * surface should be disabled. The driver writes this field before calling
367 * xf86CrtcRotate to indicate that it is handling the transform (including
368 * rotation and reflection).
370 * Setting this flag also causes the server to stop adjusting the cursor
371 * image and position.
373 * Added in ABI version 4
375 Bool driverIsPerformingTransform
;
377 /* Added in ABI version 5
379 PixmapPtr current_scanout
;
382 typedef struct _xf86OutputFuncs
{
384 * Called to allow the output a chance to create properties after the
385 * RandR objects have been created.
388 (*create_resources
) (xf86OutputPtr output
);
391 * Turns the output on/off, or sets intermediate power levels if available.
393 * Unsupported intermediate modes drop to the lower power setting. If the
394 * mode is DPMSModeOff, the output must be disabled, as the DPLL may be
395 * disabled afterwards.
398 (*dpms
) (xf86OutputPtr output
, int mode
);
401 * Saves the output's state for restoration on VT switch.
404 (*save
) (xf86OutputPtr output
);
407 * Restore's the output's state at VT switch.
410 (*restore
) (xf86OutputPtr output
);
413 * Callback for testing a video mode for a given output.
415 * This function should only check for cases where a mode can't be supported
416 * on the output specifically, and not represent generic CRTC limitations.
418 * \return MODE_OK if the mode is valid, or another MODE_* otherwise.
421 (*mode_valid
) (xf86OutputPtr output
, DisplayModePtr pMode
);
424 * Callback to adjust the mode to be set in the CRTC.
426 * This allows an output to adjust the clock or even the entire set of
427 * timings, which is used for panels with fixed timings or for
428 * buses with clock limitations.
431 (*mode_fixup
) (xf86OutputPtr output
,
432 DisplayModePtr mode
, DisplayModePtr adjusted_mode
);
435 * Callback for preparing mode changes on an output
438 (*prepare
) (xf86OutputPtr output
);
441 * Callback for committing mode changes on an output
444 (*commit
) (xf86OutputPtr output
);
447 * Callback for setting up a video mode after fixups have been made.
449 * This is only called while the output is disabled. The dpms callback
450 * must be all that's necessary for the output, to turn the output on
451 * after this function is called.
454 (*mode_set
) (xf86OutputPtr output
,
455 DisplayModePtr mode
, DisplayModePtr adjusted_mode
);
458 * Probe for a connected output, and return detect_status.
460 xf86OutputStatus(*detect
) (xf86OutputPtr output
);
463 * Query the device for the modes it provides.
465 * This function may also update MonInfo, mm_width, and mm_height.
467 * \return singly-linked list of modes or NULL if no modes found.
469 DisplayModePtr(*get_modes
) (xf86OutputPtr output
);
471 #ifdef RANDR_12_INTERFACE
473 * Callback when an output's property has changed.
476 (*set_property
) (xf86OutputPtr output
,
477 Atom property
, RRPropertyValuePtr value
);
479 #ifdef RANDR_13_INTERFACE
481 * Callback to get an updated property value
484 (*get_property
) (xf86OutputPtr output
, Atom property
);
486 #ifdef RANDR_GET_CRTC_INTERFACE
488 * Callback to get current CRTC for a given output
490 xf86CrtcPtr(*get_crtc
) (xf86OutputPtr output
);
493 * Clean up driver-specific bits of the output
496 (*destroy
) (xf86OutputPtr output
);
497 } xf86OutputFuncsRec
, *xf86OutputFuncsPtr
;
499 #define XF86_OUTPUT_VERSION 2
508 * Associated ScrnInfo
513 * Currently connected crtc (if any)
515 * If this output is not in use, this field will be NULL.
520 * Possible CRTCs for this output as a mask of crtc indices
522 CARD32 possible_crtcs
;
525 * Possible outputs to share the same CRTC as a mask of output indices
527 CARD32 possible_clones
;
530 * Whether this output can support interlaced modes
532 Bool interlaceAllowed
;
535 * Whether this output can support double scan modes
537 Bool doubleScanAllowed
;
540 * List of available modes on this output.
542 * This should be the list from get_modes(), plus perhaps additional
543 * compatible modes added later.
545 DisplayModePtr probed_modes
;
548 * Options parsed from the related monitor section
550 OptionInfoPtr options
;
553 * Configured monitor section
555 XF86ConfMonitorPtr conf_monitor
;
558 * Desired initial position
560 int initial_x
, initial_y
;
563 * Desired initial rotation
565 Rotation initial_rotation
;
568 * Current connection status
570 * This indicates whether a monitor is known to be connected
571 * to this output or not, or whether there is no way to tell
573 xf86OutputStatus status
;
575 /** EDID monitor information */
578 /** subpixel order */
581 /** Physical size of the currently attached output device. */
582 int mm_width
, mm_height
;
587 /** output-specific functions */
588 const xf86OutputFuncsRec
*funcs
;
590 /** driver private information */
591 void *driver_private
;
593 /** Whether to use the old per-screen Monitor config section */
594 Bool use_screen_monitor
;
596 #ifdef RANDR_12_INTERFACE
598 * RandR 1.2 output structure.
600 * When RandR 1.2 is available, this points at the associated
601 * RandR output structure and is created when this output is created
603 RROutputPtr randr_output
;
608 * Desired initial panning
609 * Added in ABI version 2
611 BoxRec initialTotalArea
;
612 BoxRec initialTrackingArea
;
613 INT16 initialBorder
[4];
616 typedef struct _xf86ProviderFuncs
{
618 * Called to allow the provider a chance to create properties after the
619 * RandR objects have been created.
622 (*create_resources
) (ScrnInfoPtr scrn
);
625 * Callback when an provider's property has changed.
628 (*set_property
) (ScrnInfoPtr scrn
,
629 Atom property
, RRPropertyValuePtr value
);
632 * Callback to get an updated property value
635 (*get_property
) (ScrnInfoPtr provider
, Atom property
);
637 } xf86ProviderFuncsRec
, *xf86ProviderFuncsPtr
;
639 typedef struct _xf86CrtcConfigFuncs
{
641 * Requests that the driver resize the screen.
643 * The driver is responsible for updating scrn->virtualX and scrn->virtualY.
644 * If the requested size cannot be set, the driver should leave those values
645 * alone and return FALSE.
647 * A naive driver that cannot reallocate the screen may simply change
648 * virtual[XY]. A more advanced driver will want to also change the
649 * devPrivate.ptr and devKind of the screen pixmap, update any offscreen
650 * pixmaps it may have moved, and change pScrn->displayWidth.
653 (*resize
) (ScrnInfoPtr scrn
, int width
, int height
);
654 } xf86CrtcConfigFuncsRec
, *xf86CrtcConfigFuncsPtr
;
656 typedef void (*xf86_crtc_notify_proc_ptr
) (ScreenPtr pScreen
);
658 typedef struct _xf86CrtcConfig
{
660 xf86OutputPtr
*output
;
662 * compat_output is used whenever we deal
663 * with legacy code that only understands a single
664 * output. pScrn->modes will be loaded from this output,
665 * adjust frame will whack this output, etc.
672 int minWidth
, minHeight
;
673 int maxWidth
, maxHeight
;
675 /* For crtc-based rotation */
676 DamagePtr rotation_damage
;
677 Bool rotation_damage_registered
;
680 unsigned int dga_flags
;
681 unsigned long dga_address
;
682 DGAModePtr dga_modes
;
684 int dga_width
, dga_height
, dga_stride
;
685 DisplayModePtr dga_save_mode
;
687 const xf86CrtcConfigFuncsRec
*funcs
;
689 CreateScreenResourcesProcPtr CreateScreenResources
;
691 CloseScreenProcPtr CloseScreen
;
693 /* Cursor information */
694 xf86CursorInfoPtr cursor_info
;
698 CARD32 cursor_fg
, cursor_bg
;
701 * Options parsed from the related device section
703 OptionInfoPtr options
;
707 /* wrap screen BlockHandler for rotation */
708 ScreenBlockHandlerProcPtr BlockHandler
;
710 /* callback when crtc configuration changes */
711 xf86_crtc_notify_proc_ptr xf86_crtc_notify
;
714 const xf86ProviderFuncsRec
*provider_funcs
;
715 #ifdef RANDR_12_INTERFACE
716 RRProviderPtr randr_provider
;
718 void *randr_provider
;
720 } xf86CrtcConfigRec
, *xf86CrtcConfigPtr
;
722 extern _X_EXPORT
int xf86CrtcConfigPrivateIndex
;
724 #define XF86_CRTC_CONFIG_PTR(p) ((xf86CrtcConfigPtr) ((p)->privates[xf86CrtcConfigPrivateIndex].ptr))
726 static _X_INLINE xf86OutputPtr
727 xf86CompatOutput(ScrnInfoPtr pScrn
)
729 xf86CrtcConfigPtr config
= XF86_CRTC_CONFIG_PTR(pScrn
);
731 return config
->output
[config
->compat_output
];
734 static _X_INLINE xf86CrtcPtr
735 xf86CompatCrtc(ScrnInfoPtr pScrn
)
737 xf86OutputPtr compat_output
= xf86CompatOutput(pScrn
);
741 return compat_output
->crtc
;
744 static _X_INLINE RRCrtcPtr
745 xf86CompatRRCrtc(ScrnInfoPtr pScrn
)
747 xf86CrtcPtr compat_crtc
= xf86CompatCrtc(pScrn
);
751 return compat_crtc
->randr_crtc
;
755 * Initialize xf86CrtcConfig structure
758 extern _X_EXPORT
void
759 xf86CrtcConfigInit(ScrnInfoPtr scrn
, const xf86CrtcConfigFuncsRec
* funcs
);
761 extern _X_EXPORT
void
763 xf86CrtcSetSizeRange(ScrnInfoPtr scrn
,
764 int minWidth
, int minHeight
, int maxWidth
, int maxHeight
);
769 extern _X_EXPORT xf86CrtcPtr
770 xf86CrtcCreate(ScrnInfoPtr scrn
, const xf86CrtcFuncsRec
* funcs
);
772 extern _X_EXPORT
void
773 xf86CrtcDestroy(xf86CrtcPtr crtc
);
776 * Sets the given video mode on the given crtc
779 extern _X_EXPORT Bool
781 xf86CrtcSetModeTransform(xf86CrtcPtr crtc
, DisplayModePtr mode
,
782 Rotation rotation
, RRTransformPtr transform
, int x
,
785 extern _X_EXPORT Bool
787 xf86CrtcSetMode(xf86CrtcPtr crtc
, DisplayModePtr mode
, Rotation rotation
,
790 extern _X_EXPORT
void
791 xf86CrtcSetOrigin(xf86CrtcPtr crtc
, int x
, int y
);
794 * Assign crtc rotation during mode set
796 extern _X_EXPORT Bool
797 xf86CrtcRotate(xf86CrtcPtr crtc
);
800 * Clean up any rotation data, used when a crtc is turned off
801 * as well as when rotation is disabled.
803 extern _X_EXPORT
void
804 xf86RotateDestroy(xf86CrtcPtr crtc
);
807 * free shadow memory allocated for all crtcs
809 extern _X_EXPORT
void
810 xf86RotateFreeShadow(ScrnInfoPtr pScrn
);
813 * Clean up rotation during CloseScreen
815 extern _X_EXPORT
void
816 xf86RotateCloseScreen(ScreenPtr pScreen
);
819 * Return whether any output is assigned to the crtc
821 extern _X_EXPORT Bool
822 xf86CrtcInUse(xf86CrtcPtr crtc
);
827 extern _X_EXPORT xf86OutputPtr
828 xf86OutputCreate(ScrnInfoPtr scrn
,
829 const xf86OutputFuncsRec
* funcs
, const char *name
);
831 extern _X_EXPORT
void
832 xf86OutputUseScreenMonitor(xf86OutputPtr output
, Bool use_screen_monitor
);
834 extern _X_EXPORT Bool
835 xf86OutputRename(xf86OutputPtr output
, const char *name
);
837 extern _X_EXPORT
void
838 xf86OutputDestroy(xf86OutputPtr output
);
840 extern _X_EXPORT
void
841 xf86ProbeOutputModes(ScrnInfoPtr pScrn
, int maxX
, int maxY
);
843 extern _X_EXPORT
void
844 xf86SetScrnInfoModes(ScrnInfoPtr pScrn
);
846 #ifdef RANDR_13_INTERFACE
847 #define ScreenInitRetType int
849 #define ScreenInitRetType Bool
852 extern _X_EXPORT ScreenInitRetType
xf86CrtcScreenInit(ScreenPtr pScreen
);
854 extern _X_EXPORT Bool
855 xf86InitialConfiguration(ScrnInfoPtr pScrn
, Bool canGrow
);
857 extern _X_EXPORT
void
858 xf86DPMSSet(ScrnInfoPtr pScrn
, int PowerManagementMode
, int flags
);
860 extern _X_EXPORT Bool
861 xf86SaveScreen(ScreenPtr pScreen
, int mode
);
863 extern _X_EXPORT
void
864 xf86DisableUnusedFunctions(ScrnInfoPtr pScrn
);
866 extern _X_EXPORT DisplayModePtr
867 xf86OutputFindClosestMode(xf86OutputPtr output
, DisplayModePtr desired
);
869 extern _X_EXPORT Bool
871 xf86SetSingleMode(ScrnInfoPtr pScrn
, DisplayModePtr desired
, Rotation rotation
);
874 * Set the EDID information for the specified output
876 extern _X_EXPORT
void
877 xf86OutputSetEDID(xf86OutputPtr output
, xf86MonPtr edid_mon
);
880 * Return the list of modes supported by the EDID information
883 extern _X_EXPORT DisplayModePtr
xf86OutputGetEDIDModes(xf86OutputPtr output
);
885 extern _X_EXPORT xf86MonPtr
886 xf86OutputGetEDID(xf86OutputPtr output
, I2CBusPtr pDDCBus
);
889 * Initialize dga for this screen
893 extern _X_EXPORT Bool
894 xf86DiDGAInit(ScreenPtr pScreen
, unsigned long dga_address
);
896 /* this is the real function, used only internally */
898 _xf86_di_dga_init_internal(ScreenPtr pScreen
);
901 * Re-initialize dga for this screen (as when the set of modes changes)
904 extern _X_EXPORT Bool
905 xf86DiDGAReInit(ScreenPtr pScreen
);
908 /* This is the real function, used only internally */
910 _xf86_di_dga_reinit_internal(ScreenPtr pScreen
);
913 * Set the subpixel order reported for the screen using
914 * the information from the outputs
917 extern _X_EXPORT
void
918 xf86CrtcSetScreenSubpixelOrder(ScreenPtr pScreen
);
921 * Get a standard string name for a connector type
923 extern _X_EXPORT
const char *xf86ConnectorGetName(xf86ConnectorType connector
);
926 * Using the desired mode information in each crtc, set
927 * modes (used in EnterVT functions, or at server startup)
930 extern _X_EXPORT Bool
931 xf86SetDesiredModes(ScrnInfoPtr pScrn
);
934 * Initialize the CRTC-based cursor code. CRTC function vectors must
935 * contain relevant cursor setting functions.
937 * Driver should call this from ScreenInit function
939 extern _X_EXPORT Bool
940 xf86_cursors_init(ScreenPtr screen
, int max_width
, int max_height
, int flags
);
943 * Called when anything on the screen is reconfigured.
945 * Reloads cursor images as needed, then adjusts cursor positions.
947 * Driver should call this from crtc commit function.
949 extern _X_EXPORT
void
950 xf86_reload_cursors(ScreenPtr screen
);
953 * Called from EnterVT to turn the cursors back on
955 extern _X_EXPORT
void
956 xf86_show_cursors(ScrnInfoPtr scrn
);
959 * Called by the driver to turn cursors off
961 extern _X_EXPORT
void
962 xf86_hide_cursors(ScrnInfoPtr scrn
);
965 * Clean up CRTC-based cursor code. Driver must call this at CloseScreen time.
967 extern _X_EXPORT
void
968 xf86_cursors_fini(ScreenPtr screen
);
971 * Transform the cursor's coordinates based on the crtc transform. Normally
972 * this is done by the server, but if crtc->driverIsPerformingTransform is TRUE,
973 * then the server does not transform the cursor position automatically.
975 extern _X_EXPORT
void
976 xf86CrtcTransformCursorPos(xf86CrtcPtr crtc
, int *x
, int *y
);
980 * For overlay video, compute the relevant CRTC and
981 * clip video to that.
982 * wraps xf86XVClipVideoHelper()
985 extern _X_EXPORT Bool
987 xf86_crtc_clip_video_helper(ScrnInfoPtr pScrn
,
988 xf86CrtcPtr
* crtc_ret
,
989 xf86CrtcPtr desired_crtc
,
995 RegionPtr reg
, INT32 width
, INT32 height
);
998 extern _X_EXPORT xf86_crtc_notify_proc_ptr
999 xf86_wrap_crtc_notify(ScreenPtr pScreen
, xf86_crtc_notify_proc_ptr
new);
1001 extern _X_EXPORT
void
1002 xf86_unwrap_crtc_notify(ScreenPtr pScreen
, xf86_crtc_notify_proc_ptr old
);
1004 extern _X_EXPORT
void
1005 xf86_crtc_notify(ScreenPtr pScreen
);
1011 extern _X_EXPORT Bool
1012 xf86_crtc_supports_gamma(ScrnInfoPtr pScrn
);
1014 extern _X_EXPORT
void
1015 xf86ProviderSetup(ScrnInfoPtr scrn
,
1016 const xf86ProviderFuncsRec
* funcs
, const char *name
);
1018 extern _X_EXPORT
void
1019 xf86DetachAllCrtc(ScrnInfoPtr scrn
);
1021 #endif /* _XF86CRTC_H_ */