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 <jcris...@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 <jcris...@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.roman...@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 <a...@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 -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org