vidmode: move to a separate library of its own

XVidMode extension might be useful to non hardware servers as well (e.g.
Xwayand) so that applications that rely on it (e.g. lot of older games)
can at least have read access to XVidMode.

But the implementation is very XFree86 centric, so the idea is to add
a bunch of vfunc that other non-XFree86 servers can hook up into to
provide a similar functionality.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87806
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
Olivier Fourdan 2016-02-10 09:34:34 +01:00 committed by Adam Jackson
parent 17097e083b
commit f175cf45ae
12 changed files with 592 additions and 450 deletions

View File

@ -1,4 +1,4 @@
noinst_LTLIBRARIES = libXext.la libXextdpmsstubs.la noinst_LTLIBRARIES = libXext.la libXextdpmsstubs.la libXvidmode.la
AM_CFLAGS = $(DIX_CFLAGS) AM_CFLAGS = $(DIX_CFLAGS)
@ -6,7 +6,7 @@ if XORG
sdk_HEADERS = xvdix.h xvmcext.h geext.h geint.h shmint.h syncsdk.h sdk_HEADERS = xvdix.h xvmcext.h geext.h geint.h shmint.h syncsdk.h
endif endif
# Sources always included in libXextbuiltin.la & libXext.la # Sources always included in libXextbuiltin.la, libXext.la
BUILTIN_SRCS = \ BUILTIN_SRCS = \
bigreq.c \ bigreq.c \
geext.c \ geext.c \
@ -98,6 +98,9 @@ libXext_la_LIBADD = $(BUILTIN_LIBS)
libXextdpmsstubs_la_SOURCES = dpmsstubs.c libXextdpmsstubs_la_SOURCES = dpmsstubs.c
# XVidMode extension
libXvidmode_la_SOURCES = vidmode.c
EXTRA_DIST = \ EXTRA_DIST = \
$(MITSHM_SRCS) \ $(MITSHM_SRCS) \
$(XV_SRCS) \ $(XV_SRCS) \

File diff suppressed because it is too large Load Diff

View File

@ -72,7 +72,9 @@ LOCAL_LIBS = \
$(DRI3_LIB) \ $(DRI3_LIB) \
$(top_builddir)/miext/sync/libsync.la \ $(top_builddir)/miext/sync/libsync.la \
$(top_builddir)/mi/libmi.la \ $(top_builddir)/mi/libmi.la \
$(top_builddir)/os/libos.la $(top_builddir)/os/libos.la \
$(top_builddir)/Xext/libXvidmode.la
Xorg_LDADD = \ Xorg_LDADD = \
$(LOCAL_LIBS) \ $(LOCAL_LIBS) \
$(XORG_SYS_LIBS) \ $(XORG_SYS_LIBS) \

View File

@ -14,10 +14,6 @@ XVSOURCES = xf86xv.c xf86xvmc.c
XVSDKINCS = xf86xv.h xf86xvmc.h xf86xvpriv.h XVSDKINCS = xf86xv.h xf86xvmc.h xf86xvpriv.h
endif endif
if XF86VIDMODE
XF86VMODESOURCES = xf86vmode.c
endif
if DGA if DGA
DGASOURCES = xf86DGA.c DGASOURCES = xf86DGA.c
DGA_SDK = dgaproc.h DGA_SDK = dgaproc.h

View File

@ -1,78 +0,0 @@
/* Prototypes for DGA functions that the DDX must provide */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#ifndef _VIDMODEPROC_H_
#define _VIDMODEPROC_H_
typedef enum {
VIDMODE_H_DISPLAY,
VIDMODE_H_SYNCSTART,
VIDMODE_H_SYNCEND,
VIDMODE_H_TOTAL,
VIDMODE_H_SKEW,
VIDMODE_V_DISPLAY,
VIDMODE_V_SYNCSTART,
VIDMODE_V_SYNCEND,
VIDMODE_V_TOTAL,
VIDMODE_FLAGS,
VIDMODE_CLOCK
} VidModeSelectMode;
typedef enum {
VIDMODE_MON_VENDOR,
VIDMODE_MON_MODEL,
VIDMODE_MON_NHSYNC,
VIDMODE_MON_NVREFRESH,
VIDMODE_MON_HSYNC_LO,
VIDMODE_MON_HSYNC_HI,
VIDMODE_MON_VREFRESH_LO,
VIDMODE_MON_VREFRESH_HI
} VidModeSelectMonitor;
typedef union {
const void *ptr;
int i;
float f;
} vidMonitorValue;
extern Bool xf86VidModeExtensionInit(ScreenPtr pScreen);
extern Bool xf86VidModeGetCurrentModeline(ScreenPtr pScreen, DisplayModePtr *mode,
int *dotClock);
extern Bool xf86VidModeGetFirstModeline(ScreenPtr pScreen, DisplayModePtr *mode,
int *dotClock);
extern Bool xf86VidModeGetNextModeline(ScreenPtr pScreen, DisplayModePtr *mode,
int *dotClock);
extern Bool xf86VidModeDeleteModeline(ScreenPtr pScreen, DisplayModePtr mode);
extern Bool xf86VidModeZoomViewport(ScreenPtr pScreen, int zoom);
extern Bool xf86VidModeGetViewPort(ScreenPtr pScreen, int *x, int *y);
extern Bool xf86VidModeSetViewPort(ScreenPtr pScreen, int x, int y);
extern Bool xf86VidModeSwitchMode(ScreenPtr pScreen, DisplayModePtr mode);
extern Bool xf86VidModeLockZoom(ScreenPtr pScreen, Bool lock);
extern int xf86VidModeGetNumOfClocks(ScreenPtr pScreen, Bool *progClock);
extern Bool xf86VidModeGetClocks(ScreenPtr pScreen, int *Clocks);
extern ModeStatus xf86VidModeCheckModeForMonitor(ScreenPtr pScreen,
DisplayModePtr mode);
extern ModeStatus xf86VidModeCheckModeForDriver(ScreenPtr pScreen,
DisplayModePtr mode);
extern void xf86VidModeSetCrtcForMode(ScreenPtr pScreen, DisplayModePtr mode);
extern Bool xf86VidModeAddModeline(ScreenPtr pScreen, DisplayModePtr mode);
extern int xf86VidModeGetDotClock(ScreenPtr pScreen, int Clock);
extern int xf86VidModeGetNumOfModes(ScreenPtr pScreen);
extern Bool xf86VidModeSetGamma(ScreenPtr pScreen, float red, float green,
float blue);
extern Bool xf86VidModeGetGamma(ScreenPtr pScreen, float *red, float *green,
float *blue);
extern vidMonitorValue xf86VidModeGetMonitorValue(ScreenPtr pScreen,
int valtyp, int indx);
extern Bool xf86VidModeSetGammaRamp(ScreenPtr, int, CARD16 *, CARD16 *,
CARD16 *);
extern Bool xf86VidModeGetGammaRamp(ScreenPtr, int, CARD16 *, CARD16 *,
CARD16 *);
extern int xf86VidModeGetGammaRampSize(ScreenPtr pScreen);
#endif

View File

@ -28,6 +28,7 @@
#endif #endif
#include "extension.h" #include "extension.h"
#include "extinit.h"
#include "globals.h" #include "globals.h"
#include "xf86.h" #include "xf86.h"
@ -47,7 +48,7 @@
#ifdef XF86VIDMODE #ifdef XF86VIDMODE
#include <X11/extensions/xf86vmproto.h> #include <X11/extensions/xf86vmproto.h>
#include "vidmodeproc.h" #include "vidmodestr.h"
#endif #endif
/* /*

View File

@ -72,6 +72,7 @@
#include "mipointer.h" #include "mipointer.h"
#include <X11/extensions/XI.h> #include <X11/extensions/XI.h>
#include <X11/extensions/XIproto.h> #include <X11/extensions/XIproto.h>
#include "xf86Extensions.h"
#include "xf86DDC.h" #include "xf86DDC.h"
#include "xf86Xinput.h" #include "xf86Xinput.h"
#include "xf86InPriv.h" #include "xf86InPriv.h"

View File

@ -115,15 +115,6 @@ typedef struct {
} DPMSRec, *DPMSPtr; } DPMSRec, *DPMSPtr;
#endif #endif
#ifdef XF86VIDMODE
/* Private info for Video Mode Extentsion */
typedef struct {
DisplayModePtr First;
DisplayModePtr Next;
int Flags;
} VidModeRec, *VidModePtr;
#endif
/* Information for root window properties. */ /* Information for root window properties. */
typedef struct _RootWinProp { typedef struct _RootWinProp {
struct _RootWinProp *next; struct _RootWinProp *next;

View File

@ -42,29 +42,18 @@
#include "os.h" #include "os.h"
#include "xf86.h" #include "xf86.h"
#include "xf86Priv.h" #include "xf86Priv.h"
#include "extinit.h"
#ifdef XF86VIDMODE #ifdef XF86VIDMODE
#include "vidmodeproc.h" #include "vidmodestr.h"
#include "xf86Privstr.h"
#include "xf86Extensions.h"
#include "xf86cmap.h" #include "xf86cmap.h"
static DevPrivateKeyRec VidModeKeyRec;
#define VidModeKey (&VidModeKeyRec)
#define VMPTR(p) ((VidModePtr)dixLookupPrivate(&(p)->devPrivates, VidModeKey))
#endif
#ifdef XF86VIDMODE
static Bool static Bool
xf86VidModeAvailable(ScreenPtr pScreen) xf86VidModeAvailable(ScreenPtr pScreen)
{ {
if (pScreen == NULL) { if (VidModeGetPtr(pScreen))
DebugF("pScreen == NULL\n");
return FALSE;
}
if (VMPTR(pScreen))
return TRUE; return TRUE;
else { else {
DebugF("pVidMode == NULL\n"); DebugF("pVidMode == NULL\n");
@ -72,7 +61,7 @@ xf86VidModeAvailable(ScreenPtr pScreen)
} }
} }
vidMonitorValue static vidMonitorValue
xf86VidModeGetMonitorValue(ScreenPtr pScreen, int valtyp, int indx) xf86VidModeGetMonitorValue(ScreenPtr pScreen, int valtyp, int indx)
{ {
vidMonitorValue ret = { NULL, }; vidMonitorValue ret = { NULL, };
@ -114,7 +103,7 @@ xf86VidModeGetMonitorValue(ScreenPtr pScreen, int valtyp, int indx)
return ret; return ret;
} }
Bool static Bool
xf86VidModeGetCurrentModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) xf86VidModeGetCurrentModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -133,7 +122,7 @@ xf86VidModeGetCurrentModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotC
return FALSE; return FALSE;
} }
int static int
xf86VidModeGetDotClock(ScreenPtr pScreen, int Clock) xf86VidModeGetDotClock(ScreenPtr pScreen, int Clock)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -148,7 +137,7 @@ xf86VidModeGetDotClock(ScreenPtr pScreen, int Clock)
return pScrn->clock[Clock]; return pScrn->clock[Clock];
} }
int static int
xf86VidModeGetNumOfClocks(ScreenPtr pScreen, Bool *progClock) xf86VidModeGetNumOfClocks(ScreenPtr pScreen, Bool *progClock)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -167,7 +156,7 @@ xf86VidModeGetNumOfClocks(ScreenPtr pScreen, Bool *progClock)
} }
} }
Bool static Bool
xf86VidModeGetClocks(ScreenPtr pScreen, int *Clocks) xf86VidModeGetClocks(ScreenPtr pScreen, int *Clocks)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -187,7 +176,7 @@ xf86VidModeGetClocks(ScreenPtr pScreen, int *Clocks)
return TRUE; return TRUE;
} }
Bool static Bool
xf86VidModeGetNextModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) xf86VidModeGetNextModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock)
{ {
VidModePtr pVidMode; VidModePtr pVidMode;
@ -196,7 +185,7 @@ xf86VidModeGetNextModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotCloc
if (!xf86VidModeAvailable(pScreen)) if (!xf86VidModeAvailable(pScreen))
return FALSE; return FALSE;
pVidMode = VMPTR(pScreen); pVidMode = VidModeGetPtr(pScreen);
for (p = pVidMode->Next; p != NULL && p != pVidMode->First; p = p->next) { for (p = pVidMode->Next; p != NULL && p != pVidMode->First; p = p->next) {
if (p->status == MODE_OK) { if (p->status == MODE_OK) {
@ -210,7 +199,7 @@ xf86VidModeGetNextModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotCloc
return FALSE; return FALSE;
} }
Bool static Bool
xf86VidModeGetFirstModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) xf86VidModeGetFirstModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -223,7 +212,7 @@ xf86VidModeGetFirstModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClo
if (pScrn->modes == NULL) if (pScrn->modes == NULL)
return FALSE; return FALSE;
pVidMode = VMPTR(pScreen); pVidMode = VidModeGetPtr(pScreen);
pVidMode->First = pScrn->modes; pVidMode->First = pScrn->modes;
pVidMode->Next = pVidMode->First->next; pVidMode->Next = pVidMode->First->next;
@ -236,7 +225,7 @@ xf86VidModeGetFirstModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClo
return xf86VidModeGetNextModeline(pScreen, mode, dotClock); return xf86VidModeGetNextModeline(pScreen, mode, dotClock);
} }
Bool static Bool
xf86VidModeDeleteModeline(ScreenPtr pScreen, DisplayModePtr mode) xf86VidModeDeleteModeline(ScreenPtr pScreen, DisplayModePtr mode)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -249,7 +238,7 @@ xf86VidModeDeleteModeline(ScreenPtr pScreen, DisplayModePtr mode)
return TRUE; return TRUE;
} }
Bool static Bool
xf86VidModeZoomViewport(ScreenPtr pScreen, int zoom) xf86VidModeZoomViewport(ScreenPtr pScreen, int zoom)
{ {
if (!xf86VidModeAvailable(pScreen)) if (!xf86VidModeAvailable(pScreen))
@ -259,7 +248,7 @@ xf86VidModeZoomViewport(ScreenPtr pScreen, int zoom)
return TRUE; return TRUE;
} }
Bool static Bool
xf86VidModeSetViewPort(ScreenPtr pScreen, int x, int y) xf86VidModeSetViewPort(ScreenPtr pScreen, int x, int y)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -280,7 +269,7 @@ xf86VidModeSetViewPort(ScreenPtr pScreen, int x, int y)
return TRUE; return TRUE;
} }
Bool static Bool
xf86VidModeGetViewPort(ScreenPtr pScreen, int *x, int *y) xf86VidModeGetViewPort(ScreenPtr pScreen, int *x, int *y)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -294,7 +283,7 @@ xf86VidModeGetViewPort(ScreenPtr pScreen, int *x, int *y)
return TRUE; return TRUE;
} }
Bool static Bool
xf86VidModeSwitchMode(ScreenPtr pScreen, DisplayModePtr mode) xf86VidModeSwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -316,7 +305,7 @@ xf86VidModeSwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
return retval; return retval;
} }
Bool static Bool
xf86VidModeLockZoom(ScreenPtr pScreen, Bool lock) xf86VidModeLockZoom(ScreenPtr pScreen, Bool lock)
{ {
if (!xf86VidModeAvailable(pScreen)) if (!xf86VidModeAvailable(pScreen))
@ -329,7 +318,7 @@ xf86VidModeLockZoom(ScreenPtr pScreen, Bool lock)
return TRUE; return TRUE;
} }
ModeStatus static ModeStatus
xf86VidModeCheckModeForMonitor(ScreenPtr pScreen, DisplayModePtr mode) xf86VidModeCheckModeForMonitor(ScreenPtr pScreen, DisplayModePtr mode)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -342,7 +331,7 @@ xf86VidModeCheckModeForMonitor(ScreenPtr pScreen, DisplayModePtr mode)
return xf86CheckModeForMonitor(mode, pScrn->monitor); return xf86CheckModeForMonitor(mode, pScrn->monitor);
} }
ModeStatus static ModeStatus
xf86VidModeCheckModeForDriver(ScreenPtr pScreen, DisplayModePtr mode) xf86VidModeCheckModeForDriver(ScreenPtr pScreen, DisplayModePtr mode)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -355,7 +344,7 @@ xf86VidModeCheckModeForDriver(ScreenPtr pScreen, DisplayModePtr mode)
return xf86CheckModeForDriver(pScrn, mode, 0); return xf86CheckModeForDriver(pScrn, mode, 0);
} }
void static void
xf86VidModeSetCrtcForMode(ScreenPtr pScreen, DisplayModePtr mode) xf86VidModeSetCrtcForMode(ScreenPtr pScreen, DisplayModePtr mode)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -374,7 +363,7 @@ xf86VidModeSetCrtcForMode(ScreenPtr pScreen, DisplayModePtr mode)
return; return;
} }
Bool static Bool
xf86VidModeAddModeline(ScreenPtr pScreen, DisplayModePtr mode) xf86VidModeAddModeline(ScreenPtr pScreen, DisplayModePtr mode)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -395,7 +384,7 @@ xf86VidModeAddModeline(ScreenPtr pScreen, DisplayModePtr mode)
return TRUE; return TRUE;
} }
int static int
xf86VidModeGetNumOfModes(ScreenPtr pScreen) xf86VidModeGetNumOfModes(ScreenPtr pScreen)
{ {
DisplayModePtr mode = NULL; DisplayModePtr mode = NULL;
@ -411,7 +400,7 @@ xf86VidModeGetNumOfModes(ScreenPtr pScreen)
} while (TRUE); } while (TRUE);
} }
Bool static Bool
xf86VidModeSetGamma(ScreenPtr pScreen, float red, float green, float blue) xf86VidModeSetGamma(ScreenPtr pScreen, float red, float green, float blue)
{ {
Gamma gamma; Gamma gamma;
@ -428,7 +417,7 @@ xf86VidModeSetGamma(ScreenPtr pScreen, float red, float green, float blue)
return TRUE; return TRUE;
} }
Bool static Bool
xf86VidModeGetGamma(ScreenPtr pScreen, float *red, float *green, float *blue) xf86VidModeGetGamma(ScreenPtr pScreen, float *red, float *green, float *blue)
{ {
ScrnInfoPtr pScrn; ScrnInfoPtr pScrn;
@ -443,7 +432,7 @@ xf86VidModeGetGamma(ScreenPtr pScreen, float *red, float *green, float *blue)
return TRUE; return TRUE;
} }
Bool static Bool
xf86VidModeSetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD16 *b) xf86VidModeSetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD16 *b)
{ {
if (!xf86VidModeAvailable(pScreen)) if (!xf86VidModeAvailable(pScreen))
@ -453,7 +442,7 @@ xf86VidModeSetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD1
return TRUE; return TRUE;
} }
Bool static Bool
xf86VidModeGetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD16 *b) xf86VidModeGetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD16 *b)
{ {
if (!xf86VidModeAvailable(pScreen)) if (!xf86VidModeAvailable(pScreen))
@ -463,7 +452,7 @@ xf86VidModeGetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD1
return TRUE; return TRUE;
} }
int static int
xf86VidModeGetGammaRampSize(ScreenPtr pScreen) xf86VidModeGetGammaRampSize(ScreenPtr pScreen)
{ {
if (!xf86VidModeAvailable(pScreen)) if (!xf86VidModeAvailable(pScreen))
@ -472,12 +461,9 @@ xf86VidModeGetGammaRampSize(ScreenPtr pScreen)
return xf86GetGammaRampSize(pScreen); return xf86GetGammaRampSize(pScreen);
} }
#endif /* XF86VIDMODE */ static Bool
xf86VidModeInit(ScreenPtr pScreen)
Bool
xf86VidModeExtensionInit(ScreenPtr pScreen)
{ {
#ifdef XF86VIDMODE
VidModePtr pVidMode; VidModePtr pVidMode;
if (!xf86GetVidModeEnabled()) { if (!xf86GetVidModeEnabled()) {
@ -485,18 +471,61 @@ xf86VidModeExtensionInit(ScreenPtr pScreen)
return FALSE; return FALSE;
} }
if (!dixRegisterPrivateKey(&VidModeKeyRec, PRIVATE_SCREEN, sizeof(VidModeRec))) pVidMode = VidModeInit(pScreen);
if (!pVidMode)
return FALSE; return FALSE;
pVidMode = VMPTR(pScreen);
pVidMode->Flags = 0; pVidMode->Flags = 0;
pVidMode->Next = NULL; pVidMode->Next = NULL;
pVidMode->GetMonitorValue = xf86VidModeGetMonitorValue;
pVidMode->GetCurrentModeline = xf86VidModeGetCurrentModeline;
pVidMode->GetFirstModeline = xf86VidModeGetFirstModeline;
pVidMode->GetNextModeline = xf86VidModeGetNextModeline;
pVidMode->DeleteModeline = xf86VidModeDeleteModeline;
pVidMode->ZoomViewport = xf86VidModeZoomViewport;
pVidMode->GetViewPort = xf86VidModeGetViewPort;
pVidMode->SetViewPort = xf86VidModeSetViewPort;
pVidMode->SwitchMode = xf86VidModeSwitchMode;
pVidMode->LockZoom = xf86VidModeLockZoom;
pVidMode->GetNumOfClocks = xf86VidModeGetNumOfClocks;
pVidMode->GetClocks = xf86VidModeGetClocks;
pVidMode->CheckModeForMonitor = xf86VidModeCheckModeForMonitor;
pVidMode->CheckModeForDriver = xf86VidModeCheckModeForDriver;
pVidMode->SetCrtcForMode = xf86VidModeSetCrtcForMode;
pVidMode->AddModeline = xf86VidModeAddModeline;
pVidMode->GetDotClock = xf86VidModeGetDotClock;
pVidMode->GetNumOfModes = xf86VidModeGetNumOfModes;
pVidMode->SetGamma = xf86VidModeSetGamma;
pVidMode->GetGamma = xf86VidModeGetGamma;
pVidMode->SetGammaRamp = xf86VidModeSetGammaRamp;
pVidMode->GetGammaRamp = xf86VidModeGetGammaRamp;
pVidMode->GetGammaRampSize = xf86VidModeGetGammaRampSize;
return TRUE; return TRUE;
#else
DebugF("no vidmode extension\n");
return FALSE;
#endif
} }
void
XFree86VidModeExtensionInit(void)
{
int i;
Bool enabled = FALSE;
DebugF("XFree86VidModeExtensionInit");
/* This means that the DDX doesn't want the vidmode extension enabled */
if (!xf86GetVidModeEnabled())
return;
for (i = 0; i < screenInfo.numScreens; i++) {
if (xf86VidModeInit (screenInfo.screens[i]))
enabled = TRUE;
}
/* This means that the DDX doesn't want the vidmode extension enabled */
if (!enabled)
return;
VidModeAddExtension(xf86GetVidModeAllowNonLocal());
}
#endif /* XF86VIDMODE */

View File

@ -76,4 +76,5 @@ EXTRA_DIST = \
swaprep.h \ swaprep.h \
swapreq.h \ swapreq.h \
systemd-logind.h \ systemd-logind.h \
vidmodestr.h \
xsha1.h xsha1.h

140
include/vidmodestr.h Normal file
View File

@ -0,0 +1,140 @@
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#ifndef _VIDMODEPROC_H_
#define _VIDMODEPROC_H_
#include "displaymode.h"
typedef enum {
VIDMODE_H_DISPLAY,
VIDMODE_H_SYNCSTART,
VIDMODE_H_SYNCEND,
VIDMODE_H_TOTAL,
VIDMODE_H_SKEW,
VIDMODE_V_DISPLAY,
VIDMODE_V_SYNCSTART,
VIDMODE_V_SYNCEND,
VIDMODE_V_TOTAL,
VIDMODE_FLAGS,
VIDMODE_CLOCK
} VidModeSelectMode;
typedef enum {
VIDMODE_MON_VENDOR,
VIDMODE_MON_MODEL,
VIDMODE_MON_NHSYNC,
VIDMODE_MON_NVREFRESH,
VIDMODE_MON_HSYNC_LO,
VIDMODE_MON_HSYNC_HI,
VIDMODE_MON_VREFRESH_LO,
VIDMODE_MON_VREFRESH_HI
} VidModeSelectMonitor;
typedef union {
const void *ptr;
int i;
float f;
} vidMonitorValue;
typedef Bool (*VidModeExtensionInitProcPtr) (ScreenPtr pScreen);
typedef vidMonitorValue (*VidModeGetMonitorValueProcPtr) (ScreenPtr pScreen,
int valtyp,
int indx);
typedef Bool (*VidModeGetEnabledProcPtr) (void);
typedef Bool (*VidModeGetAllowNonLocalProcPtr) (void);
typedef Bool (*VidModeGetCurrentModelineProcPtr) (ScreenPtr pScreen,
DisplayModePtr *mode,
int *dotClock);
typedef Bool (*VidModeGetFirstModelineProcPtr) (ScreenPtr pScreen,
DisplayModePtr *mode,
int *dotClock);
typedef Bool (*VidModeGetNextModelineProcPtr) (ScreenPtr pScreen,
DisplayModePtr *mode,
int *dotClock);
typedef Bool (*VidModeDeleteModelineProcPtr) (ScreenPtr pScreen,
DisplayModePtr mode);
typedef Bool (*VidModeZoomViewportProcPtr) (ScreenPtr pScreen,
int zoom);
typedef Bool (*VidModeGetViewPortProcPtr) (ScreenPtr pScreen,
int *x,
int *y);
typedef Bool (*VidModeSetViewPortProcPtr) (ScreenPtr pScreen,
int x,
int y);
typedef Bool (*VidModeSwitchModeProcPtr) (ScreenPtr pScreen,
DisplayModePtr mode);
typedef Bool (*VidModeLockZoomProcPtr) (ScreenPtr pScreen,
Bool lock);
typedef int (*VidModeGetNumOfClocksProcPtr) (ScreenPtr pScreen,
Bool *progClock);
typedef Bool (*VidModeGetClocksProcPtr) (ScreenPtr pScreen,
int *Clocks);
typedef ModeStatus (*VidModeCheckModeForMonitorProcPtr) (ScreenPtr pScreen,
DisplayModePtr mode);
typedef ModeStatus (*VidModeCheckModeForDriverProcPtr) (ScreenPtr pScreen,
DisplayModePtr mode);
typedef void (*VidModeSetCrtcForModeProcPtr) (ScreenPtr pScreen,
DisplayModePtr mode);
typedef Bool (*VidModeAddModelineProcPtr) (ScreenPtr pScreen,
DisplayModePtr mode);
typedef int (*VidModeGetDotClockProcPtr) (ScreenPtr pScreen,
int Clock);
typedef int (*VidModeGetNumOfModesProcPtr) (ScreenPtr pScreen);
typedef Bool (*VidModeSetGammaProcPtr) (ScreenPtr pScreen,
float red,
float green,
float blue);
typedef Bool (*VidModeGetGammaProcPtr) (ScreenPtr pScreen,
float *red,
float *green,
float *blue);
typedef Bool (*VidModeSetGammaRampProcPtr) (ScreenPtr pScreen,
int size,
CARD16 *red,
CARD16 *green,
CARD16 *blue);
typedef Bool (*VidModeGetGammaRampProcPtr) (ScreenPtr pScreen,
int size,
CARD16 *red,
CARD16 *green,
CARD16 *blue);
typedef int (*VidModeGetGammaRampSizeProcPtr) (ScreenPtr pScreen);
typedef struct {
DisplayModePtr First;
DisplayModePtr Next;
int Flags;
VidModeExtensionInitProcPtr ExtensionInit;
VidModeGetMonitorValueProcPtr GetMonitorValue;
VidModeGetCurrentModelineProcPtr GetCurrentModeline;
VidModeGetFirstModelineProcPtr GetFirstModeline;
VidModeGetNextModelineProcPtr GetNextModeline;
VidModeDeleteModelineProcPtr DeleteModeline;
VidModeZoomViewportProcPtr ZoomViewport;
VidModeGetViewPortProcPtr GetViewPort;
VidModeSetViewPortProcPtr SetViewPort;
VidModeSwitchModeProcPtr SwitchMode;
VidModeLockZoomProcPtr LockZoom;
VidModeGetNumOfClocksProcPtr GetNumOfClocks;
VidModeGetClocksProcPtr GetClocks;
VidModeCheckModeForMonitorProcPtr CheckModeForMonitor;
VidModeCheckModeForDriverProcPtr CheckModeForDriver;
VidModeSetCrtcForModeProcPtr SetCrtcForMode;
VidModeAddModelineProcPtr AddModeline;
VidModeGetDotClockProcPtr GetDotClock;
VidModeGetNumOfModesProcPtr GetNumOfModes;
VidModeSetGammaProcPtr SetGamma;
VidModeGetGammaProcPtr GetGamma;
VidModeSetGammaRampProcPtr SetGammaRamp;
VidModeGetGammaRampProcPtr GetGammaRamp;
VidModeGetGammaRampSizeProcPtr GetGammaRampSize;
} VidModeRec, *VidModePtr;
void VidModeAddExtension(Bool allow_non_local);
VidModePtr VidModeGetPtr(ScreenPtr pScreen);
VidModePtr VidModeInit(ScreenPtr pScreen);
#endif

View File

@ -56,6 +56,7 @@ libxservertest_la_LIBADD += \
$(top_builddir)/hw/xfree86/ddc/libddc.la \ $(top_builddir)/hw/xfree86/ddc/libddc.la \
$(top_builddir)/hw/xfree86/i2c/libi2c.la \ $(top_builddir)/hw/xfree86/i2c/libi2c.la \
$(top_builddir)/hw/xfree86/dixmods/libxorgxkb.la \ $(top_builddir)/hw/xfree86/dixmods/libxorgxkb.la \
$(top_builddir)/Xext/libXvidmode.la \
@XORG_LIBS@ @XORG_LIBS@
BUILT_SOURCES = sdksyms.c BUILT_SOURCES = sdksyms.c
@ -91,6 +92,7 @@ libxservertest_la_LIBADD += \
$(top_builddir)/render/librender.la \ $(top_builddir)/render/librender.la \
$(top_builddir)/Xext/libXext.la \ $(top_builddir)/Xext/libXext.la \
$(top_builddir)/Xext/libXextdpmsstubs.la \ $(top_builddir)/Xext/libXextdpmsstubs.la \
$(top_builddir)/Xext/libXvidmode.la \
$(top_builddir)/Xi/libXi.la \ $(top_builddir)/Xi/libXi.la \
$(top_builddir)/Xi/libXistubs.la \ $(top_builddir)/Xi/libXistubs.la \
$(top_builddir)/xfixes/libxfixes.la \ $(top_builddir)/xfixes/libxfixes.la \