📄 xf86crtc.h
字号:
(*set_property)(xf86OutputPtr output, Atom property, RRPropertyValuePtr value);#endif /** * Clean up driver-specific bits of the output */ void (*destroy) (xf86OutputPtr output);} xf86OutputFuncsRec, *xf86OutputFuncsPtr;struct _xf86Output { /** * Associated ScrnInfo */ ScrnInfoPtr scrn; /** * Currently connected crtc (if any) * * If this output is not in use, this field will be NULL. */ xf86CrtcPtr crtc; /** * Possible CRTCs for this output as a mask of crtc indices */ CARD32 possible_crtcs; /** * Possible outputs to share the same CRTC as a mask of output indices */ CARD32 possible_clones; /** * Whether this output can support interlaced modes */ Bool interlaceAllowed; /** * Whether this output can support double scan modes */ Bool doubleScanAllowed; /** * List of available modes on this output. * * This should be the list from get_modes(), plus perhaps additional * compatible modes added later. */ DisplayModePtr probed_modes; /** * Options parsed from the related monitor section */ OptionInfoPtr options; /** * Configured monitor section */ XF86ConfMonitorPtr conf_monitor; /** * Desired initial position */ int initial_x, initial_y; /** * Desired initial rotation */ Rotation initial_rotation; /** * Current connection status * * This indicates whether a monitor is known to be connected * to this output or not, or whether there is no way to tell */ xf86OutputStatus status; /** EDID monitor information */ xf86MonPtr MonInfo; /** subpixel order */ int subpixel_order; /** Physical size of the currently attached output device. */ int mm_width, mm_height; /** Output name */ char *name; /** output-specific functions */ const xf86OutputFuncsRec *funcs; /** driver private information */ void *driver_private; /** Whether to use the old per-screen Monitor config section */ Bool use_screen_monitor;#ifdef RANDR_12_INTERFACE /** * RandR 1.2 output structure. * * When RandR 1.2 is available, this points at the associated * RandR output structure and is created when this output is created */ RROutputPtr randr_output;#else void *randr_output;#endif};typedef struct _xf86CrtcConfigFuncs { /** * Requests that the driver resize the screen. * * The driver is responsible for updating scrn->virtualX and scrn->virtualY. * If the requested size cannot be set, the driver should leave those values * alone and return FALSE. * * A naive driver that cannot reallocate the screen may simply change * virtual[XY]. A more advanced driver will want to also change the * devPrivate.ptr and devKind of the screen pixmap, update any offscreen * pixmaps it may have moved, and change pScrn->displayWidth. */ Bool (*resize)(ScrnInfoPtr scrn, int width, int height);} xf86CrtcConfigFuncsRec, *xf86CrtcConfigFuncsPtr;typedef struct _xf86CrtcConfig { int num_output; xf86OutputPtr *output; /** * compat_output is used whenever we deal * with legacy code that only understands a single * output. pScrn->modes will be loaded from this output, * adjust frame will whack this output, etc. */ int compat_output; int num_crtc; xf86CrtcPtr *crtc; int minWidth, minHeight; int maxWidth, maxHeight; /* For crtc-based rotation */ DamagePtr rotation_damage; Bool rotation_damage_registered; /* DGA */ unsigned int dga_flags; unsigned long dga_address; DGAModePtr dga_modes; int dga_nmode; int dga_width, dga_height, dga_stride; DisplayModePtr dga_save_mode; const xf86CrtcConfigFuncsRec *funcs; CreateScreenResourcesProcPtr CreateScreenResources; CloseScreenProcPtr CloseScreen; /* Cursor information */ xf86CursorInfoPtr cursor_info; CursorPtr cursor; CARD8 *cursor_image; Bool cursor_on; CARD32 cursor_fg, cursor_bg; /** * Options parsed from the related device section */ OptionInfoPtr options; Bool debug_modes; /* wrap screen BlockHandler for rotation */ ScreenBlockHandlerProcPtr BlockHandler;} xf86CrtcConfigRec, *xf86CrtcConfigPtr;extern int xf86CrtcConfigPrivateIndex;#define XF86_CRTC_CONFIG_PTR(p) ((xf86CrtcConfigPtr) ((p)->privates[xf86CrtcConfigPrivateIndex].ptr))/* * Initialize xf86CrtcConfig structure */voidxf86CrtcConfigInit (ScrnInfoPtr scrn, const xf86CrtcConfigFuncsRec *funcs);voidxf86CrtcSetSizeRange (ScrnInfoPtr scrn, int minWidth, int minHeight, int maxWidth, int maxHeight);/* * Crtc functions */xf86CrtcPtrxf86CrtcCreate (ScrnInfoPtr scrn, const xf86CrtcFuncsRec *funcs);voidxf86CrtcDestroy (xf86CrtcPtr crtc);/** * Sets the given video mode on the given crtc */Boolxf86CrtcSetMode (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation, int x, int y);/* * Assign crtc rotation during mode set */Boolxf86CrtcRotate (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation);/* * Clean up rotation during CloseScreen */voidxf86RotateCloseScreen (ScreenPtr pScreen);/** * Return whether any output is assigned to the crtc */Boolxf86CrtcInUse (xf86CrtcPtr crtc);/* * Output functions */xf86OutputPtrxf86OutputCreate (ScrnInfoPtr scrn, const xf86OutputFuncsRec *funcs, const char *name);voidxf86OutputUseScreenMonitor (xf86OutputPtr output, Bool use_screen_monitor);Boolxf86OutputRename (xf86OutputPtr output, const char *name);voidxf86OutputDestroy (xf86OutputPtr output);voidxf86ProbeOutputModes (ScrnInfoPtr pScrn, int maxX, int maxY);voidxf86SetScrnInfoModes (ScrnInfoPtr pScrn);Boolxf86CrtcScreenInit (ScreenPtr pScreen);Boolxf86InitialConfiguration (ScrnInfoPtr pScrn, Bool canGrow);voidxf86DPMSSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags); Boolxf86SaveScreen(ScreenPtr pScreen, int mode);voidxf86DisableUnusedFunctions(ScrnInfoPtr pScrn);DisplayModePtrxf86OutputFindClosestMode (xf86OutputPtr output, DisplayModePtr desired); Boolxf86SetSingleMode (ScrnInfoPtr pScrn, DisplayModePtr desired, Rotation rotation);/** * Set the EDID information for the specified output */voidxf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon);/** * Return the list of modes supported by the EDID information * stored in 'output' */DisplayModePtrxf86OutputGetEDIDModes (xf86OutputPtr output);xf86MonPtrxf86OutputGetEDID (xf86OutputPtr output, I2CBusPtr pDDCBus);/** * Initialize dga for this screen */Boolxf86DiDGAInit (ScreenPtr pScreen, unsigned long dga_address);/** * Re-initialize dga for this screen (as when the set of modes changes) */Boolxf86DiDGAReInit (ScreenPtr pScreen);/* * Set the subpixel order reported for the screen using * the information from the outputs */voidxf86CrtcSetScreenSubpixelOrder (ScreenPtr pScreen);/* * Get a standard string name for a connector type */char *xf86ConnectorGetName(xf86ConnectorType connector);/* * Using the desired mode information in each crtc, set * modes (used in EnterVT functions, or at server startup) */Boolxf86SetDesiredModes (ScrnInfoPtr pScrn);/** * Initialize the CRTC-based cursor code. CRTC function vectors must * contain relevant cursor setting functions. * * Driver should call this from ScreenInit function */Boolxf86_cursors_init (ScreenPtr screen, int max_width, int max_height, int flags);/** * Called when anything on the screen is reconfigured. * * Reloads cursor images as needed, then adjusts cursor positions. * * Driver should call this from crtc commit function. */voidxf86_reload_cursors (ScreenPtr screen);/** * Called from EnterVT to turn the cursors back on */voidxf86_show_cursors (ScrnInfoPtr scrn);/** * Called by the driver to turn cursors off */voidxf86_hide_cursors (ScrnInfoPtr scrn);/** * Clean up CRTC-based cursor code. Driver must call this at CloseScreen time. */voidxf86_cursors_fini (ScreenPtr screen);/* * For overlay video, compute the relevant CRTC and * clip video to that. * wraps xf86XVClipVideoHelper() */Boolxf86_crtc_clip_video_helper(ScrnInfoPtr pScrn, xf86CrtcPtr *crtc_ret, xf86CrtcPtr desired_crtc, BoxPtr dst, INT32 *xa, INT32 *xb, INT32 *ya, INT32 *yb, RegionPtr reg, INT32 width, INT32 height); #endif /* _XF86CRTC_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -