[PATCH 1/2] atom: Bump initial table size
We're always creating ~230 atoms at startup, might as well tune it so we don't hit the realloc path before Dispatch. Signed-off-by: Adam Jackson a...@redhat.com --- dix/atom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dix/atom.c b/dix/atom.c index 7de7fb0..a1e555e 100644 --- a/dix/atom.c +++ b/dix/atom.c @@ -56,7 +56,7 @@ SOFTWARE. #include resource.h #include dix.h -#define InitialTableSize 100 +#define InitialTableSize 256 typedef struct _Node { struct _Node *left, *right; -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 7/8] vidmode: Hide implementation details
Also remove vidmodeproc.h from the SDK since no drivers are using it. Signed-off-by: Adam Jackson a...@redhat.com --- hw/xfree86/common/Makefile.am | 1 - hw/xfree86/common/vidmodeproc.h | 77 - hw/xfree86/common/xf86VidMode.c | 2 +- hw/xfree86/sdksyms.sh | 3 -- 4 files changed, 39 insertions(+), 44 deletions(-) diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am index 54e7f4d..3bc0046 100644 --- a/hw/xfree86/common/Makefile.am +++ b/hw/xfree86/common/Makefile.am @@ -16,7 +16,6 @@ endif if XF86VIDMODE XF86VMODESOURCES = xf86vmode.c -XF86VMODE_SDK = vidmodeproc.h endif if DGA diff --git a/hw/xfree86/common/vidmodeproc.h b/hw/xfree86/common/vidmodeproc.h index cff340c..59d714c 100644 --- a/hw/xfree86/common/vidmodeproc.h +++ b/hw/xfree86/common/vidmodeproc.h @@ -41,44 +41,43 @@ typedef union { extern Bool VidModeExtensionInit(ScreenPtr pScreen); -extern _X_EXPORT Bool VidModeAvailable(int scrnIndex); -extern _X_EXPORT Bool VidModeGetCurrentModeline(int scrnIndex, void **mode, -int *dotClock); -extern _X_EXPORT Bool VidModeGetFirstModeline(int scrnIndex, void **mode, - int *dotClock); -extern _X_EXPORT Bool VidModeGetNextModeline(int scrnIndex, void **mode, - int *dotClock); -extern _X_EXPORT Bool VidModeDeleteModeline(int scrnIndex, void *mode); -extern _X_EXPORT Bool VidModeZoomViewport(int scrnIndex, int zoom); -extern _X_EXPORT Bool VidModeGetViewPort(int scrnIndex, int *x, int *y); -extern _X_EXPORT Bool VidModeSetViewPort(int scrnIndex, int x, int y); -extern _X_EXPORT Bool VidModeSwitchMode(int scrnIndex, void *mode); -extern _X_EXPORT Bool VidModeLockZoom(int scrnIndex, Bool lock); -extern _X_EXPORT Bool VidModeGetMonitor(int scrnIndex, void **monitor); -extern _X_EXPORT int VidModeGetNumOfClocks(int scrnIndex, Bool *progClock); -extern _X_EXPORT Bool VidModeGetClocks(int scrnIndex, int *Clocks); -extern _X_EXPORT ModeStatus VidModeCheckModeForMonitor(int scrnIndex, - void *mode); -extern _X_EXPORT ModeStatus VidModeCheckModeForDriver(int scrnIndex, - void *mode); -extern _X_EXPORT void VidModeSetCrtcForMode(int scrnIndex, void *mode); -extern _X_EXPORT Bool VidModeAddModeline(int scrnIndex, void *mode); -extern _X_EXPORT int VidModeGetDotClock(int scrnIndex, int Clock); -extern _X_EXPORT int VidModeGetNumOfModes(int scrnIndex); -extern _X_EXPORT Bool VidModeSetGamma(int scrnIndex, float red, float green, - float blue); -extern _X_EXPORT Bool VidModeGetGamma(int scrnIndex, float *red, float *green, - float *blue); -extern _X_EXPORT void *VidModeCreateMode(void); -extern _X_EXPORT void VidModeCopyMode(void *modefrom, void *modeto); -extern _X_EXPORT int VidModeGetModeValue(void *mode, int valtyp); -extern _X_EXPORT void VidModeSetModeValue(void *mode, int valtyp, int val); -extern _X_EXPORT vidMonitorValue VidModeGetMonitorValue(void *monitor, -int valtyp, int indx); -extern _X_EXPORT Bool VidModeSetGammaRamp(int, int, CARD16 *, CARD16 *, - CARD16 *); -extern _X_EXPORT Bool VidModeGetGammaRamp(int, int, CARD16 *, CARD16 *, - CARD16 *); -extern _X_EXPORT int VidModeGetGammaRampSize(int scrnIndex); +extern Bool VidModeGetCurrentModeline(int scrnIndex, void **mode, + int *dotClock); +extern Bool VidModeGetFirstModeline(int scrnIndex, void **mode, +int *dotClock); +extern Bool VidModeGetNextModeline(int scrnIndex, void **mode, + int *dotClock); +extern Bool VidModeDeleteModeline(int scrnIndex, void *mode); +extern Bool VidModeZoomViewport(int scrnIndex, int zoom); +extern Bool VidModeGetViewPort(int scrnIndex, int *x, int *y); +extern Bool VidModeSetViewPort(int scrnIndex, int x, int y); +extern Bool VidModeSwitchMode(int scrnIndex, void *mode); +extern Bool VidModeLockZoom(int scrnIndex, Bool lock); +extern Bool VidModeGetMonitor(int scrnIndex, void **monitor); +extern int VidModeGetNumOfClocks(int scrnIndex, Bool *progClock); +extern Bool VidModeGetClocks(int scrnIndex, int *Clocks); +extern ModeStatus VidModeCheckModeForMonitor(int scrnIndex, + void *mode); +extern ModeStatus VidModeCheckModeForDriver(int scrnIndex, +void *mode); +extern void VidModeSetCrtcForMode(int scrnIndex, void *mode); +extern Bool VidModeAddModeline(int scrnIndex, void *mode); +extern int VidModeGetDotClock(int scrnIndex, int Clock); +extern int VidModeGetNumOfModes(int scrnIndex); +extern Bool
[PATCH 2/8] randr: Unexport some implementation details
Signed-off-by: Adam Jackson a...@redhat.com --- randr/randrstr.h | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/randr/randrstr.h b/randr/randrstr.h index 03974fd..58f3ff4 100644 --- a/randr/randrstr.h +++ b/randr/randrstr.h @@ -64,10 +64,10 @@ typedef XID RROutput; typedef XID RRCrtc; typedef XID RRProvider; -extern _X_EXPORT int RREventBase, RRErrorBase; +extern int RREventBase, RRErrorBase; -extern _X_EXPORT int (*ProcRandrVector[RRNumberRequests]) (ClientPtr); -extern _X_EXPORT int (*SProcRandrVector[RRNumberRequests]) (ClientPtr); +extern int (*ProcRandrVector[RRNumberRequests]) (ClientPtr); +extern int (*SProcRandrVector[RRNumberRequests]) (ClientPtr); /* * Modeline for a monitor. Name follows directly after this struct @@ -397,11 +397,11 @@ typedef struct _RRClient { /* RRTimesRec times[0]; */ } RRClientRec, *RRClientPtr; -extern _X_EXPORT RESTYPE RRClientType, RREventType; /* resource types for event masks */ -extern _X_EXPORT DevPrivateKeyRec RRClientPrivateKeyRec; +extern RESTYPE RRClientType, RREventType; /* resource types for event masks */ +extern DevPrivateKeyRec RRClientPrivateKeyRec; #define RRClientPrivateKey (RRClientPrivateKeyRec) -extern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType, RRProviderType; +extern RESTYPE RRCrtcType, RRModeType, RROutputType, RRProviderType; #define VERIFY_RR_OUTPUT(id, ptr, a)\ {\ -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 6/8] xge: Hide some implementation details
Signed-off-by: Adam Jackson a...@redhat.com --- Xext/geext.c | 10 ++ Xext/geint.h | 5 + hw/xfree86/sdksyms.sh | 1 - 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Xext/geext.c b/Xext/geext.c index aee68c4..6285f69 100644 --- a/Xext/geext.c +++ b/Xext/geext.c @@ -90,9 +90,10 @@ ProcGEQueryVersion(ClientPtr client) return Success; } -int (*ProcGEVector[GENumberRequests]) (ClientPtr) = { +static int (*ProcGEVector[GENumberRequests]) (ClientPtr) = { /* Version 1.0 */ -ProcGEQueryVersion}; +ProcGEQueryVersion, +}; // /*swapped request handlers */ @@ -109,9 +110,10 @@ SProcGEQueryVersion(ClientPtr client) return (*ProcGEVector[stuff-ReqType]) (client); } -int (*SProcGEVector[GENumberRequests]) (ClientPtr) = { +static int (*SProcGEVector[GENumberRequests]) (ClientPtr) = { /* Version 1.0 */ -SProcGEQueryVersion}; +SProcGEQueryVersion +}; // /*callbacks */ diff --git a/Xext/geint.h b/Xext/geint.h index f76d148..0ee28e4 100644 --- a/Xext/geint.h +++ b/Xext/geint.h @@ -37,7 +37,7 @@ #include extnsionst.h #include X11/extensions/geproto.h -extern _X_EXPORT DevPrivateKeyRec GEClientPrivateKeyRec; +extern DevPrivateKeyRec GEClientPrivateKeyRec; #define GEClientPrivateKey (GEClientPrivateKeyRec) @@ -48,7 +48,4 @@ typedef struct _GEClientInfo { #define GEGetClient(pClient) ((GEClientInfoPtr)(dixLookupPrivate(((pClient)-devPrivates), GEClientPrivateKey))) -extern _X_EXPORT int (*ProcGEVector[ /*GENumRequests */ ]) (ClientPtr); -extern _X_EXPORT int (*SProcGEVector[ /*GENumRequests */ ]) (ClientPtr); - #endif /* _GEINT_H_ */ diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh index 334ed24..ed55cbb 100755 --- a/hw/xfree86/sdksyms.sh +++ b/hw/xfree86/sdksyms.sh @@ -54,7 +54,6 @@ cat sdksyms.c EOF #include xvmcext.h #endif #include geext.h -#include geint.h #ifdef MITSHM #include shmint.h #endif -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 4/8] xfree86: Hide some pre-randr mode validation details
Signed-off-by: Adam Jackson a...@redhat.com --- hw/xfree86/common/xf86.h | 11 --- hw/xfree86/common/xf86Mode.c | 11 +++ hw/xfree86/doc/ddxDesign.xml | 75 3 files changed, 5 insertions(+), 92 deletions(-) diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h index 49ff35b..1cde478 100644 --- a/hw/xfree86/common/xf86.h +++ b/hw/xfree86/common/xf86.h @@ -368,22 +368,11 @@ xf86GetBppFromDepth(ScrnInfoPtr pScrn, int depth); /* xf86Mode.c */ -extern _X_EXPORT int -xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2, -int DivFactor, int MulFactor, int *divider); extern _X_EXPORT const char * xf86ModeStatusToString(ModeStatus status); extern _X_EXPORT ModeStatus -xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep, - ClockRangePtr clockRanges, LookupModeFlags strategy); -extern _X_EXPORT ModeStatus xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor); extern _X_EXPORT ModeStatus -xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, - ClockRangePtr clockRanges, - LookupModeFlags strategy, - int maxPitch, int virtualX, int virtualY); -extern _X_EXPORT ModeStatus xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags); extern _X_EXPORT int xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes, diff --git a/hw/xfree86/common/xf86Mode.c b/hw/xfree86/common/xf86Mode.c index 9a5550f..3f446ae 100644 --- a/hw/xfree86/common/xf86Mode.c +++ b/hw/xfree86/common/xf86Mode.c @@ -112,11 +112,10 @@ printModeRejectMessage(int index, DisplayModePtr p, int status) } /* - * xf86GetNearestClock -- - * Find closest clock to given frequency (in kHz). This assumes the - * number of clocks is greater than zero. + * Find closest clock to given frequency (in kHz). This assumes the + * number of clocks is greater than zero. */ -int +static int xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2, int DivFactor, int MulFactor, int *divider) { @@ -451,7 +450,7 @@ xf86HandleBuiltinMode(ScrnInfoPtr scrp, * reason. */ -ModeStatus +static ModeStatus xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep, ClockRangePtr clockRanges, LookupModeFlags strategy) { @@ -845,7 +844,7 @@ xf86CheckModeSize(ScrnInfoPtr scrp, int w, int x, int y) *maxVValuemaximum vertical timing value */ -ModeStatus +static ModeStatus xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, ClockRangePtr clockRanges, LookupModeFlags strategy, diff --git a/hw/xfree86/doc/ddxDesign.xml b/hw/xfree86/doc/ddxDesign.xml index 6a9de9e..aed77a9 100644 --- a/hw/xfree86/doc/ddxDesign.xml +++ b/hw/xfree86/doc/ddxDesign.xml @@ -6957,28 +6957,6 @@ use of some of these secondary mode helper functions. blockquotepara programlisting -int xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2, -int *divider); - /programlisting - blockquotepara - This function returns the index of the closest clock to the - frequency parameterfreq/parameter given (in kHz). It assumes that - the number of clocks is greater than zero. It requires that the - structfieldnumClocks/structfield and structfieldclock/structfield fields of the - structnameScrnInfoRec/structname are initialised. The - structfieldallowDiv2/structfield field determines if the clocks can be - halved. The parameter*divider/parameter return value indicates - whether clock division is used when determining the clock returned. - /para - - para - This function is only for non-programmable clocks. - /para - - /blockquote/para/blockquote - - blockquotepara - programlisting const char *xf86ModeStatusToString(ModeStatus status); /programlisting blockquotepara @@ -6990,59 +6968,6 @@ use of some of these secondary mode helper functions. blockquotepara programlisting -ModeStatus xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep, - ClockRangePtr clockRanges, LookupModeFlags strategy); - /programlisting - blockquotepara - This function takes a pointer to a mode with the name filled in, - and looks for a mode in the structfieldmodePool/structfield list which - matches. The parameters of the matching mode are filled in to - parameter*modep/parameter. The parameterclockRanges/parameter and - parameterstrategy/parameter parameters are as for the - functionxf86ValidateModes()/function function above. - /para - - para - This function requires the structfieldmodePool/structfield, - structfieldclock[]/structfield,
[PATCH 3/8] render: Hide/unexport some implementation details
Signed-off-by: Adam Jackson a...@redhat.com --- render/glyph.c | 10 +- render/glyphstr.h | 36 ++-- render/mipict.c | 16 render/mipict.h | 36 render/picture.c| 24 render/picture.h| 6 +++--- render/picturestr.h | 50 +- 7 files changed, 43 insertions(+), 135 deletions(-) diff --git a/render/glyph.c b/render/glyph.c index f3310db..ea865af 100644 --- a/render/glyph.c +++ b/render/glyph.c @@ -106,7 +106,7 @@ GlyphUninit(ScreenPtr pScreen) } } -GlyphHashSetPtr +static GlyphHashSetPtr FindGlyphHashSet(CARD32 filled) { int i; @@ -117,7 +117,7 @@ FindGlyphHashSet(CARD32 filled) return 0; } -GlyphRefPtr +static GlyphRefPtr FindGlyphRef(GlyphHashPtr hash, CARD32 signature, Bool match, unsigned char sha1[20]) { @@ -245,7 +245,7 @@ FreeGlyphPicture(GlyphPtr glyph) } } -void +static void FreeGlyph(GlyphPtr glyph, int format) { CheckDuplicates(globalGlyphs[format], FreeGlyph); @@ -383,7 +383,7 @@ AllocateGlyph(xGlyphInfo * gi, int fdepth) return 0; } -Bool +static Bool AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet) { hash-table = calloc(hashSet-size, sizeof(GlyphRefRec)); @@ -394,7 +394,7 @@ AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet) return TRUE; } -Bool +static Bool ResizeGlyphHash(GlyphHashPtr hash, CARD32 change, Bool global) { CARD32 tableEntries; diff --git a/render/glyphstr.h b/render/glyphstr.h index 2df055d..2f51bd2 100644 --- a/render/glyphstr.h +++ b/render/glyphstr.h @@ -90,47 +90,31 @@ typedef struct _GlyphList { PictFormatPtr format; } GlyphListRec, *GlyphListPtr; -extern _X_EXPORT void +extern void GlyphUninit(ScreenPtr pScreen); -extern _X_EXPORT GlyphHashSetPtr FindGlyphHashSet(CARD32 filled); - -extern _X_EXPORT GlyphRefPtr -FindGlyphRef(GlyphHashPtr hash, - CARD32 signature, Bool match, unsigned char sha1[20]); - -extern _X_EXPORT GlyphPtr FindGlyphByHash(unsigned char sha1[20], int format); - -extern _X_EXPORT int +extern GlyphPtr FindGlyphByHash(unsigned char sha1[20], int format); +extern int HashGlyph(xGlyphInfo * gi, CARD8 *bits, unsigned long size, unsigned char sha1[20]); -extern _X_EXPORT void - FreeGlyph(GlyphPtr glyph, int format); - -extern _X_EXPORT void +extern void AddGlyph(GlyphSetPtr glyphSet, GlyphPtr glyph, Glyph id); -extern _X_EXPORT Bool +extern Bool DeleteGlyph(GlyphSetPtr glyphSet, Glyph id); -extern _X_EXPORT GlyphPtr FindGlyph(GlyphSetPtr glyphSet, Glyph id); +extern GlyphPtr FindGlyph(GlyphSetPtr glyphSet, Glyph id); -extern _X_EXPORT GlyphPtr AllocateGlyph(xGlyphInfo * gi, int format); +extern GlyphPtr AllocateGlyph(xGlyphInfo * gi, int format); -extern _X_EXPORT Bool - AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet); - -extern _X_EXPORT Bool - ResizeGlyphHash(GlyphHashPtr hash, CARD32 change, Bool global); - -extern _X_EXPORT Bool +extern Bool ResizeGlyphSet(GlyphSetPtr glyphSet, CARD32 change); -extern _X_EXPORT GlyphSetPtr AllocateGlyphSet(int fdepth, PictFormatPtr format); +extern GlyphSetPtr AllocateGlyphSet(int fdepth, PictFormatPtr format); -extern _X_EXPORT int +extern int FreeGlyphSet(void *value, XID gid); #define GLYPH_HAS_GLYPH_PICTURE_ACCESSOR 1 /* used for api compat */ diff --git a/render/mipict.c b/render/mipict.c index 2571fda..4b85512 100644 --- a/render/mipict.c +++ b/render/mipict.c @@ -46,7 +46,7 @@ miDestroyPicture(PicturePtr pPicture) RegionDestroy(pPicture-pCompositeClip); } -void +static void miDestroyPictureClip(PicturePtr pPicture) { if (pPicture-clientClip) @@ -54,7 +54,7 @@ miDestroyPictureClip(PicturePtr pPicture) pPicture-clientClip = NULL; } -int +static int miChangePictureClip(PicturePtr pPicture, int type, void *value, int n) { ScreenPtr pScreen = pPicture-pDrawable-pScreen; @@ -88,13 +88,13 @@ miChangePictureClip(PicturePtr pPicture, int type, void *value, int n) return Success; } -void +static void miChangePicture(PicturePtr pPicture, Mask mask) { return; } -void +static void miValidatePicture(PicturePtr pPicture, Mask mask) { DrawablePtr pDrawable = pPicture-pDrawable; @@ -211,13 +211,13 @@ miValidatePicture(PicturePtr pPicture, Mask mask) } } -int +static int miChangePictureTransform(PicturePtr pPicture, PictTransform * transform) { return Success; } -int +static int miChangePictureFilter(PicturePtr pPicture, int filter, xFixed * params, int nparams) { @@ -499,7 +499,7 @@ miRenderPixelToColor(PictFormatPtr format, CARD32 pixel, xRenderColor * color) } } -void +static void miTriStrip(CARD8 op, PicturePtr pSrc, PicturePtr pDst, @@ -523,7 +523,7 @@ miTriStrip(CARD8 op, free(tris); } -void +static void
[PATCH 5/8] dga: Hide a bunch of implementation details
Signed-off-by: Adam Jackson a...@redhat.com --- hw/xfree86/common/dgaproc.h | 62 - hw/xfree86/common/xf86DGA.c | 36 +- hw/xfree86/sdksyms.sh | 6 - 3 files changed, 28 insertions(+), 76 deletions(-) diff --git a/hw/xfree86/common/dgaproc.h b/hw/xfree86/common/dgaproc.h index 87e923f..7925bd4 100644 --- a/hw/xfree86/common/dgaproc.h +++ b/hw/xfree86/common/dgaproc.h @@ -54,57 +54,15 @@ typedef struct { /* DDX interface */ -extern _X_EXPORT int - DGASetMode(int Index, int num, XDGAModePtr mode, PixmapPtr *pPix); - -extern _X_EXPORT void - DGASetInputMode(int Index, Bool keyboard, Bool mouse); - -extern _X_EXPORT void - DGASelectInput(int Index, ClientPtr client, long mask); - -extern _X_EXPORT Bool DGAAvailable(int Index); -extern _X_EXPORT Bool DGAScreenAvailable(ScreenPtr pScreen); -extern _X_EXPORT Bool DGAActive(int Index); -extern _X_EXPORT void DGAShutdown(void); -extern _X_EXPORT void DGAInstallCmap(ColormapPtr cmap); -extern _X_EXPORT int DGAGetViewportStatus(int Index); -extern _X_EXPORT int DGASync(int Index); - -extern _X_EXPORT int - DGAFillRect(int Index, int x, int y, int w, int h, unsigned long color); - -extern _X_EXPORT int - DGABlitRect(int Index, int srcx, int srcy, int w, int h, int dstx, int dsty); - -extern _X_EXPORT int - -DGABlitTransRect(int Index, - int srcx, int srcy, - int w, int h, int dstx, int dsty, unsigned long color); - -extern _X_EXPORT int - DGASetViewport(int Index, int x, int y, int mode); - -extern _X_EXPORT int DGAGetModes(int Index); -extern _X_EXPORT int DGAGetOldDGAMode(int Index); - -extern _X_EXPORT int DGAGetModeInfo(int Index, XDGAModePtr mode, int num); - -extern _X_EXPORT Bool DGAVTSwitch(void); -extern _X_EXPORT Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index, - int button, int is_down); -extern _X_EXPORT Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, - int dy); -extern _X_EXPORT Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index, - int key_code, int is_down); - -extern _X_EXPORT Bool DGAOpenFramebuffer(int Index, char **name, - unsigned char **mem, int *size, - int *offset, int *flags); -extern _X_EXPORT void DGACloseFramebuffer(int Index); -extern _X_EXPORT Bool DGAChangePixmapMode(int Index, int *x, int *y, int mode); -extern _X_EXPORT int DGACreateColormap(int Index, ClientPtr client, int id, - int mode, int alloc); +extern Bool DGAScreenAvailable(ScreenPtr pScreen); +extern Bool DGAActive(int Index); +extern void DGAShutdown(void); + +extern Bool DGAVTSwitch(void); +extern Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index, +int button, int is_down); +extern Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, int dy); +extern Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index, + int key_code, int is_down); #endif /* __DGAPROC_H */ diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c index 9533e1c..c689dcb 100644 --- a/hw/xfree86/common/xf86DGA.c +++ b/hw/xfree86/common/xf86DGA.c @@ -471,7 +471,7 @@ xf86SetDGAMode(ScrnInfoPtr pScrn, int num, DGADevicePtr devRet) /*** exported ones ***/ -void +static void DGASetInputMode(int index, Bool keyboard, Bool mouse) { ScreenPtr pScreen = screenInfo.screens[index]; @@ -488,7 +488,7 @@ DGASetInputMode(int index, Bool keyboard, Bool mouse) } } -Bool +static Bool DGAChangePixmapMode(int index, int *x, int *y, int mode) { DGAScreenPtr pScreenPriv; @@ -560,7 +560,7 @@ DGAScreenAvailable(ScreenPtr pScreen) return FALSE; } -Bool +static Bool DGAAvailable(int index) { ScreenPtr pScreen; @@ -606,7 +606,7 @@ DGAShutdown(void) /* Called by the extension to initialize a mode */ -int +static int DGASetMode(int index, int num, XDGAModePtr mode, PixmapPtr *pPix) { ScrnInfoPtr pScrn = xf86Screens[index]; @@ -626,7 +626,7 @@ DGASetMode(int index, int num, XDGAModePtr mode, PixmapPtr *pPix) /* Called from the extension to let the DDX know which events are requested */ -void +static void DGASelectInput(int index, ClientPtr client, long mask) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -636,7 +636,7 @@ DGASelectInput(int index, ClientPtr client, long mask) pScreenPriv-input = mask; } -int +static int DGAGetViewportStatus(int index) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -649,7 +649,7 @@ DGAGetViewportStatus(int index) return (*pScreenPriv-funcs-GetViewport) (pScreenPriv-pScrn); } -int +static int DGASetViewport(int index, int x, int y, int mode) {
Re: [PATCH 0/5] GLX updates
For the series, Reviewed-by: James Jones jajo...@nvidia.com Thanks, -James On 06/02/2015 10:41 AM, Adam Jackson wrote: This series stubs in the server side of support for some newer GLX extensions. They won't do much without corresponding Mesa updates, but are necessary for such updates to work. - ajax ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 1/8] dix: Unexport various implementation details
Signed-off-by: Adam Jackson a...@redhat.com --- dix/colormap.c| 337 +- dix/dispatch.c| 1 + dix/dixfonts.c| 12 +- dix/enterleave.c | 2 +- dix/enterleave.h | 2 - dix/main.c| 2 + hw/xfree86/sdksyms.sh | 2 - include/Makefile.am | 4 +- include/colormap.h| 12 -- include/dixfont.h | 35 -- include/dixstruct.h | 27 ++-- include/swaprep.h | 320 +++ include/swapreq.h | 6 +- mi/miglblt.c | 1 + miext/damage/damage.c | 1 + os/utils.c| 1 + 16 files changed, 360 insertions(+), 405 deletions(-) diff --git a/dix/colormap.c b/dix/colormap.c index a3e5a2c..89a17c4 100644 --- a/dix/colormap.c +++ b/dix/colormap.c @@ -64,6 +64,9 @@ SOFTWARE. #include privates.h #include xace.h +typedef int (*ColorCompareProcPtr) (EntryPtr /*pent */ , +xrgb * /*prgb */ ); + static Pixel FindBestPixel(EntryPtr /*pentFirst */ , int /*size */ , xrgb * /*prgb */ , @@ -748,6 +751,173 @@ UpdateColors(ColormapPtr pmap) free(defs); } +/* Tries to find a color in pmap that exactly matches the one requested in prgb + * if it can't it allocates one. + * Starts looking at pentFirst + *pPixel, so if you want a specific pixel, + * load *pPixel with that value, otherwise set it to 0 + */ +static int +FindColor(ColormapPtr pmap, EntryPtr pentFirst, int size, xrgb * prgb, + Pixel * pPixel, int channel, int client, ColorCompareProcPtr comp) +{ +EntryPtr pent; +Bool foundFree; +Pixel pixel, Free = 0; +int npix, count, *nump = NULL; +Pixel **pixp = NULL, *ppix; +xColorItem def; + +foundFree = FALSE; + +if ((pixel = *pPixel) = size) +pixel = 0; +/* see if there is a match, and also look for a free entry */ +for (pent = pentFirst + pixel, count = size; --count = 0;) { +if (pent-refcnt 0) { +if ((*comp) (pent, prgb)) { +if (client = 0) +pent-refcnt++; +*pPixel = pixel; +switch (channel) { +case REDMAP: +*pPixel = pmap-pVisual-offsetRed; +case PSEUDOMAP: +break; +case GREENMAP: +*pPixel = pmap-pVisual-offsetGreen; +break; +case BLUEMAP: +*pPixel = pmap-pVisual-offsetBlue; +break; +} +goto gotit; +} +} +else if (!foundFree pent-refcnt == 0) { +Free = pixel; +foundFree = TRUE; +/* If we're initializing the colormap, then we are looking for + * the first free cell we can find, not to minimize the number + * of entries we use. So don't look any further. */ +if (pmap-flags BeingCreated) +break; +} +pixel++; +if (pixel = size) { +pent = pentFirst; +pixel = 0; +} +else +pent++; +} + +/* If we got here, we didn't find a match. If we also didn't find + * a free entry, we're out of luck. Otherwise, we'll usurp a free + * entry and fill it in */ +if (!foundFree) +return BadAlloc; +pent = pentFirst + Free; +pent-fShared = FALSE; +pent-refcnt = (client = 0) ? 1 : AllocTemporary; + +switch (channel) { +case PSEUDOMAP: +pent-co.local.red = prgb-red; +pent-co.local.green = prgb-green; +pent-co.local.blue = prgb-blue; +def.red = prgb-red; +def.green = prgb-green; +def.blue = prgb-blue; +def.flags = (DoRed | DoGreen | DoBlue); +if (client = 0) +pmap-freeRed--; +def.pixel = Free; +break; + +case REDMAP: +pent-co.local.red = prgb-red; +def.red = prgb-red; +def.green = pmap-green[0].co.local.green; +def.blue = pmap-blue[0].co.local.blue; +def.flags = DoRed; +if (client = 0) +pmap-freeRed--; +def.pixel = Free pmap-pVisual-offsetRed; +break; + +case GREENMAP: +pent-co.local.green = prgb-green; +def.red = pmap-red[0].co.local.red; +def.green = prgb-green; +def.blue = pmap-blue[0].co.local.blue; +def.flags = DoGreen; +if (client = 0) +pmap-freeGreen--; +def.pixel = Free pmap-pVisual-offsetGreen; +break; + +case BLUEMAP: +pent-co.local.blue = prgb-blue; +def.red = pmap-red[0].co.local.red; +def.green = pmap-green[0].co.local.green; +def.blue = prgb-blue; +def.flags = DoBlue; +if (client = 0) +pmap-freeBlue--; +def.pixel = Free pmap-pVisual-offsetBlue; +
[PATCH 8/8] xfixes: Unexport xfixes.h
There's nothing a driver could want to use this for. Signed-off-by: Adam Jackson a...@redhat.com --- hw/vfb/Makefile.am | 1 - xfixes/Makefile.am | 4 xfixes/xfixes.h| 6 +++--- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/hw/vfb/Makefile.am b/hw/vfb/Makefile.am index f0f9fee..c9ac35e 100644 --- a/hw/vfb/Makefile.am +++ b/hw/vfb/Makefile.am @@ -21,7 +21,6 @@ XVFB_LIBS = \ Xvfb_LDADD = $(XVFB_LIBS) $(XVFB_SYS_LIBS) $(XSERVER_SYS_LIBS) Xvfb_DEPENDENCIES = $(XVFB_LIBS) -Xvfb_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG) relink: $(AM_V_at)rm -f Xvfb$(EXEEXT) $(MAKE) Xvfb$(EXEEXT) diff --git a/xfixes/Makefile.am b/xfixes/Makefile.am index a8425e8..2a95c06 100644 --- a/xfixes/Makefile.am +++ b/xfixes/Makefile.am @@ -2,10 +2,6 @@ noinst_LTLIBRARIES = libxfixes.la AM_CFLAGS = $(DIX_CFLAGS) -if XORG -sdk_HEADERS = xfixes.h -endif - libxfixes_la_SOURCES = \ cursor.c\ region.c\ diff --git a/xfixes/xfixes.h b/xfixes/xfixes.h index fdcf44f..23f31cd 100644 --- a/xfixes/xfixes.h +++ b/xfixes/xfixes.h @@ -29,8 +29,8 @@ #include resource.h -extern _X_EXPORT RESTYPE RegionResType; -extern _X_EXPORT int XFixesErrorBase; +extern RESTYPE RegionResType; +extern int XFixesErrorBase; #define VERIFY_REGION(pRegion, rid, client, mode) \ do { \ @@ -48,7 +48,7 @@ extern _X_EXPORT int XFixesErrorBase; if (rid) VERIFY_REGION(pRegion, rid, client, mode); \ } -extern _X_EXPORT RegionPtr +extern RegionPtr XFixesRegionCopy(RegionPtr pRegion); #include xibarriers.h -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 2/2] atom: make FreeAtom static
Signed-off-by: Adam Jackson a...@redhat.com --- dix/atom.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dix/atom.c b/dix/atom.c index a1e555e..da0adfe 100644 --- a/dix/atom.c +++ b/dix/atom.c @@ -70,8 +70,6 @@ static NodePtr atomRoot = NULL; static unsigned long tableLength; static NodePtr *nodeTable; -void FreeAtom(NodePtr patom); - Atom MakeAtom(const char *string, unsigned len, Bool makeit) { @@ -166,7 +164,7 @@ AtomError(void) FatalError(initializing atoms); } -void +static void FreeAtom(NodePtr patom) { if (patom-left) -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH 1/2] atom: Bump initial table size
On Tue, Jun 02, 2015 at 02:08:38PM -0400, Adam Jackson wrote: We're always creating ~230 atoms at startup, might as well tune it so we don't hit the realloc path before Dispatch. Any clue as to how you found out this figure? Maybe add a DebugF for when we realloc the table, and/or print out the number of Atoms created during initialisation. -Chris -- Chris Wilson, Intel Open Source Technology Centre ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH 1/8] dix: Unexport various implementation details
On Tue, Jun 02, 2015 at 02:14:59PM -0400, Adam Jackson wrote: Signed-off-by: Adam Jackson a...@redhat.com For this series, Acked-by: Chris Wilson ch...@chris-wilson.co.uk -Chris -- Chris Wilson, Intel Open Source Technology Centre ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH] Xi: call UpdateDeviceState() even when the client is missing
The client window can be closed in the middle of a touch sequence, e.g. Qt 4 closes popup windows on MousePress and Qt 5.5 will do it on TouchBegin. In this case the state of mouse buttons will not be updated on TouchEnd because ProcessTouchEvent() calls UpdateDeviceState() only when the event has been sent to the client. It results in a stuck left mouse button. This patch adds a call to UpdateDeviceState() in case the client can't be found. Signed-off-by: Alexander Volkov a.vol...@rusbitech.ru --- Xi/exevents.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Xi/exevents.c b/Xi/exevents.c index 1c586d0..32e4a2c 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -1590,6 +1590,8 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev) if (!ti) { DebugF([Xi] %s: Failed to get event %d for touchpoint %d\n, dev-name, type, touchid); +if (emulate_pointer) +UpdateDeviceState(dev, ev-device_event); return; } -- 2.4.0 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 1/4] present: static cleanup
Signed-off-by: Adam Jackson a...@redhat.com --- present/present_event.c | 2 +- present/present_priv.h| 2 -- present/present_request.c | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/present/present_event.c b/present/present_event.c index d3a59ea..c586c9a 100644 --- a/present/present_event.c +++ b/present/present_event.c @@ -26,7 +26,7 @@ #include present_priv.h -RESTYPE present_event_type; +static RESTYPE present_event_type; static int present_free_event(void *data, XID id) diff --git a/present/present_priv.h b/present/present_priv.h index f5c1652..996292e 100644 --- a/present/present_priv.h +++ b/present/present_priv.h @@ -147,8 +147,6 @@ present_window_priv(WindowPtr window) present_window_priv_ptr present_get_window_priv(WindowPtr window, Bool create); -extern RESTYPE present_event_type; - /* * present.c */ diff --git a/present/present_request.c b/present/present_request.c index 7c53e72..35320b6 100644 --- a/present/present_request.c +++ b/present/present_request.c @@ -234,7 +234,7 @@ proc_present_query_capabilities (ClientPtr client) return Success; } -int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = { +static int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = { proc_present_query_version,/* 0 */ proc_present_pixmap, /* 1 */ proc_present_notify_msc, /* 2 */ @@ -319,7 +319,7 @@ sproc_present_query_capabilities (ClientPtr client) return (*proc_present_vector[stuff-presentReqType]) (client); } -int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = { +static int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = { sproc_present_query_version, /* 0 */ sproc_present_pixmap, /* 1 */ sproc_present_notify_msc, /* 2 */ -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 3/4] dri3: Remove unbuilt dri3_event.c
The config notifies live in present, not dri3. Signed-off-by: Adam Jackson a...@redhat.com --- dri3/dri3_event.c | 163 -- 1 file changed, 163 deletions(-) delete mode 100644 dri3/dri3_event.c diff --git a/dri3/dri3_event.c b/dri3/dri3_event.c deleted file mode 100644 index cb509a2..000 --- a/dri3/dri3_event.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright © 2013 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided as - * is without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#ifdef HAVE_XORG_CONFIG_H -#include xorg-config.h -#endif - -#include dri3_priv.h - -RESTYPE dri3_event_type; - -static int -dri3_free_event(void *data, XID id) -{ -dri3_event_ptr dri3_event = (dri3_event_ptr) data; -dri3_window_priv_ptr window_priv = dri3_window_priv(dri3_event-window); -dri3_event_ptr *previous, current; - -for (previous = window_priv-events; (current = *previous); previous = current-next) { -if (current == dri3_event) { -*previous = dri3_event-next; -break; -} -} -free((void *) dri3_event); -return 1; - -} - -void -dri3_free_events(WindowPtr window) -{ -dri3_window_priv_ptr window_priv = dri3_window_priv(window); -dri3_event_ptr event; - -if (!window_priv) -return; - -while ((event = window_priv-events)) -FreeResource(event-id, RT_NONE); -} - -static void -dri3_event_swap(xGenericEvent *from, xGenericEvent *to) -{ -*to = *from; -swaps(to-sequenceNumber); -swapl(to-length); -swaps(to-evtype); -switch (from-evtype) { -case DRI3_ConfigureNotify: { -xDRI3ConfigureNotify *c = (xDRI3ConfigureNotify *) to; - -swapl(c-eid); -swapl(c-window); -swaps(c-x); -swaps(c-y); -swaps(c-width); -swaps(c-height); -swaps(c-off_x); -swaps(c-off_y); -swaps(c-pixmap_width); -swaps(c-pixmap_height); -swapl(c-pixmap_flags); -break; -} -} -} - -void -dri3_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling) -{ -dri3_window_priv_ptr window_priv = dri3_window_priv(window); - -if (window_priv) { -xDRI3ConfigureNotify cn = { -.type = GenericEvent, -.extension = dri3_request, -.length = (sizeof(xDRI3ConfigureNotify) - 32) 2, -.evtype = DRI3_ConfigureNotify, -.eid = 0, -.window = window-drawable.id, -.x = x, -.y = y, -.width = w, -.height = h, -.off_x = 0, -.off_y = 0, -.pixmap_width = w, -.pixmap_height = h, -.pixmap_flags = 0 -}; -dri3_event_ptr event; -dri3_screen_priv_ptr screen_priv = dri3_screen_priv(window-drawable.pScreen); - -if (screen_priv-info screen_priv-info-driver_config) -screen_priv-info-driver_config(window, cn); - -for (event = window_priv-events; event; event = event-next) { -if (event-mask (1 DRI3ConfigureNotify)) { -cn.eid = event-id; -WriteEventsToClient(event-client, 1, (xEvent *) cn); -} -} -} -} - -int -dri3_select_input(ClientPtr client, XID eid, WindowPtr window, CARD32 mask) -{ -dri3_window_priv_ptr window_priv = dri3_window_priv(window); -dri3_event_ptr event; - -if (!window_priv) -return BadAlloc; - -event = calloc (1, sizeof (dri3_event_rec)); -if (!event) -return BadAlloc; - -event-client = client; -event-window = window; -event-id = eid; -event-mask = mask; - -event-next = window_priv-events; -window_priv-events = event; - -if (!AddResource(event-id, dri3_event_type, (void *) event)) -return BadAlloc; - -return Success; -} - -Bool
[PATCH 2/4] parser: static cleanup
Signed-off-by: Adam Jackson a...@redhat.com --- hw/xfree86/parser/InputClass.c | 152 hw/xfree86/parser/OutputClass.c | 52 +++--- hw/xfree86/parser/Screen.c | 80 ++--- hw/xfree86/parser/Vendor.c | 32 - hw/xfree86/parser/configProcs.h | 6 -- 5 files changed, 158 insertions(+), 164 deletions(-) diff --git a/hw/xfree86/parser/InputClass.c b/hw/xfree86/parser/InputClass.c index c2fbd22..29bd9fa 100644 --- a/hw/xfree86/parser/InputClass.c +++ b/hw/xfree86/parser/InputClass.c @@ -58,6 +58,82 @@ xf86ConfigSymTabRec InputClassTab[] = { {-1, }, }; +static void +xf86freeInputClassList(XF86ConfInputClassPtr ptr) +{ +XF86ConfInputClassPtr prev; + +while (ptr) { +xf86MatchGroup *group, *next; +char **list; + +TestFree(ptr-identifier); +TestFree(ptr-driver); + +xorg_list_for_each_entry_safe(group, next, ptr-match_product, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} +xorg_list_for_each_entry_safe(group, next, ptr-match_vendor, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} +xorg_list_for_each_entry_safe(group, next, ptr-match_device, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} +xorg_list_for_each_entry_safe(group, next, ptr-match_os, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} +xorg_list_for_each_entry_safe(group, next, ptr-match_pnpid, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} +xorg_list_for_each_entry_safe(group, next, ptr-match_usbid, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} +xorg_list_for_each_entry_safe(group, next, ptr-match_driver, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} +xorg_list_for_each_entry_safe(group, next, ptr-match_tag, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} +xorg_list_for_each_entry_safe(group, next, ptr-match_layout, entry) { +xorg_list_del(group-entry); +for (list = group-values; *list; list++) +free(*list); +free(group); +} + +TestFree(ptr-comment); +xf86optionListFree(ptr-option_lst); + +prev = ptr; +ptr = ptr-list.next; +free(prev); +} +} + #define CLEANUP xf86freeInputClassList #define TOKEN_SEP | @@ -354,79 +430,3 @@ xf86printInputClassSection(FILE * cf, XF86ConfInputClassPtr ptr) ptr = ptr-list.next; } } - -void -xf86freeInputClassList(XF86ConfInputClassPtr ptr) -{ -XF86ConfInputClassPtr prev; - -while (ptr) { -xf86MatchGroup *group, *next; -char **list; - -TestFree(ptr-identifier); -TestFree(ptr-driver); - -xorg_list_for_each_entry_safe(group, next, ptr-match_product, entry) { -xorg_list_del(group-entry); -for (list = group-values; *list; list++) -free(*list); -free(group); -} -xorg_list_for_each_entry_safe(group, next, ptr-match_vendor, entry) { -xorg_list_del(group-entry); -for (list = group-values; *list; list++) -free(*list); -free(group); -} -xorg_list_for_each_entry_safe(group, next, ptr-match_device, entry) { -xorg_list_del(group-entry); -for (list = group-values; *list; list++) -free(*list); -free(group); -} -xorg_list_for_each_entry_safe(group, next, ptr-match_os, entry) { -xorg_list_del(group-entry); -for (list = group-values; *list; list++) -free(*list); -free(group); -} -xorg_list_for_each_entry_safe(group, next, ptr-match_pnpid, entry) { -xorg_list_del(group-entry); -for (list = group-values; *list; list++) -free(*list); -free(group); -} -xorg_list_for_each_entry_safe(group, next, ptr-match_usbid, entry) { -xorg_list_del(group-entry); -
[PATCH 4/4] dri3: static cleanup
Also remove unused window private key. Signed-off-by: Adam Jackson a...@redhat.com --- dri3/dri3.c | 3 +-- dri3/dri3_priv.h | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/dri3/dri3.c b/dri3/dri3.c index 385862a..d042b8b 100644 --- a/dri3/dri3.c +++ b/dri3/dri3.c @@ -26,9 +26,8 @@ #include dri3_priv.h -int dri3_request; +static int dri3_request; DevPrivateKeyRec dri3_screen_private_key; -DevPrivateKeyRec dri3_window_private_key; static int dri3_screen_generation; diff --git a/dri3/dri3_priv.h b/dri3/dri3_priv.h index e2fed83..e61ef22 100644 --- a/dri3/dri3_priv.h +++ b/dri3/dri3_priv.h @@ -32,8 +32,6 @@ #include randrstr.h #include dri3.h -extern int dri3_request; - extern DevPrivateKeyRec dri3_screen_private_key; typedef struct dri3_screen_priv { -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [git pull] glamor fixes
Dave Airlie airl...@gmail.com writes: Dave Airlie (1): glamor: don't do render ops with matching source/dest (v3) Merged. cbb7eb7..fa12f2c master - master -- -keith signature.asc Description: PGP signature ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH 1/4] present: static cleanup
On Tue, Jun 2, 2015 at 11:37 AM, Adam Jackson a...@redhat.com wrote: Signed-off-by: Adam Jackson a...@redhat.com For the series: Reviewed-by: Alex Deucher alexander.deuc...@amd.com --- present/present_event.c | 2 +- present/present_priv.h| 2 -- present/present_request.c | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/present/present_event.c b/present/present_event.c index d3a59ea..c586c9a 100644 --- a/present/present_event.c +++ b/present/present_event.c @@ -26,7 +26,7 @@ #include present_priv.h -RESTYPE present_event_type; +static RESTYPE present_event_type; static int present_free_event(void *data, XID id) diff --git a/present/present_priv.h b/present/present_priv.h index f5c1652..996292e 100644 --- a/present/present_priv.h +++ b/present/present_priv.h @@ -147,8 +147,6 @@ present_window_priv(WindowPtr window) present_window_priv_ptr present_get_window_priv(WindowPtr window, Bool create); -extern RESTYPE present_event_type; - /* * present.c */ diff --git a/present/present_request.c b/present/present_request.c index 7c53e72..35320b6 100644 --- a/present/present_request.c +++ b/present/present_request.c @@ -234,7 +234,7 @@ proc_present_query_capabilities (ClientPtr client) return Success; } -int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = { +static int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = { proc_present_query_version,/* 0 */ proc_present_pixmap, /* 1 */ proc_present_notify_msc, /* 2 */ @@ -319,7 +319,7 @@ sproc_present_query_capabilities (ClientPtr client) return (*proc_present_vector[stuff-presentReqType]) (client); } -int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = { +static int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = { sproc_present_query_version, /* 0 */ sproc_present_pixmap, /* 1 */ sproc_present_notify_msc, /* 2 */ -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 5/5] glx: Implement GLX_ARB_robustness_isolation
This is speculative, pending Mesa growing something like: http://patchwork.freedesktop.org/patch/49733/ Signed-off-by: Adam Jackson a...@redhat.com --- glx/createcontext.c| 13 ++--- glx/extension_string.c | 1 + glx/extension_string.h | 1 + glx/glxdri2.c | 11 +++ glx/glxdriswrast.c | 11 +++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/glx/createcontext.c b/glx/createcontext.c index d06bc1f..10eaaef 100644 --- a/glx/createcontext.c +++ b/glx/createcontext.c @@ -29,9 +29,16 @@ #include glxext.h #include indirect_dispatch.h -#define ALL_VALID_FLAGS \ -(GLX_CONTEXT_DEBUG_BIT_ARB | GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB \ - | GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB) +#ifndef GLX_CONTEXT_RESET_ISOLATION_BIT_ARB +#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x8 +#endif + +#define ALL_VALID_FLAGS (\ +GLX_CONTEXT_DEBUG_BIT_ARB | \ +GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB | \ +GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB | \ +GLX_CONTEXT_RESET_ISOLATION_BIT_ARB | \ +0) static Bool validate_GL_version(int major_version, int minor_version) diff --git a/glx/extension_string.c b/glx/extension_string.c index b0f53cf..bbab850 100644 --- a/glx/extension_string.c +++ b/glx/extension_string.c @@ -79,6 +79,7 @@ static const struct extension_info known_glx_extensions[] = { { GLX(ARB_fbconfig_float), VER(0,0), N, }, { GLX(ARB_framebuffer_sRGB),VER(0,0), N, }, { GLX(ARB_multisample), VER(1,4), Y, }, +{ GLX(ARB_robustness_isolation),VER(0,0), N, }, { GLX(EXT_create_context_es2_profile), VER(0,0), N, }, { GLX(EXT_framebuffer_sRGB),VER(0,0), N, }, diff --git a/glx/extension_string.h b/glx/extension_string.h index ce10918..0c7bbdf 100644 --- a/glx/extension_string.h +++ b/glx/extension_string.h @@ -43,6 +43,7 @@ enum { ARB_fbconfig_float_bit, ARB_framebuffer_sRGB_bit, ARB_multisample_bit, +ARB_robustness_isolation_bit, EXT_create_context_es2_profile_bit, EXT_import_context_bit, EXT_stereo_tree_bit, diff --git a/glx/glxdri2.c b/glx/glxdri2.c index d5f47ab..ebcf218 100644 --- a/glx/glxdri2.c +++ b/glx/glxdri2.c @@ -848,6 +848,7 @@ initializeExtensions(__GLXDRIscreen * screen) { ScreenPtr pScreen = screen-base.pScreen; const __DRIextension **extensions; +uint32_t context_flags = 0; int i; extensions = screen-core-getExtensions(screen-driScreen); @@ -868,6 +869,16 @@ initializeExtensions(__GLXDRIscreen * screen) AIGLX: enabled GLX_EXT_create_context_es2_profile\n); } +#if __DRI_DRI2_VERSION 5 +if (screen-dri2-base.version = 5) { +context_flags = screen-dri2-contextFlags(screen-driScreen); +} +#endif + +if (context_flags __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS) +__glXEnableExtension(screen-glx_enable_bits, + GLX_ARB_robustness_isolation); + if (DRI2HasSwapControl(pScreen)) { __glXEnableExtension(screen-glx_enable_bits, GLX_INTEL_swap_event); __glXEnableExtension(screen-glx_enable_bits, GLX_SGI_swap_control); diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c index 9add2a1..a3e7a06 100644 --- a/glx/glxdriswrast.c +++ b/glx/glxdriswrast.c @@ -394,6 +394,7 @@ static void initializeExtensions(__GLXDRIscreen * screen) { const __DRIextension **extensions; +uint32_t context_flags = 0; int i; if (screen-swrast-base.version = 3) { @@ -405,6 +406,16 @@ initializeExtensions(__GLXDRIscreen * screen) GLX_EXT_create_context_es2_profile); } +#if __DRI_SWRAST_VERSION 5 +if (screen-swrast-base.version = 5) { +context_flags = screen-swrast-contextFlags(screen-driScreen); +} +#endif + +if (context_flags __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS) +__glXEnableExtension(screen-glx_enable_bits, + GLX_ARB_robustness_isolation); + /* these are harmless to enable unconditionally */ __glXEnableExtension(screen-glx_enable_bits, GLX_EXT_framebuffer_sRGB); __glXEnableExtension(screen-glx_enable_bits, GLX_ARB_fbconfig_float); -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 0/5] GLX updates
This series stubs in the server side of support for some newer GLX extensions. They won't do much without corresponding Mesa updates, but are necessary for such updates to work. - ajax ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 1/5] glx/swrast: Do more GLX extension setup
This gets you nice things like core contexts when using Xvfb. Also, no, MESA_copy_sub_buffer is not enabled automatically. Reviewed-by: Jon Turney jon.tur...@dronecode.org.uk Signed-off-by: Adam Jackson a...@redhat.com --- glx/glxdriswrast.c | 37 ++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c index 5d9aa04..e25ca47 100644 --- a/glx/glxdriswrast.c +++ b/glx/glxdriswrast.c @@ -71,6 +71,8 @@ struct __GLXDRIscreen { const __DRIcopySubBufferExtension *copySubBuffer; const __DRItexBufferExtension *texBuffer; const __DRIconfig **driConfigs; + +unsigned char glx_enable_bits[__GLX_EXT_BYTES]; }; struct __GLXDRIcontext { @@ -394,21 +396,34 @@ initializeExtensions(__GLXDRIscreen * screen) const __DRIextension **extensions; int i; +if (screen-swrast-base.version = 3) { +__glXEnableExtension(screen-glx_enable_bits, + GLX_ARB_create_context); +__glXEnableExtension(screen-glx_enable_bits, + GLX_ARB_create_context_profile); +__glXEnableExtension(screen-glx_enable_bits, + GLX_EXT_create_context_es2_profile); +} + +/* these are harmless to enable unconditionally */ +__glXEnableExtension(screen-glx_enable_bits, GLX_EXT_framebuffer_sRGB); +__glXEnableExtension(screen-glx_enable_bits, GLX_ARB_fbconfig_float); +__glXEnableExtension(screen-glx_enable_bits, GLX_SGI_make_current_read); + extensions = screen-core-getExtensions(screen-driScreen); for (i = 0; extensions[i]; i++) { if (strcmp(extensions[i]-name, __DRI_COPY_SUB_BUFFER) == 0) { screen-copySubBuffer = (const __DRIcopySubBufferExtension *) extensions[i]; -/* GLX_MESA_copy_sub_buffer is always enabled. */ +__glXEnableExtension(screen-glx_enable_bits, + GLX_MESA_copy_sub_buffer); } if (strcmp(extensions[i]-name, __DRI_TEX_BUFFER) == 0) { screen-texBuffer = (const __DRItexBufferExtension *) extensions[i]; /* GLX_EXT_texture_from_pixmap is always enabled. */ } - -/* Ignore unknown extensions */ } } @@ -420,6 +435,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) { const char *driverName = swrast; __GLXDRIscreen *screen; +size_t buffer_size; screen = calloc(1, sizeof *screen); if (screen == NULL) @@ -431,6 +447,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen) screen-base.swapInterval = NULL; screen-base.pScreen = pScreen; +__glXInitExtensionEnableBits(screen-glx_enable_bits); + screen-driver = glxProbeDriver(driverName, (void **) screen-core, __DRI_CORE, 1, @@ -459,6 +477,19 @@ __glXDRIscreenProbe(ScreenPtr pScreen) __glXScreenInit(screen-base, pScreen); +/* The first call simply determines the length of the extension string. + * This allows us to allocate some memory to hold the extension string, + * but it requires that we call __glXGetExtensionString a second time. + */ +buffer_size = __glXGetExtensionString(screen-glx_enable_bits, NULL); +if (buffer_size 0) { +free(screen-base.GLXextensions); + +screen-base.GLXextensions = xnfalloc(buffer_size); +(void) __glXGetExtensionString(screen-glx_enable_bits, + screen-base.GLXextensions); +} + screen-base.GLXmajor = 1; screen-base.GLXminor = 4; -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 2/5] glx: Implement GLX_ARB_context_flush_control
This extension allows clients to opt out of the implicit glFlush on context release, which is quite nice for performance for clients using multiple contexts. The server doesn't really need to be aware of the client's decision, at least for direct contexts, but it does need to not reject the context attribute out of hand. This patch won't do anything unless built against a Mesa that defines the __DRI2_FLUSH_CONTROL extension (and a new enough glxext.h, but that's been there since 10.3 at least). Signed-off-by: Adam Jackson a...@redhat.com --- glx/createcontext.c| 15 +++ glx/extension_string.c | 1 + glx/extension_string.h | 3 ++- glx/glxcmds.c | 20 +++- glx/glxcontext.h | 5 + glx/glxdri2.c | 7 +++ glx/glxdriswrast.c | 8 7 files changed, 57 insertions(+), 2 deletions(-) diff --git a/glx/createcontext.c b/glx/createcontext.c index cbeddec..d06bc1f 100644 --- a/glx/createcontext.c +++ b/glx/createcontext.c @@ -87,6 +87,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc) int minor_version = 0; uint32_t flags = 0; uint32_t render_type = GLX_RGBA_TYPE; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB +uint32_t flush = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB; +#endif __GLXcontext *ctx = NULL; __GLXcontext *shareCtx = NULL; __GLXscreen *glxScreen; @@ -194,6 +197,15 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc) break; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB +case GLX_CONTEXT_RELEASE_BEHAVIOR_ARB: +flush = attribs[2 * i + 1]; +if (flush != GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB + flush != GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB) +return BadValue; +break; +#endif + default: return BadValue; } @@ -333,6 +345,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc) ctx-drawPriv = NULL; ctx-readPriv = NULL; ctx-resetNotificationStrategy = reset; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB +ctx-releaseBehavior = flush; +#endif /* Add the new context to the various global tables of GLX contexts. */ diff --git a/glx/extension_string.c b/glx/extension_string.c index 4bef96f..e881d21 100644 --- a/glx/extension_string.c +++ b/glx/extension_string.c @@ -72,6 +72,7 @@ struct extension_info { static const struct extension_info known_glx_extensions[] = { /* GLX_ARB_get_proc_address is implemented on the client. */ /* *INDENT-OFF* */ +{ GLX(ARB_context_flush_control), VER(0,0), N, }, { GLX(ARB_create_context), VER(0,0), N, }, { GLX(ARB_create_context_profile), VER(0,0), N, }, { GLX(ARB_create_context_robustness), VER(0,0), N, }, diff --git a/glx/extension_string.h b/glx/extension_string.h index e7d3932..bac7b06 100644 --- a/glx/extension_string.h +++ b/glx/extension_string.h @@ -36,7 +36,8 @@ enum { /* GLX_ARB_get_proc_address is implemented on the client. */ -ARB_create_context_bit = 0, +ARB_context_flush_control_bit = 0, +ARB_create_context_bit, ARB_create_context_profile_bit, ARB_create_context_robustness_bit, ARB_fbconfig_float_bit, diff --git a/glx/glxcmds.c b/glx/glxcmds.c index f5f2bab..cbd4ede 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -334,6 +334,19 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId, */ glxc-resetNotificationStrategy = GLX_NO_RESET_NOTIFICATION_ARB; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB +/* The GLX_ARB_context_flush_control spec says: + * + * The default value [for GLX_CONTEXT_RELEASE_BEHAVIOR] is + * CONTEXT_RELEASE_BEHAVIOR_FLUSH, and may in some cases be changed + * using platform-specific context creation extensions. + * + * Without using glXCreateContextAttribsARB, there is no way to specify a + * non-default release behavior. + */ +glxc-releaseBehavior = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB; +#endif + /* Add the new context to the various global tables of GLX contexts. */ if (!__glXAddContext(glxc)) { @@ -626,7 +639,12 @@ DoMakeCurrent(__GLXclientState * cl, /* ** Flush the previous context if needed. */ -if (prevglxc-hasUnflushedCommands) { +Bool need_flush = GL_TRUE; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB +if (prevglxc-releaseBehavior == GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB) +need_flush = GL_FALSE; +#endif +if (prevglxc-hasUnflushedCommands need_flush) { if (__glXForceCurrent(cl, tag, (int *) error)) { glFlush(); prevglxc-hasUnflushedCommands = GL_FALSE; diff --git a/glx/glxcontext.h b/glx/glxcontext.h index 677898a..0733281 100644 --- a/glx/glxcontext.h +++ b/glx/glxcontext.h @@ -108,6 +108,11 @@ struct __GLXcontext { */ GLenum resetNotificationStrategy; +
[PATCH 3/5] glx: Implement GLX_EXT_swap_control
This is incomplete, as it does not update the generated code to include the dispatch code. Signed-off-by: Adam Jackson a...@redhat.com --- glx/extension_string.c | 1 + glx/extension_string.h | 1 + glx/glxcmds.c | 21 +-- glx/glxdrawable.h | 4 +-- glx/glxdri2.c | 5 +--- glx/glxdricommon.c | 2 ++ glx/glxscreens.h| 4 +++ glx/glxserver.h | 4 +++ glx/indirect_dispatch.h | 7 + glx/swap_interval.c | 69 - 10 files changed, 91 insertions(+), 27 deletions(-) diff --git a/glx/extension_string.c b/glx/extension_string.c index e881d21..d2c942b 100644 --- a/glx/extension_string.c +++ b/glx/extension_string.c @@ -83,6 +83,7 @@ static const struct extension_info known_glx_extensions[] = { { GLX(EXT_create_context_es2_profile), VER(0,0), N, }, { GLX(EXT_framebuffer_sRGB),VER(0,0), N, }, { GLX(EXT_import_context), VER(0,0), Y, }, +{ GLX(EXT_swap_control),VER(0,0), N, }, { GLX(EXT_texture_from_pixmap), VER(0,0), Y, }, { GLX(EXT_visual_info), VER(0,0), Y, }, { GLX(EXT_visual_rating), VER(0,0), Y, }, diff --git a/glx/extension_string.h b/glx/extension_string.h index bac7b06..99eb2f7 100644 --- a/glx/extension_string.h +++ b/glx/extension_string.h @@ -45,6 +45,7 @@ enum { ARB_multisample_bit, EXT_create_context_es2_profile_bit, EXT_import_context_bit, +EXT_swap_control_bit, EXT_texture_from_pixmap_bit, EXT_visual_info_bit, EXT_visual_rating_bit, diff --git a/glx/glxcmds.c b/glx/glxcmds.c index cbd4ede..8139149 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -486,7 +486,7 @@ StartUsingContext(__GLXclientState * cl, __GLXcontext * glxc) * resource ID, look up the GLX drawable if available, otherwise, make * sure it's an X window and create a GLX drawable one the fly. */ -static __GLXdrawable * +__GLXdrawable * __glXGetDrawable(__GLXcontext * glxc, GLXDrawable drawId, ClientPtr client, int *error) { @@ -1214,6 +1214,7 @@ __glXDrawableInit(__GLXdrawable * drawable, drawable-drawId = drawId; drawable-config = config; drawable-eventMask = 0; +drawable-swap_interval = 0; return GL_TRUE; } @@ -1926,6 +1927,14 @@ __glXDisp_CopySubBufferMESA(__GLXclientState * cl, GLbyte * pc) return Success; } +/* hack for old glxext.h */ +#ifndef GLX_SWAP_INTERVAL_EXT +#define GLX_SWAP_INTERVAL_EXT 0x20F1 +#endif +#ifndef GLX_MAX_SWAP_INTERVAL_EXT +#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 +#endif + /* ** Get drawable attributes */ @@ -1936,7 +1945,7 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId) xGLXGetDrawableAttributesReply reply; __GLXdrawable *pGlxDraw = NULL; DrawablePtr pDraw; -CARD32 attributes[14]; +CARD32 attributes[16]; int num = 0, error; if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY, @@ -1976,6 +1985,14 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId) attributes[2*num+1] = GL_TRUE; num++; } +if (pGlxDraw-type == GLX_DRAWABLE_WINDOW) { +attributes[2*num] = GLX_SWAP_INTERVAL_EXT; +attributes[2*num+1] = pGlxDraw-swap_interval; +num++; +attributes[2*num] = GLX_MAX_SWAP_INTERVAL_EXT; +attributes[2*num+1] = pGlxDraw-config-maxSwapInterval; +num++; +} } reply = (xGLXGetDrawableAttributesReply) { diff --git a/glx/glxdrawable.h b/glx/glxdrawable.h index 0076589..3947658 100644 --- a/glx/glxdrawable.h +++ b/glx/glxdrawable.h @@ -68,10 +68,8 @@ struct __GLXdrawable { GLenum target; GLenum format; -/* - ** Event mask - */ unsigned long eventMask; +uint32_t swap_interval; }; #endif /* !__GLX_drawable_h__ */ diff --git a/glx/glxdri2.c b/glx/glxdri2.c index 6fb3d92..d5f47ab 100644 --- a/glx/glxdri2.c +++ b/glx/glxdri2.c @@ -226,16 +226,13 @@ __glXDRIdrawableSwapInterval(__GLXdrawable * drawable, int interval) { __GLXcontext *cx = lastGLContext; -if (interval = 0) /* || interval BIGNUM? */ -return GLX_BAD_VALUE; - DRI2SwapInterval(drawable-pDraw, interval); if (cx != lastGLContext) { lastGLContext = cx; cx-makeCurrent(cx); } -return 0; +return Success; } static void diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c index 62cce13..a14fdef 100644 --- a/glx/glxdricommon.c +++ b/glx/glxdricommon.c @@ -103,6 +103,8 @@ __ATTRIB(__DRI_ATTRIB_BUFFER_SIZE, rgbBits), __ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH, optimalPbufferWidth), __ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT, optimalPbufferHeight), __ATTRIB(__DRI_ATTRIB_SWAP_METHOD, swapMethod), +__ATTRIB(__DRI_ATTRIB_MAX_SWAP_INTERVAL, maxSwapInterval), +
[PATCH 4/5] glx: Implement GLX_EXT_stereo_tree
This is correct as it is, but only because we know no DRI drivers implement stereo. Signed-off-by: Adam Jackson a...@redhat.com --- glx/extension_string.c | 1 + glx/extension_string.h | 1 + glx/glxcmds.c | 8 +++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/glx/extension_string.c b/glx/extension_string.c index d2c942b..b0f53cf 100644 --- a/glx/extension_string.c +++ b/glx/extension_string.c @@ -83,6 +83,7 @@ static const struct extension_info known_glx_extensions[] = { { GLX(EXT_create_context_es2_profile), VER(0,0), N, }, { GLX(EXT_framebuffer_sRGB),VER(0,0), N, }, { GLX(EXT_import_context), VER(0,0), Y, }, +{ GLX(EXT_stereo_tree), VER(0,0), N, }, { GLX(EXT_swap_control),VER(0,0), N, }, { GLX(EXT_texture_from_pixmap), VER(0,0), Y, }, { GLX(EXT_visual_info), VER(0,0), Y, }, diff --git a/glx/extension_string.h b/glx/extension_string.h index 99eb2f7..ce10918 100644 --- a/glx/extension_string.h +++ b/glx/extension_string.h @@ -45,6 +45,7 @@ enum { ARB_multisample_bit, EXT_create_context_es2_profile_bit, EXT_import_context_bit, +EXT_stereo_tree_bit, EXT_swap_control_bit, EXT_texture_from_pixmap_bit, EXT_visual_info_bit, diff --git a/glx/glxcmds.c b/glx/glxcmds.c index 8139149..3a2b073 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -1934,6 +1934,9 @@ __glXDisp_CopySubBufferMESA(__GLXclientState * cl, GLbyte * pc) #ifndef GLX_MAX_SWAP_INTERVAL_EXT #define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 #endif +#ifndef GLX_STEREO_TREE_EXT +#define GLX_STEREO_TREE_EXT 0x20F5 +#endif /* ** Get drawable attributes @@ -1945,7 +1948,7 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId) xGLXGetDrawableAttributesReply reply; __GLXdrawable *pGlxDraw = NULL; DrawablePtr pDraw; -CARD32 attributes[16]; +CARD32 attributes[18]; int num = 0, error; if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY, @@ -1992,6 +1995,9 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId) attributes[2*num] = GLX_MAX_SWAP_INTERVAL_EXT; attributes[2*num+1] = pGlxDraw-config-maxSwapInterval; num++; +attributes[2*num] = GLX_STEREO_TREE_EXT; +attributes[2*num+1] = 0; +num++; } } -- 2.4.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel