xorg-server: Changes to 'debian-experimental'
debian/changelog | 6
debian/patches/03_fedora_glx_versioning.diff | 233 +++++++++++++++++++++++++++
debian/patches/04_fedora_glx14-swrast.diff | 26 +++
debian/patches/series | 3
4 files changed, 268 insertions(+)
New commits:
commit 0b30e9d06e30d3b6fb08cb77e8236e13cce54ad4
Author: Julien Cristau <jcristau@debian.org>
Date: Wed Dec 2 21:56:48 2009 +0100
Enable GLX 1.4 on DRI2 and swrast (from upstream, via F12).
diff --git a/debian/changelog b/debian/changelog
index a89107f..48848d8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xorg-server (2:1.7.2-3) UNRELEASED; urgency=low
+
+ * Enable GLX 1.4 on DRI2 and swrast (from upstream, via F12).
+
+ -- Julien Cristau <jcristau@debian.org> Wed, 02 Dec 2009 21:52:45 +0100
+
xorg-server (2:1.7.2-2) experimental; urgency=low
[ Julien Cristau ]
diff --git a/debian/patches/03_fedora_glx_versioning.diff b/debian/patches/03_fedora_glx_versioning.diff
new file mode 100644
index 0000000..c8a1c30
--- /dev/null
+++ b/debian/patches/03_fedora_glx_versioning.diff
@@ -0,0 +1,233 @@
+From 3ef4be8129f78afd5566a9e5d0fb901449dcb771 Mon Sep 17 00:00:00 2001
+From: Ian Romanick <ian.d.romanick@intel.com>
+Date: Tue, 29 Sep 2009 16:43:43 -0700
+Subject: [PATCH] GLX: Enable GLX 1.4 on DRI2
+
+this squashes 4 commits
+(cherry picked from commit ad5c0d9efa47476ed5cf75c82265c73919e468b4)
+(cherry picked from commit cb54cf1b3e8c4109541cfb698542c00f2473e731)
+(cherry picked from commit 4c6bfa2c09ae2b0cffdf9211a6dfbcaefe0366b5)
+(cherry picked from commit 9bf2ff4faf730913de3073f346646a8727be41d4)
+---
+ glx/glxcmds.c | 12 ++++++++----
+ glx/glxdri2.c | 12 ++++++++++++
+ glx/glxext.c | 8 +++++++-
+ glx/glxscreens.c | 15 ++++++++++++---
+ glx/glxscreens.h | 11 +++++++++++
+ glx/glxserver.h | 3 +++
+ glx/indirect_texture_compression.c | 4 ++--
+ include/protocol-versions.h | 2 +-
+ 8 files changed, 56 insertions(+), 11 deletions(-)
+
+diff --git a/glx/glxcmds.c b/glx/glxcmds.c
+index b1061a8..ba4c123 100644
+--- a/glx/glxcmds.c
++++ b/glx/glxcmds.c
+@@ -50,7 +50,6 @@
+ #include "indirect_dispatch.h"
+ #include "indirect_table.h"
+ #include "indirect_util.h"
+-#include "protocol-versions.h"
+
+ static int
+ validGlxScreen(ClientPtr client, int screen, __GLXscreen **pGlxScreen, int *err)
+@@ -739,8 +738,8 @@ int __glXDisp_QueryVersion(__GLXclientState *cl, GLbyte *pc)
+ ** client if it wants to work with older clients; however, in this
+ ** implementation the server just returns its version number.
+ */
+- reply.majorVersion = SERVER_GLX_MAJOR_VERSION;
+- reply.minorVersion = SERVER_GLX_MINOR_VERSION;
++ reply.majorVersion = glxMajorVersion;
++ reply.minorVersion = glxMinorVersion;
+ reply.length = 0;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+@@ -2360,6 +2359,7 @@ int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc)
+ char *buf;
+ __GLXscreen *pGlxScreen;
+ int err;
++ char ver_str[16];
+
+ if (!validGlxScreen(client, req->screen, &pGlxScreen, &err))
+ return err;
+@@ -2369,7 +2369,11 @@ int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc)
+ ptr = pGlxScreen->GLXvendor;
+ break;
+ case GLX_VERSION:
+- ptr = pGlxScreen->GLXversion;
++ /* Return to the server version rather than the screen version
++ * to prevent confusion when they do not match.
++ */
++ snprintf(ver_str, 16, "%d.%d", glxMajorVersion, glxMinorVersion);
++ ptr = ver_str;
+ break;
+ case GLX_EXTENSIONS:
+ ptr = pGlxScreen->GLXextensions;
+diff --git a/glx/glxdri2.c b/glx/glxdri2.c
+index ed7fb4c..ed7dc80 100644
+--- a/glx/glxdri2.c
++++ b/glx/glxdri2.c
+@@ -685,6 +685,18 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+ screen->base.GLXextensions);
+ }
+
++ /* We're going to assume (perhaps incorrectly?) that all DRI2-enabled
++ * drivers support the required extensions for GLX 1.4. The extensions
++ * we're assuming are:
++ *
++ * - GLX_SGI_make_current_read (1.3)
++ * - GLX_SGIX_fbconfig (1.3)
++ * - GLX_SGIX_pbuffer (1.3)
++ * - GLX_ARB_multisample (1.4)
++ */
++ screen->base.GLXmajor = 1;
++ screen->base.GLXminor = 4;
++
+ screen->enterVT = pScrn->EnterVT;
+ pScrn->EnterVT = glxDRIEnterVT;
+ screen->leaveVT = pScrn->LeaveVT;
+diff --git a/glx/glxext.c b/glx/glxext.c
+index 19d70d4..9f9c0ed 100644
+--- a/glx/glxext.c
++++ b/glx/glxext.c
+@@ -360,12 +360,18 @@ void GlxExtensionInit(void)
+ pScreen = screenInfo.screens[i];
+
+ for (p = __glXProviderStack; p != NULL; p = p->next) {
+- if (p->screenProbe(pScreen) != NULL) {
++ __GLXscreen *glxScreen;
++
++ glxScreen = p->screenProbe(pScreen);
++ if (glxScreen != NULL) {
++ if (glxScreen->GLXminor < glxMinorVersion)
++ glxMinorVersion = glxScreen->GLXminor;
+ LogMessage(X_INFO,
+ "GLX: Initialized %s GL provider for screen %d\n",
+ p->name, i);
+ break;
+ }
++
+ }
+
+ if (!p)
+diff --git a/glx/glxscreens.c b/glx/glxscreens.c
+index 7d29d31..674e2c6 100644
+--- a/glx/glxscreens.c
++++ b/glx/glxscreens.c
+@@ -42,6 +42,7 @@
+ #include "glxserver.h"
+ #include "glxutil.h"
+ #include "glxext.h"
++#include "protocol-versions.h"
+
+ static int glxScreenPrivateKeyIndex;
+ static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKeyIndex;
+@@ -162,7 +163,8 @@ static const char GLServerExtensions[] =
+ ** supported across all screens in a multi-screen system.
+ */
+ static char GLXServerVendorName[] = "SGI";
+-static char GLXServerVersion[] = "1.2";
++unsigned glxMajorVersion = SERVER_GLX_MAJOR_VERSION;
++unsigned glxMinorVersion = SERVER_GLX_MINOR_VERSION;
+ static char GLXServerExtensions[] =
+ "GLX_ARB_multisample "
+ "GLX_EXT_visual_info "
+@@ -378,9 +380,17 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
+ pGlxScreen->pScreen = pScreen;
+ pGlxScreen->GLextensions = xstrdup(GLServerExtensions);
+ pGlxScreen->GLXvendor = xstrdup(GLXServerVendorName);
+- pGlxScreen->GLXversion = xstrdup(GLXServerVersion);
+ pGlxScreen->GLXextensions = xstrdup(GLXServerExtensions);
+
++ /* All GLX providers must support all of the functionality required for at
++ * least GLX 1.2. If the provider supports a higher version, the GLXminor
++ * version can be changed in the provider's screen-probe routine. For
++ * most providers, the screen-probe routine is the caller of this
++ * function.
++ */
++ pGlxScreen->GLXmajor = 1;
++ pGlxScreen->GLXminor = 2;
++
+ pGlxScreen->CloseScreen = pScreen->CloseScreen;
+ pScreen->CloseScreen = glxCloseScreen;
+ pGlxScreen->DestroyWindow = pScreen->DestroyWindow;
+@@ -454,7 +464,6 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
+ void __glXScreenDestroy(__GLXscreen *screen)
+ {
+ xfree(screen->GLXvendor);
+- xfree(screen->GLXversion);
+ xfree(screen->GLXextensions);
+ xfree(screen->GLextensions);
+ }
+diff --git a/glx/glxscreens.h b/glx/glxscreens.h
+index 3c1bdd4..bff4363 100644
+--- a/glx/glxscreens.h
++++ b/glx/glxscreens.h
+@@ -161,6 +161,17 @@ struct __GLXscreen {
+ char *GLXversion;
+ char *GLXextensions;
+
++ /**
++ * \name GLX version supported by this screen.
++ *
++ * Since the GLX version advertised by the server is for the whole server,
++ * the GLX protocol code uses the minimum version supported on all screens.
++ */
++ /*@{*/
++ unsigned GLXmajor;
++ unsigned GLXminor;
++ /*@}*/
++
+ Bool (*CloseScreen)(int index, ScreenPtr pScreen);
+ Bool (*DestroyWindow)(WindowPtr pWindow);
+ };
+diff --git a/glx/glxserver.h b/glx/glxserver.h
+index 4aa8c2e..80f1b28 100644
+--- a/glx/glxserver.h
++++ b/glx/glxserver.h
+@@ -248,4 +248,7 @@ extern int __glXImageSize(GLenum format, GLenum type,
+ GLint imageHeight, GLint rowLength, GLint skipImages, GLint skipRows,
+ GLint alignment);
+
++extern unsigned glxMajorVersion;
++extern unsigned glxMinorVersion;
++
+ #endif /* !__GLX_server_h__ */
+diff --git a/glx/indirect_texture_compression.c b/glx/indirect_texture_compression.c
+index 25c6eb3..5f44d7b 100644
+--- a/glx/indirect_texture_compression.c
++++ b/glx/indirect_texture_compression.c
+@@ -52,7 +52,7 @@ int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *p
+ const GLenum target = *(GLenum *)(pc + 0);
+ const GLint level = *(GLint *)(pc + 4);
+ GLint compsize = 0;
+- char *answer, answerBuffer[200];
++ char *answer = NULL, answerBuffer[200];
+
+ CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize));
+
+@@ -92,7 +92,7 @@ int __glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyt
+ const GLenum target = (GLenum) bswap_32( *(int *)(pc + 0) );
+ const GLint level = (GLint ) bswap_32( *(int *)(pc + 4) );
+ GLint compsize = 0;
+- char *answer, answerBuffer[200];
++ char *answer = NULL, answerBuffer[200];
+
+ CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize));
+
+diff --git a/include/protocol-versions.h b/include/protocol-versions.h
+index da9770c..d688c66 100644
+--- a/include/protocol-versions.h
++++ b/include/protocol-versions.h
+@@ -61,7 +61,7 @@
+
+ /* GLX */
+ #define SERVER_GLX_MAJOR_VERSION 1
+-#define SERVER_GLX_MINOR_VERSION 2
++#define SERVER_GLX_MINOR_VERSION 4
+
+ /* Xinerama */
+ #define SERVER_PANORAMIX_MAJOR_VERSION 1
+--
+1.6.5.rc2
+
diff --git a/debian/patches/04_fedora_glx14-swrast.diff b/debian/patches/04_fedora_glx14-swrast.diff
new file mode 100644
index 0000000..2c51802
--- /dev/null
+++ b/debian/patches/04_fedora_glx14-swrast.diff
@@ -0,0 +1,26 @@
+From 25a0107768c9f25e8edc5e423ca8b1d0813f2d04 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 24 Nov 2009 13:38:46 -0500
+Subject: [PATCH] Enable GLX 1.4 for swrast
+
+---
+ glx/glxdriswrast.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c
+index 44f658f..20f9f90 100644
+--- a/glx/glxdriswrast.c
++++ b/glx/glxdriswrast.c
+@@ -510,6 +510,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+
+ __glXScreenInit(&screen->base, pScreen);
+
++ screen->base.GLXmajor = 1;
++ screen->base.GLXminor = 4;
++
+ LogMessage(X_INFO,
+ "AIGLX: Loaded and initialized %s\n", filename);
+
+--
+1.6.5.2
+
diff --git a/debian/patches/series b/debian/patches/series
index 1524847..7d97522 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,6 +2,9 @@
## Ubuntu patches start with 100.
001_fedora_extramodes.patch
02_Add-libgcrypt-as-an-option-for-sha1.diff
+# 03 and 04 are backports from git master
+03_fedora_glx_versioning.diff
+04_fedora_glx14-swrast.diff
#13_debian_add_xkbpath_env_variable.diff
11-Move-config_init-after-CreateWellKnownSockets-and-In.diff
12-Add-libudev-input-hotplug-backend.diff
Reply to: