[PATCH 1/2] atom: Bump initial table size

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread James Jones

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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Chris Wilson
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

2015-06-02 Thread Chris Wilson
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

2015-06-02 Thread Alexander Volkov
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Keith Packard
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

2015-06-02 Thread Alex Deucher
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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

2015-06-02 Thread Adam Jackson
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