From b978becd89c22eb70a8ea75e31fdffaeffc4413b Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 9 Apr 2008 14:49:49 +0000 Subject: [PATCH] - mesa-7.1-visual-crash.patch: Fix a segfault if DRI unavailable. - mesa-7.1-fbconfig-fix.patch: Fix fbconfig comparisons. --- mesa-7.1-dri2.patch | 12 +++++++++ mesa-7.1-fbconfig-fix.patch | 52 +++++++++++++++++++++++++++++++++++++ mesa-7.1-visual-crash.patch | 51 ++++++++++++++++++++++++++++++++++++ mesa.spec | 1 + 4 files changed, 116 insertions(+) create mode 100644 mesa-7.1-dri2.patch create mode 100644 mesa-7.1-fbconfig-fix.patch create mode 100644 mesa-7.1-visual-crash.patch diff --git a/mesa-7.1-dri2.patch b/mesa-7.1-dri2.patch new file mode 100644 index 0000000..dd62911 --- /dev/null +++ b/mesa-7.1-dri2.patch @@ -0,0 +1,12 @@ +diff -up mesa-20080331/src/glx/x11/dri2.c.jx mesa-20080331/src/glx/x11/dri2.c +--- mesa-20080331/src/glx/x11/dri2.c.jx 2008-03-31 16:58:48.000000000 -0400 ++++ mesa-20080331/src/glx/x11/dri2.c 2008-04-09 10:15:59.000000000 -0400 +@@ -37,7 +37,7 @@ + #include + #include "glheader.h" + #include "xf86drm.h" +-#include "dri2proto.h" ++#include + #include "dri2.h" + + static char dri2ExtensionName[] = DRI2_NAME; diff --git a/mesa-7.1-fbconfig-fix.patch b/mesa-7.1-fbconfig-fix.patch new file mode 100644 index 0000000..b054a4a --- /dev/null +++ b/mesa-7.1-fbconfig-fix.patch @@ -0,0 +1,52 @@ +From 2771862adcbc163c0a3f3eaaf4b58c658e72f680 Mon Sep 17 00:00:00 2001 +From: Jie Luo +Date: Tue, 08 Apr 2008 23:17:06 +0000 +Subject: Handle fbconfig comparison correctly for attributes the X server didn't send. + +--- +diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c +index fd10047..70873c2 100644 +--- a/src/glx/x11/dri_glx.c ++++ b/src/glx/x11/dri_glx.c +@@ -520,13 +520,13 @@ static const struct { unsigned int attrib, offset; } attribMap[] = { + static int + scalarEqual(__GLcontextModes *mode, unsigned int attrib, unsigned int value) + { +- unsigned int driValue; ++ unsigned int glxValue; + int i; + + for (i = 0; i < ARRAY_SIZE(attribMap); i++) + if (attribMap[i].attrib == attrib) { +- driValue = *(unsigned int *) ((char *) mode + attribMap[i].offset); +- return driValue == value; ++ glxValue = *(unsigned int *) ((char *) mode + attribMap[i].offset); ++ return glxValue == GLX_DONT_CARE || glxValue == value; + } + + return GL_TRUE; /* Is a non-existing attribute equal to value? */ +@@ -572,7 +572,8 @@ driConfigEqual(const __DRIcoreExtension *core, + glxValue |= GLX_TEXTURE_2D_BIT_EXT; + if (value & __DRI_ATTRIB_TEXTURE_RECTANGLE_BIT) + glxValue |= GLX_TEXTURE_RECTANGLE_BIT_EXT; +- if (glxValue != modes->bindToTextureTargets) ++ if (modes->bindToTextureTargets != GLX_DONT_CARE && ++ glxValue != modes->bindToTextureTargets) + return GL_FALSE; + break; + +diff --git a/src/glx/x11/glcontextmodes.c b/src/glx/x11/glcontextmodes.c +index 58c548a..2a8e48d 100644 +--- a/src/glx/x11/glcontextmodes.c ++++ b/src/glx/x11/glcontextmodes.c +@@ -415,7 +415,7 @@ _gl_context_modes_create( unsigned count, size_t minimum_size ) + (*next)->bindToTextureRgb = GLX_DONT_CARE; + (*next)->bindToTextureRgba = GLX_DONT_CARE; + (*next)->bindToMipmapTexture = GLX_DONT_CARE; +- (*next)->bindToTextureTargets = 0; ++ (*next)->bindToTextureTargets = GLX_DONT_CARE; + (*next)->yInverted = GLX_DONT_CARE; + + next = & ((*next)->next); +-- +cgit v0.7.2-37-g538c diff --git a/mesa-7.1-visual-crash.patch b/mesa-7.1-visual-crash.patch new file mode 100644 index 0000000..eff9e80 --- /dev/null +++ b/mesa-7.1-visual-crash.patch @@ -0,0 +1,51 @@ +From c016f329abb3d638442bf0b0f27d8f34ebf54f86 Mon Sep 17 00:00:00 2001 +From: Kristian Høgsberg +Date: Tue, 08 Apr 2008 22:26:24 +0000 +Subject: Only convert configs if screen creation was successful. + +Thanks to Adam Jackson for pointing it out. +--- +diff --git a/progs/demos/Makefile b/progs/demos/Makefile +index 456bd4a..01b76ad 100644 +--- a/progs/demos/Makefile ++++ b/progs/demos/Makefile +@@ -13,7 +13,7 @@ OSMESA32_LIBS = -L$(TOP)/$(LIB_DIR) -lglut -lOSMesa32 -lGLU -lGL $(APP_LIB_DEPS) + + LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME) + +-LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) ++LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) -lX11 -lXi -lXmu + + PROGS = \ + arbfplight \ +diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c +index 004af0b..fd10047 100644 +--- a/src/glx/x11/dri_glx.c ++++ b/src/glx/x11/dri_glx.c +@@ -786,14 +786,16 @@ CallCreateNewScreen(Display *dpy, int scrn, __GLXscreenConfigs *psc, + & driver_configs, + psc); + +- psc->configs = +- driConvertConfigs(psc->core, +- psc->configs, +- driver_configs); +- psc->visuals = +- driConvertConfigs(psc->core, +- psc->visuals, +- driver_configs); ++ if (psp) { ++ psc->configs = ++ driConvertConfigs(psc->core, ++ psc->configs, ++ driver_configs); ++ psc->visuals = ++ driConvertConfigs(psc->core, ++ psc->visuals, ++ driver_configs); ++ } + } + } + } +-- +cgit v0.7.2-37-g538c diff --git a/mesa.spec b/mesa.spec index 517b925..80659e9 100644 --- a/mesa.spec +++ b/mesa.spec @@ -50,6 +50,7 @@ BuildRequires: libXext-devel BuildRequires: freeglut-devel BuildRequires: libXfixes-devel BuildRequires: libXdamage-devel +BuildRequires: libXi-devel %description Mesa