1#ifdef HAVE_DIX_CONFIG_H
2#include <dix-config.h>
3#endif
4
5#ifndef _VIDMODEPROC_H_
6#define _VIDMODEPROC_H_
7
8#include "displaymode.h"
9
10typedef enum {
11    VIDMODE_H_DISPLAY,
12    VIDMODE_H_SYNCSTART,
13    VIDMODE_H_SYNCEND,
14    VIDMODE_H_TOTAL,
15    VIDMODE_H_SKEW,
16    VIDMODE_V_DISPLAY,
17    VIDMODE_V_SYNCSTART,
18    VIDMODE_V_SYNCEND,
19    VIDMODE_V_TOTAL,
20    VIDMODE_FLAGS,
21    VIDMODE_CLOCK
22} VidModeSelectMode;
23
24typedef enum {
25    VIDMODE_MON_VENDOR,
26    VIDMODE_MON_MODEL,
27    VIDMODE_MON_NHSYNC,
28    VIDMODE_MON_NVREFRESH,
29    VIDMODE_MON_HSYNC_LO,
30    VIDMODE_MON_HSYNC_HI,
31    VIDMODE_MON_VREFRESH_LO,
32    VIDMODE_MON_VREFRESH_HI
33} VidModeSelectMonitor;
34
35typedef union {
36    const void *ptr;
37    int i;
38    float f;
39} vidMonitorValue;
40
41typedef Bool            (*VidModeExtensionInitProcPtr)       (ScreenPtr pScreen);
42typedef vidMonitorValue (*VidModeGetMonitorValueProcPtr)     (ScreenPtr pScreen,
43                                                              int valtyp,
44                                                              int indx);
45typedef Bool            (*VidModeGetEnabledProcPtr)          (void);
46typedef Bool            (*VidModeGetAllowNonLocalProcPtr)    (void);
47typedef Bool            (*VidModeGetCurrentModelineProcPtr)  (ScreenPtr pScreen,
48                                                              DisplayModePtr *mode,
49                                                              int *dotClock);
50typedef Bool            (*VidModeGetFirstModelineProcPtr)    (ScreenPtr pScreen,
51                                                              DisplayModePtr *mode,
52                                                              int *dotClock);
53typedef Bool            (*VidModeGetNextModelineProcPtr)     (ScreenPtr pScreen,
54                                                              DisplayModePtr *mode,
55                                                              int *dotClock);
56typedef Bool            (*VidModeDeleteModelineProcPtr)      (ScreenPtr pScreen,
57                                                              DisplayModePtr mode);
58typedef Bool            (*VidModeZoomViewportProcPtr)        (ScreenPtr pScreen,
59                                                              int zoom);
60typedef Bool            (*VidModeGetViewPortProcPtr)         (ScreenPtr pScreen,
61                                                              int *x,
62                                                              int *y);
63typedef Bool            (*VidModeSetViewPortProcPtr)         (ScreenPtr pScreen,
64                                                              int x,
65                                                              int y);
66typedef Bool            (*VidModeSwitchModeProcPtr)          (ScreenPtr pScreen,
67                                                              DisplayModePtr mode);
68typedef Bool            (*VidModeLockZoomProcPtr)            (ScreenPtr pScreen,
69                                                              Bool lock);
70typedef int             (*VidModeGetNumOfClocksProcPtr)      (ScreenPtr pScreen,
71                                                              Bool *progClock);
72typedef Bool            (*VidModeGetClocksProcPtr)           (ScreenPtr pScreen,
73                                                              int *Clocks);
74typedef ModeStatus      (*VidModeCheckModeForMonitorProcPtr) (ScreenPtr pScreen,
75                                                              DisplayModePtr mode);
76typedef ModeStatus      (*VidModeCheckModeForDriverProcPtr)  (ScreenPtr pScreen,
77                                                              DisplayModePtr mode);
78typedef void            (*VidModeSetCrtcForModeProcPtr)      (ScreenPtr pScreen,
79                                                              DisplayModePtr mode);
80typedef Bool            (*VidModeAddModelineProcPtr)         (ScreenPtr pScreen,
81                                                              DisplayModePtr mode);
82typedef int             (*VidModeGetDotClockProcPtr)         (ScreenPtr pScreen,
83                                                              int Clock);
84typedef int             (*VidModeGetNumOfModesProcPtr)       (ScreenPtr pScreen);
85typedef Bool            (*VidModeSetGammaProcPtr)            (ScreenPtr pScreen,
86                                                              float red,
87                                                              float green,
88                                                              float blue);
89typedef Bool            (*VidModeGetGammaProcPtr)            (ScreenPtr pScreen,
90                                                              float *red,
91                                                              float *green,
92                                                              float *blue);
93typedef Bool            (*VidModeSetGammaRampProcPtr)        (ScreenPtr pScreen,
94                                                              int size,
95                                                              CARD16 *red,
96                                                              CARD16 *green,
97                                                              CARD16 *blue);
98typedef Bool            (*VidModeGetGammaRampProcPtr)        (ScreenPtr pScreen,
99                                                              int size,
100                                                              CARD16 *red,
101                                                              CARD16 *green,
102                                                              CARD16 *blue);
103typedef int             (*VidModeGetGammaRampSizeProcPtr)    (ScreenPtr pScreen);
104
105typedef struct {
106    DisplayModePtr First;
107    DisplayModePtr Next;
108    int Flags;
109
110    VidModeExtensionInitProcPtr       ExtensionInit;
111    VidModeGetMonitorValueProcPtr     GetMonitorValue;
112    VidModeGetCurrentModelineProcPtr  GetCurrentModeline;
113    VidModeGetFirstModelineProcPtr    GetFirstModeline;
114    VidModeGetNextModelineProcPtr     GetNextModeline;
115    VidModeDeleteModelineProcPtr      DeleteModeline;
116    VidModeZoomViewportProcPtr        ZoomViewport;
117    VidModeGetViewPortProcPtr         GetViewPort;
118    VidModeSetViewPortProcPtr         SetViewPort;
119    VidModeSwitchModeProcPtr          SwitchMode;
120    VidModeLockZoomProcPtr            LockZoom;
121    VidModeGetNumOfClocksProcPtr      GetNumOfClocks;
122    VidModeGetClocksProcPtr           GetClocks;
123    VidModeCheckModeForMonitorProcPtr CheckModeForMonitor;
124    VidModeCheckModeForDriverProcPtr  CheckModeForDriver;
125    VidModeSetCrtcForModeProcPtr      SetCrtcForMode;
126    VidModeAddModelineProcPtr         AddModeline;
127    VidModeGetDotClockProcPtr         GetDotClock;
128    VidModeGetNumOfModesProcPtr       GetNumOfModes;
129    VidModeSetGammaProcPtr            SetGamma;
130    VidModeGetGammaProcPtr            GetGamma;
131    VidModeSetGammaRampProcPtr        SetGammaRamp;
132    VidModeGetGammaRampProcPtr        GetGammaRamp;
133    VidModeGetGammaRampSizeProcPtr    GetGammaRampSize;
134} VidModeRec, *VidModePtr;
135
136#ifdef XF86VIDMODE
137void VidModeAddExtension(Bool allow_non_local);
138VidModePtr VidModeGetPtr(ScreenPtr pScreen);
139VidModePtr VidModeInit(ScreenPtr pScreen);
140#endif /* XF86VIDMODE */
141
142#endif
143