Hello community,

here is the log from the commit of package Mesa for openSUSE:Factory checked in 
at 2012-09-25 14:04:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/Mesa (Old)
 and      /work/SRC/openSUSE:Factory/.Mesa.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "Mesa", Maintainer is "sndir...@suse.com"

Changes:
--------
--- /work/SRC/openSUSE:Factory/Mesa/Mesa.changes        2012-09-17 
15:18:18.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.Mesa.new/Mesa.changes   2012-09-25 
14:18:18.000000000 +0200
@@ -1,0 +2,26 @@
+Mon Sep 24 17:04:35 UTC 2012 - sndir...@suse.com
+
+- removed any .la file
+- moved libglapi.so from Mesa-devel to Mesa-libglapi-devel package;
+  Mesa-devel requires Mesa-libglapi-devel package anyway
+
+-------------------------------------------------------------------
+Fri Sep 21 08:28:28 UTC 2012 - sndir...@suse.com
+
+- fixed libOSMesa packaging (only a dangling symlink has been
+  packaged) 
+
+-------------------------------------------------------------------
+Fri Sep 21 07:08:05 UTC 2012 - co...@suse.com
+
+- fix baselibs.conf after package split
+
+-------------------------------------------------------------------
+Thu Sep 20 13:05:15 UTC 2012 - sndir...@suse.com
+
+- instead of using "make install" for installing libIndirectGL/
+  libOSMesa, do install these libs manually, so we no longer end
+  up with linking *everything* against libIndirectGL (instead of
+  having it correctly linked against GL!)
+
+-------------------------------------------------------------------

Old:
----
  mesa-8.98.1.tar.bz2

New:
----
  mesa-8.98.5.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ Mesa.spec ++++++
--- /var/tmp/diff_new_pack.qjiYUM/_old  2012-09-25 14:18:20.000000000 +0200
+++ /var/tmp/diff_new_pack.qjiYUM/_new  2012-09-25 14:18:20.000000000 +0200
@@ -17,11 +17,11 @@
 
 
 %define glamor 1
-%define _version 8.98.1
+%define _version 8.98.5
 %define _name_archive mesa
 
 Name:           Mesa
-Version:        8.98.1
+Version:        8.98.5
 Release:        0
 BuildRequires:  autoconf >= 2.60
 BuildRequires:  automake
@@ -489,6 +489,7 @@
 export TALLOC_CFLAGS="-I/usr/include"
 autoreconf -fi
 ###           --with-gallium-drivers=r300,r600,radeonsi,nouveau,swrast,svga \
+###           --with-gallium-drivers=r300,r600,nouveau,swrast,svga \
 %configure --enable-gles1 \
            --enable-gles2 \
            --enable-dri \
@@ -519,6 +520,7 @@
            CFLAGS="$RPM_OPT_FLAGS -DNDEBUG"
 make %{?_smp_mflags}
 make install DESTDIR=$RPM_BUILD_ROOT
+find $RPM_BUILD_ROOT -name "*.la" -exec rm {} \;
 # build and install Indirect Rendering only libGL
 make clean-local
 %configure --enable-xlib-glx \
@@ -531,7 +533,12 @@
            CFLAGS="$RPM_OPT_FLAGS -DNDEBUG"
 
 make %{?_smp_mflags}
-make install DESTDIR=$RPM_BUILD_ROOT
+cp -a \
+   src/mesa/drivers/x11/.libs/libIndirectGL.so* \
+   src/mesa/drivers/osmesa/.libs/libOSMesa.so* \
+   $RPM_BUILD_ROOT/usr/%{_lib}
+install -m 644 src/mesa/drivers/osmesa/osmesa.pc \
+   $RPM_BUILD_ROOT/usr/%{_lib}/pkgconfig
 
 #for dir in ../xc/doc/man/{GL/gl,GL/glx,GLU}; do
 for dir in ../xc/doc/man/{GL/gl,GL/glx}; do
@@ -634,7 +641,6 @@
 %_includedir/KHR
 %_libdir/libEGL.so
 %_libdir/pkgconfig/egl.pc
-%_libdir/libEGL.la
 
 %files -n Mesa-libGL1
 %defattr(-,root,root)
@@ -644,9 +650,9 @@
 %defattr(-,root,root)
 %dir %_includedir/GL
 %_includedir/GL/*.h
+%exclude %_includedir/GL/osmesa.h
 %_libdir/libGL.so
 %_libdir/pkgconfig/gl.pc
-%_libdir/libGL.la
 %_mandir/man3/gl[A-Z]*
 
 %files -n Mesa-libGLESv1_CM1
@@ -657,7 +663,6 @@
 %defattr(-,root,root)
 %_includedir/GLES
 %_libdir/libGLESv1_CM.so
-%_libdir/libGLESv1_CM.la
 %_libdir/pkgconfig/glesv1_cm.pc
 
 %files -n Mesa-libGLESv2-2
@@ -668,7 +673,6 @@
 %defattr(-,root,root)
 %_includedir/GLES2
 %_libdir/libGLESv2.so
-%_libdir/libGLESv2.la
 %_libdir/pkgconfig/glesv2.pc
 
 %files -n Mesa-libIndirectGL1
@@ -678,16 +682,16 @@
 %files -n Mesa-libIndirectGL-devel
 %defattr(-,root,root)
 %_libdir/libIndirectGL.so
-%_libdir/libIndirectGL.la
 
 %files -n libOSMesa9
 %defattr(-,root,root)
-%_libdir/libOSMesa.so.*
+%_libdir/libOSMesa.so.8.0.0
+%_libdir/libOSMesa.so.8
 
 %files -n libOSMesa-devel
 %defattr(-,root,root)
+%_includedir/GL/osmesa.h
 %_libdir/libOSMesa.so
-%_libdir/libOSMesa.la
 %_libdir/pkgconfig/osmesa.pc
 
 %files -n libgbm1
@@ -698,7 +702,6 @@
 %defattr(-,root,root)
 %_includedir/gbm.h
 %_libdir/libgbm.so
-%_libdir/libgbm.la
 %_libdir/pkgconfig/gbm.pc
 
 %ifnarch s390 s390x %arm ppc ppc64
@@ -774,15 +777,13 @@
 
 %files -n Mesa-libglapi-devel
 %defattr(-,root,root)
-%_libdir/libglapi.la
+%_libdir/libglapi.so
 
 %files devel
 %defattr(-,root,root)
 %doc docs/*.html docs/*.spec
 %_includedir/GL/internal
-%_libdir/libglapi.so
 %_libdir/libdricore9*.so
-%_libdir/libdricore9*.la
 %_libdir/pkgconfig/dri.pc
 
 %changelog

++++++ baselibs.conf ++++++
--- /var/tmp/diff_new_pack.qjiYUM/_old  2012-09-25 14:18:20.000000000 +0200
+++ /var/tmp/diff_new_pack.qjiYUM/_new  2012-09-25 14:18:20.000000000 +0200
@@ -8,7 +8,6 @@
        requires "Mesa-libGL-devel-<targettype> = <version>"
        requires "Mesa-libGLESv1_CM-devel-<targettype> = <version>"
        requires "Mesa-libGLESv2-devel-<targettype> = <version>"
-       requires "Mesa-libGLU-devel-<targettype> = <version>"
        requires "Mesa-libIndirectGL1-<targettype> = <version>"
        requires "Mesa-libIndirectGL-devel-<targettype> = <version>"
        requires "libOSMesa9-<targettype> = <version>"
@@ -34,12 +33,8 @@
 Mesa-libGLESv2-devel
        requires -Mesa-libGLESv2-<targettype>
        requires "Mesa-libGLESv2-2-<targettype> = <version>"
-Mesa-libGLU1
-Mesa-libGLU-devel
-       requires -Mesa-libGLU-<targettype>
-       requires "Mesa-libGLU1-<targettype> = <version>"
 Mesa-libIndirectGL1
-Mesa-libIndirectGL1-devel
+Mesa-libIndirectGL-devel
        requires -Mesa-libIndirectGL-<targettype>
        requires "Mesa-libIndirectGL1-<targettype> = <version>"
 libOSMesa9

++++++ mesa-8.98.1.tar.bz2 -> mesa-8.98.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/bin/mklib new/mesa-8.98.5/bin/mklib
--- old/mesa-8.98.1/bin/mklib   2012-09-01 08:00:25.000000000 +0200
+++ new/mesa-8.98.5/bin/mklib   2012-09-15 00:27:51.000000000 +0200
@@ -319,6 +319,25 @@
             fi
        fi
 
+       # Check if objects are 32-bit and we're running in 64-bit
+       # environment.  If so, pass -m32 flag to linker.
+       add_abi_flag_to_opts() {
+           case $(file $1) in
+               *32-bit*x86-64*)
+                   # x86_64 x32 ABI.
+                   OPTS="-mx32 ${OPTS}"
+                   ;;
+               *64-bit*x86-64*)
+                   # x86_64 64-bit ABI.
+                   OPTS="-m64 ${OPTS}"
+                   ;;
+               *32-bit*Intel*)
+                   # x86 32-bit ABI.
+                   OPTS="-m32 ${OPTS}"
+                   ;;
+           esac
+       }
+
        if [ $NOPREFIX = 1 ] ; then
            # No "lib" or ".so" part
            echo "mklib: Making" $ARCH "shared library: " ${LIBNAME}
@@ -330,15 +349,8 @@
            ;;
            esac
 
-           # Check if objects are 32-bit and we're running in 64-bit
-           # environment.  If so, pass -m32 flag to linker.
-           set ${OBJECTS}
-           ABI32=`file $1 | grep 32-bit`
-           ARM=`file $1 | grep ARM`
-           # Do not add "-m32" option for arm.
-            if [ -z "$ARM" -a "${ABI32}" -a `uname -m` = "x86_64" ] ; then
-               OPTS="-m32 ${OPTS}"
-           fi
+           # Check to see if we are building for a different ABI.
+           add_abi_flag_to_opts ${OBJECTS}
 
             if [ "${ALTOPTS}" ] ; then
                 OPTS=${ALTOPTS}
@@ -389,15 +401,9 @@
                # exptmp is removed below
            fi
 
-           # Check if objects are 32-bit and we're running in 64-bit
-           # environment.  If so, pass -m32 flag to linker.
-           set ${OBJECTS}
-           ABI32=`file $1 | grep 32-bit`
-            ARM=`file $1 | grep ARM`
-           # Do not add "-m32" option for arm.
-            if [ -z "$ARM" -a "${ABI32}" -a `uname -m` = "x86_64" ] ; then
-               OPTS="-m32 ${OPTS}"
-           fi
+           # Check to see if we are building for a different ABI.
+           add_abi_flag_to_opts ${OBJECTS}
+
             if [ "${ALTOPTS}" ] ; then
                 OPTS=${ALTOPTS}
             fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/configure.ac new/mesa-8.98.5/configure.ac
--- old/mesa-8.98.1/configure.ac        2012-09-01 08:00:25.000000000 +0200
+++ new/mesa-8.98.5/configure.ac        2012-09-15 00:27:51.000000000 +0200
@@ -26,6 +26,10 @@
 LT_PREREQ([2.2])
 LT_INIT([disable-static])
 
+dnl Set internal versions
+OSMESA_VERSION=8
+AC_SUBST([OSMESA_VERSION])
+
 dnl Versions for external dependencies
 LIBDRM_REQUIRED=2.4.24
 LIBDRM_RADEON_REQUIRED=2.4.39
@@ -1920,10 +1924,6 @@
 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 
2>&1)
 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 
2>&1)
 
-# To pass as an argument to libtool's -version-number flag
-VERSION_NUMBER=`echo "$VERSION" | $SED 's/\./:/g'`
-AC_SUBST([VERSION_NUMBER])
-
 dnl prepend CORE_DIRS to SRC_DIRS
 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/egl/drivers/dri2/platform_android.c 
new/mesa-8.98.5/src/egl/drivers/dri2/platform_android.c
--- old/mesa-8.98.1/src/egl/drivers/dri2/platform_android.c     2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/egl/drivers/dri2/platform_android.c     2012-09-15 
00:27:51.000000000 +0200
@@ -500,6 +500,14 @@
       for (j = 0; dri2_dpy->driver_configs[j]; j++) {
          const EGLint surface_type = EGL_WINDOW_BIT | EGL_PBUFFER_BIT;
          struct dri2_egl_config *dri2_conf;
+         unsigned int double_buffered = 0;
+
+         dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[j],
+            __DRI_ATTRIB_DOUBLE_BUFFER, &double_buffered);
+
+         /* support only double buffered configs */
+         if (!double_buffered)
+            continue;
 
          dri2_conf = dri2_add_config(dpy, dri2_dpy->driver_configs[j],
                count + 1, visuals[i].size, surface_type, NULL,
@@ -525,17 +533,6 @@
       /* there is no front buffer so no OpenGL */
       dri2_conf->base.RenderableType &= ~EGL_OPENGL_BIT;
       dri2_conf->base.Conformant &= ~EGL_OPENGL_BIT;
-
-      /*
-       * We want to make sure GL_DRAW_BUFFER for windows or pbuffers is always
-       * GL_BACK.  For EGL configs that do not have a double DRI config, clear
-       * the surface type.
-       *
-       * This is just to be on the safe side.  dri2_add_config never sets
-       * EGL_WINDOW_BIT or EGL_PBUFFER_BIT for such configs.
-       */
-      if (!dri2_conf->dri_double_config)
-         dri2_conf->base.SurfaceType = 0;
    }
 
    return (count != 0);
@@ -660,18 +657,29 @@
    return (fd >= 0) ? dup(fd) : -1;
 }
 
+/* support versions < JellyBean */
+#ifndef ALOGW
+#define ALOGW LOGW
+#endif
+#ifndef ALOGD
+#define ALOGD LOGD
+#endif
+#ifndef ALOGI
+#define ALOGI LOGI
+#endif
+
 static void
 droid_log(EGLint level, const char *msg)
 {
    switch (level) {
    case _EGL_DEBUG:
-      LOGD("%s", msg);
+      ALOGD("%s", msg);
       break;
    case _EGL_INFO:
-      LOGI("%s", msg);
+      ALOGI("%s", msg);
       break;
    case _EGL_WARNING:
-      LOGW("%s", msg);
+      ALOGW("%s", msg);
       break;
    case _EGL_FATAL:
       LOG_FATAL("%s", msg);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mesa-8.98.1/src/gallium/drivers/r600/evergreen_state.c 
new/mesa-8.98.5/src/gallium/drivers/r600/evergreen_state.c
--- old/mesa-8.98.1/src/gallium/drivers/r600/evergreen_state.c  2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/gallium/drivers/r600/evergreen_state.c  2012-09-15 
00:27:51.000000000 +0200
@@ -920,7 +920,8 @@
                                        
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules));
        } else {
                r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL,
-                                       
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules));
+                                       
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules) |
+                                       
S_028C08_QUANT_MODE(V_028C08_X_1_256TH));
        }
        r600_pipe_state_add_reg(rstate, R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 
fui(state->offset_clamp));
        r600_pipe_state_add_reg(rstate, R_028814_PA_SU_SC_MODE_CNTL,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/gallium/drivers/r600/evergreend.h 
new/mesa-8.98.5/src/gallium/drivers/r600/evergreend.h
--- old/mesa-8.98.1/src/gallium/drivers/r600/evergreend.h       2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/gallium/drivers/r600/evergreend.h       2012-09-15 
00:27:51.000000000 +0200
@@ -1955,6 +1955,17 @@
 #define   S_028C08_PIX_CENTER_HALF(x)                  (((x) & 0x1) << 0)
 #define   G_028C08_PIX_CENTER_HALF(x)                  (((x) >> 0) & 0x1)
 #define   C_028C08_PIX_CENTER_HALF                     0xFFFFFFFE
+#define   S_028C08_QUANT_MODE(x)                       (((x) & 0x7) << 3)
+#define   G_028C08_QUANT_MODE(x)                       (((x) >> 3) & 0x7)
+#define   C_028C08_QUANT_MODE                          0xFFFFFFC7
+#define     V_028C08_X_1_16TH                          0x00
+#define     V_028C08_X_1_8TH                           0x01
+#define     V_028C08_X_1_4TH                           0x02
+#define     V_028C08_X_1_2                             0x03
+#define     V_028C08_X_1                               0x04
+#define     V_028C08_X_1_256TH                         0x05
+#define     V_028C08_X_1_1024TH                        0x06
+#define     V_028C08_X_1_4096TH                        0x07
 #define R_028C0C_PA_CL_GB_VERT_CLIP_ADJ              0x00028C0C
 #define R_028C10_PA_CL_GB_VERT_DISC_ADJ              0x00028C10
 #define R_028C14_PA_CL_GB_HORZ_CLIP_ADJ              0x00028C14
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/gallium/drivers/r600/r600_state.c 
new/mesa-8.98.5/src/gallium/drivers/r600/r600_state.c
--- old/mesa-8.98.1/src/gallium/drivers/r600/r600_state.c       2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/gallium/drivers/r600/r600_state.c       2012-09-15 
00:27:51.000000000 +0200
@@ -948,7 +948,8 @@
        r600_pipe_state_add_reg(rstate, R_028A4C_PA_SC_MODE_CNTL, sc_mode_cntl);
 
        r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL,
-                               
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules));
+                               
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules) |
+                               S_028C08_QUANT_MODE(V_028C08_X_1_256TH));
 
        r600_pipe_state_add_reg(rstate, R_028DFC_PA_SU_POLY_OFFSET_CLAMP, 
fui(state->offset_clamp));
        r600_pipe_state_add_reg(rstate, R_028814_PA_SU_SC_MODE_CNTL,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mesa-8.98.1/src/gallium/drivers/r600/r600_state_common.c 
new/mesa-8.98.5/src/gallium/drivers/r600/r600_state_common.c
--- old/mesa-8.98.1/src/gallium/drivers/r600/r600_state_common.c        
2012-09-01 08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/gallium/drivers/r600/r600_state_common.c        
2012-09-15 00:27:51.000000000 +0200
@@ -108,7 +108,7 @@
 {
        r600_init_atom(&rctx->surface_sync_cmd.atom,    r600_emit_surface_sync, 
        5, EMIT_EARLY);
        r600_init_atom(&rctx->r6xx_flush_and_inv_cmd,   
r600_emit_r6xx_flush_and_inv,   2, EMIT_EARLY);
-       r600_init_atom(&rctx->alphatest_state.atom,     
r600_emit_alphatest_state,      3, 0);
+       r600_init_atom(&rctx->alphatest_state.atom,     
r600_emit_alphatest_state,      6, 0);
        r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/gallium/drivers/r600/r600d.h 
new/mesa-8.98.5/src/gallium/drivers/r600/r600d.h
--- old/mesa-8.98.1/src/gallium/drivers/r600/r600d.h    2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/gallium/drivers/r600/r600d.h    2012-09-15 
00:27:51.000000000 +0200
@@ -2194,6 +2194,15 @@
 #define   S_028C08_PIX_CENTER_HALF(x)                  (((x) & 0x1) << 0)
 #define   G_028C08_PIX_CENTER_HALF(x)                  (((x) >> 0) & 0x1)
 #define   C_028C08_PIX_CENTER_HALF                     0xFFFFFFFE
+#define   S_028C08_QUANT_MODE(x)                       (((x) & 0x7) << 3)
+#define   G_028C08_QUANT_MODE(x)                       (((x) >> 3) & 0x7)
+#define   C_028C08_QUANT_MODE                          0xFFFFFFC7
+#define     V_028C08_X_1_16TH                          0x00
+#define     V_028C08_X_1_8TH                           0x01
+#define     V_028C08_X_1_4TH                           0x02
+#define     V_028C08_X_1_2                             0x03
+#define     V_028C08_X_1                               0x04
+#define     V_028C08_X_1_256TH                         0x05
 #define R_028C1C_PA_SC_AA_SAMPLE_LOCS_MCTX           0x028C1C
 #define R_028C48_PA_SC_AA_MASK                       0x028C48
 #define R_028810_PA_CL_CLIP_CNTL                     0x028810
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/ast_to_hir.cpp 
new/mesa-8.98.5/src/glsl/ast_to_hir.cpp
--- old/mesa-8.98.1/src/glsl/ast_to_hir.cpp     2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/glsl/ast_to_hir.cpp     2012-09-15 00:27:51.000000000 
+0200
@@ -2086,9 +2086,24 @@
         } else {
            var->location = qual->location;
         }
+
         if (qual->flags.q.explicit_index) {
-           var->explicit_index = true;
-           var->index = qual->index;
+            /* From the GLSL 4.30 specification, section 4.4.2 (Output
+             * Layout Qualifiers):
+             *
+             * "It is also a compile-time error if a fragment shader
+             *  sets a layout index to less than 0 or greater than 1."
+             *
+             * Older specifications don't mandate a behavior; we take
+             * this as a clarification and always generate the error.
+             */
+            if (qual->index < 0 || qual->index > 1) {
+               _mesa_glsl_error(loc, state,
+                                "explicit index may only be 0 or 1\n");
+            } else {
+               var->explicit_index = true;
+               var->index = qual->index;
+            }
         }
       }
    } else if (qual->flags.q.explicit_index) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/glcpp/Makefile.am 
new/mesa-8.98.5/src/glsl/glcpp/Makefile.am
--- old/mesa-8.98.1/src/glsl/glcpp/Makefile.am  2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/glsl/glcpp/Makefile.am  2012-09-15 00:27:51.000000000 
+0200
@@ -31,7 +31,7 @@
        $(LIBRARY_DEFINES) \
        $(API_DEFINES)
 
-AM_YFLAGS = -v -d
+AM_YFLAGS = -v -d -p "glcpp_parser_"
 AM_LFLAGS = --nounistd -o$(LEX_OUTPUT_ROOT).c
 
 noinst_LTLIBRARIES = libglcpp.la
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/glcpp/glcpp-parse.y 
new/mesa-8.98.5/src/glsl/glcpp/glcpp-parse.y
--- old/mesa-8.98.1/src/glsl/glcpp/glcpp-parse.y        2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/glsl/glcpp/glcpp-parse.y        2012-09-15 
00:27:51.000000000 +0200
@@ -133,8 +133,6 @@
 static void
 _glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc);
 
-#define yylex glcpp_parser_lex
-
 static int
 glcpp_parser_lex (YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser);
 
@@ -1197,12 +1195,6 @@
        return parser;
 }
 
-int
-glcpp_parser_parse (glcpp_parser_t *parser)
-{
-       return yyparse (parser);
-}
-
 void
 glcpp_parser_destroy (glcpp_parser_t *parser)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/glcpp/glcpp.c 
new/mesa-8.98.5/src/glsl/glcpp/glcpp.c
--- old/mesa-8.98.1/src/glsl/glcpp/glcpp.c      2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/glsl/glcpp/glcpp.c      2012-09-15 00:27:51.000000000 
+0200
@@ -111,7 +111,7 @@
        if (shader == NULL)
           return 1;
 
-       ret = preprocess(ctx, &shader, &info_log, NULL, API_OPENGL);
+       ret = glcpp_preprocess(ctx, &shader, &info_log, NULL, API_OPENGL);
 
        printf("%s", shader);
        fprintf(stderr, "%s", info_log);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/glcpp/glcpp.h 
new/mesa-8.98.5/src/glsl/glcpp/glcpp.h
--- old/mesa-8.98.1/src/glsl/glcpp/glcpp.h      2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/glsl/glcpp/glcpp.h      2012-09-15 00:27:51.000000000 
+0200
@@ -196,7 +196,7 @@
 glcpp_parser_destroy (glcpp_parser_t *parser);
 
 int
-preprocess(void *ralloc_ctx, const char **shader, char **info_log,
+glcpp_preprocess(void *ralloc_ctx, const char **shader, char **info_log,
           const struct gl_extensions *extensions, int api);
 
 /* Functions for writing to the info log */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/glcpp/pp.c 
new/mesa-8.98.5/src/glsl/glcpp/pp.c
--- old/mesa-8.98.1/src/glsl/glcpp/pp.c 2012-09-01 08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/glsl/glcpp/pp.c 2012-09-15 00:27:51.000000000 +0200
@@ -150,7 +150,7 @@
 }
 
 int
-preprocess(void *ralloc_ctx, const char **shader, char **info_log,
+glcpp_preprocess(void *ralloc_ctx, const char **shader, char **info_log,
           const struct gl_extensions *extensions, int api)
 {
        int errors;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/glsl_parser_extras.h 
new/mesa-8.98.5/src/glsl/glsl_parser_extras.h
--- old/mesa-8.98.1/src/glsl/glsl_parser_extras.h       2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/glsl/glsl_parser_extras.h       2012-09-15 
00:27:51.000000000 +0200
@@ -296,7 +296,7 @@
 extern "C" {
 #endif
 
-extern int preprocess(void *ctx, const char **shader, char **info_log,
+extern int glcpp_preprocess(void *ctx, const char **shader, char **info_log,
                       const struct gl_extensions *extensions, int api);
 
 extern void _mesa_destroy_shader_compiler(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/main.cpp 
new/mesa-8.98.5/src/glsl/main.cpp
--- old/mesa-8.98.1/src/glsl/main.cpp   2012-09-01 08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/glsl/main.cpp   2012-09-15 00:27:51.000000000 +0200
@@ -144,7 +144,7 @@
       new(shader) _mesa_glsl_parse_state(ctx, shader->Type, shader);
 
    const char *source = shader->Source;
-   state->error = preprocess(state, &source, &state->info_log,
+   state->error = glcpp_preprocess(state, &source, &state->info_log,
                             state->extensions, ctx->API) != 0;
 
    if (!state->error) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/glsl/test_optpass.cpp 
new/mesa-8.98.5/src/glsl/test_optpass.cpp
--- old/mesa-8.98.1/src/glsl/test_optpass.cpp   2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/glsl/test_optpass.cpp   2012-09-15 00:27:51.000000000 
+0200
@@ -216,7 +216,7 @@
    } else {
       shader->Source = input.c_str();
       const char *source = shader->Source;
-      state->error = preprocess(state, &source, &state->info_log,
+      state->error = glcpp_preprocess(state, &source, &state->info_log,
                                 state->extensions, ctx->API) != 0;
 
       if (!state->error) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mapi/glapi/gen/glX_proto_send.py 
new/mesa-8.98.5/src/mapi/glapi/gen/glX_proto_send.py
--- old/mesa-8.98.1/src/mapi/glapi/gen/glX_proto_send.py        2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mapi/glapi/gen/glX_proto_send.py        2012-09-15 
00:27:51.000000000 +0200
@@ -423,9 +423,9 @@
                                print ''
                                print '#if defined(GLX_DIRECT_RENDERING) && 
!defined(GLX_USE_APPLEGL)'
                                print '    if (gc->isDirect) {'
-                               print '        const _glapi_proc *const table = 
GET_DISPATCH();'
+                               print '        const _glapi_proc *const 
disp_table = GET_DISPATCH();'
                                print '        PFNGL%sPROC p =' % (name.upper())
-                               print '            (PFNGL%sPROC) table[%d];' % 
(name.upper(), func.offset)
+                               print '            (PFNGL%sPROC) 
disp_table[%d];' % (name.upper(), func.offset)
                                print '    %sp(%s);' % (ret_string, 
func.get_called_parameter_string())
                                print '    } else'
                                print '#endif'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/Makefile.am 
new/mesa-8.98.5/src/mesa/Makefile.am
--- old/mesa-8.98.1/src/mesa/Makefile.am        2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/mesa/Makefile.am        2012-09-15 00:27:51.000000000 
+0200
@@ -73,7 +73,7 @@
 
 program/program_parse.tab.c program/program_parse.tab.h: 
program/program_parse.y
        $(MKDIR_P) program
-       $(AM_V_GEN) $(YACC) -v -d --output=program/program_parse.tab.c $<
+       $(AM_V_GEN) $(YACC) -p "_mesa_program_" -v -d 
--output=program/program_parse.tab.c $<
 
 program/lex.yy.c: program/program_lexer.l
        $(MKDIR_P) program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/drivers/common/meta.c 
new/mesa-8.98.5/src/mesa/drivers/common/meta.c
--- old/mesa-8.98.1/src/mesa/drivers/common/meta.c      2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/drivers/common/meta.c      2012-09-15 
00:27:51.000000000 +0200
@@ -538,7 +538,9 @@
          _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_FALSE);
    }
 
-   if (state & MESA_META_FOG) {
+   if ((state & MESA_META_FOG)
+       && ctx->API != API_OPENGL_CORE
+       && ctx->API != API_OPENGLES2) {
       save->Fog = ctx->Fog.Enabled;
       if (ctx->Fog.Enabled)
          _mesa_set_enable(ctx, GL_FOG, GL_FALSE);
@@ -856,7 +858,9 @@
       _mesa_DepthMask(save->Depth.Mask);
    }
 
-   if (state & MESA_META_FOG) {
+   if ((state & MESA_META_FOG)
+       && ctx->API != API_OPENGL_CORE
+       && ctx->API != API_OPENGLES2) {
       _mesa_set_enable(ctx, GL_FOG, save->Fog);
    }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/drivers/dri/common/xmlconfig.c 
new/mesa-8.98.5/src/mesa/drivers/dri/common/xmlconfig.c
--- old/mesa-8.98.1/src/mesa/drivers/dri/common/xmlconfig.c     2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/drivers/dri/common/xmlconfig.c     2012-09-15 
00:27:51.000000000 +0200
@@ -86,7 +86,7 @@
 #endif
 
 #if !defined(GET_PROGRAM_NAME)
-#    if defined(__OpenBSD__) || defined(NetBSD) || defined(__UCLIBC__)
+#    if defined(__OpenBSD__) || defined(NetBSD) || defined(__UCLIBC__) || 
defined(ANDROID)
 /* This is a hack. It's said to work on OpenBSD, NetBSD and GNU.
  * Rogelio M.Serrano Jr. reported it's also working with UCLIBC. It's
  * used as a last resort, if there is no documented facility available. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mesa-8.98.1/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp 
new/mesa-8.98.5/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
--- old/mesa-8.98.1/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp 
2012-09-01 08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp 
2012-09-15 00:27:51.000000000 +0200
@@ -221,6 +221,30 @@
    }
 
    this->live_intervals_valid = true;
+
+   /* Note in the non-control-flow code above, that we only take def[] as the
+    * first store, and use[] as the last use.  We use this in dead code
+    * elimination, to determine when a store never gets used.  However, we
+    * also use these arrays to answer the virtual_grf_interferes() question
+    * (live interval analysis), which is used for register coalescing and
+    * register allocation.
+    *
+    * So, there's a conflict over what the array should mean: if use[]
+    * considers a def after the last use, then the dead code elimination pass
+    * never does anything (and it's an important pass!).  But if we don't
+    * include dead code, then virtual_grf_interferes() lies and we'll do
+    * horrible things like coalesce the register that is dead-code-written
+    * into another register that was live across the dead write (causing the
+    * use of the second register to take the dead write's source value instead
+    * of the coalesced MOV's source value).
+    *
+    * To resolve the conflict, immediately after calculating live intervals,
+    * detect dead code, nuke it, and if we changed anything, calculate again
+    * before returning to the caller.  Now we happen to produce def[] and
+    * use[] arrays that will work for virtual_grf_interferes().
+    */
+   if (dead_code_eliminate())
+      calculate_live_intervals();
 }
 
 bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mesa-8.98.1/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c 
new/mesa-8.98.5/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
--- old/mesa-8.98.1/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c    
2012-09-01 08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c    
2012-09-15 00:27:51.000000000 +0200
@@ -341,7 +341,10 @@
 
    GLbitfield SamplersUsed = vs->SamplersUsed | fs->SamplersUsed;
 
-   brw->sampler.count = _mesa_bitcount(SamplersUsed);
+   /* ARB programs use the texture unit number as the sampler index, so we
+    * need to find the highest unit used.  A bit-count will not work.
+    */
+   brw->sampler.count = _mesa_fls(SamplersUsed);
 
    if (brw->sampler.count == 0)
       return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mesa-8.98.1/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 
new/mesa-8.98.5/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
--- old/mesa-8.98.1/src/mesa/drivers/dri/i965/brw_wm_surface_state.c    
2012-09-01 08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/drivers/dri/i965/brw_wm_surface_state.c    
2012-09-15 00:27:51.000000000 +0200
@@ -1250,7 +1250,7 @@
    struct gl_program *vs = (struct gl_program *) brw->vertex_program;
    struct gl_program *fs = (struct gl_program *) brw->fragment_program;
 
-   unsigned num_samplers = _mesa_bitcount(vs->SamplersUsed | fs->SamplersUsed);
+   unsigned num_samplers = _mesa_fls(vs->SamplersUsed | fs->SamplersUsed);
 
    for (unsigned s = 0; s < num_samplers; s++) {
       brw->vs.surf_offset[SURF_INDEX_VS_TEXTURE(s)] = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/drivers/osmesa/Makefile.am 
new/mesa-8.98.5/src/mesa/drivers/osmesa/Makefile.am
--- old/mesa-8.98.1/src/mesa/drivers/osmesa/Makefile.am 2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/drivers/osmesa/Makefile.am 2012-09-15 
00:27:51.000000000 +0200
@@ -35,7 +35,7 @@
 
 lib@OSMESA_LIB@_la_SOURCES = osmesa.c
 
-lib@OSMESA_LIB@_la_LDFLAGS = -module -version-number @VERSION_NUMBER@ 
-no-undefined
+lib@OSMESA_LIB@_la_LDFLAGS = -module -version-number @OSMESA_VERSION@ 
-no-undefined
 lib@OSMESA_LIB@_la_LIBADD = \
        $(top_builddir)/src/mesa/libmesa.la \
        $(top_builddir)/src/mapi/glapi/libglapi.la
@@ -46,7 +46,7 @@
 all-local: lib@OSMESA_LIB@.la
        $(MKDIR_P) $(top_builddir)/$(LIB_DIR);
        ln -f .libs/lib@OSMESA_LIB@.so 
$(top_builddir)/$(LIB_DIR)/lib@OSMESA_LIB@.so;
-       ln -f .libs/lib@OSMESA_LIB@.so.@VERSION@ 
$(top_builddir)/$(LIB_DIR)/lib@OSMESA_LIB@.so.@VERSION@;
+       ln -f .libs/lib@OSMESA_LIB@.so.@OSMESA_VERSION@ 
$(top_builddir)/$(LIB_DIR)/lib@OSMESA_LIB@.so.@OSMESA_VERSION@;
 endif
 
 pkgconfigdir = $(libdir)/pkgconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/drivers/osmesa/osmesa.pc.in 
new/mesa-8.98.5/src/mesa/drivers/osmesa/osmesa.pc.in
--- old/mesa-8.98.1/src/mesa/drivers/osmesa/osmesa.pc.in        2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/drivers/osmesa/osmesa.pc.in        2012-09-15 
00:27:51.000000000 +0200
@@ -6,7 +6,7 @@
 Name: osmesa
 Description: Mesa Off-screen Rendering library
 Requires: @OSMESA_PC_REQ@
-Version: @PACKAGE_VERSION@
+Version: @OSMESA_VERSION@
 Libs: -L${libdir} -l@OSMESA_LIB@
 Libs.private: @OSMESA_PC_LIB_PRIV@
 Cflags: -I${includedir}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/main/extensions.c 
new/mesa-8.98.5/src/mesa/main/extensions.c
--- old/mesa-8.98.1/src/mesa/main/extensions.c  2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/mesa/main/extensions.c  2012-09-15 00:27:51.000000000 
+0200
@@ -927,7 +927,7 @@
 
    base = (GLboolean *) &ctx->Extensions;
    for (i = extension_table; i->name != 0; ++i) {
-      if (base[i->offset]) {
+      if (base[i->offset] && (i->api_set & (1 << ctx->API))) {
         ctx->Extensions.Count++;
       }
    }
@@ -947,10 +947,11 @@
    base = (GLboolean*) &ctx->Extensions;
    n = 0;
    for (i = extension_table; i->name != 0; ++i) {
-      if (n == index && base[i->offset]) {
-        return (const GLubyte*) i->name;
-      } else if (base[i->offset]) {
-        ++n;
+      if (base[i->offset] & (i->api_set & (1 << ctx->API))) {
+         if (n == index)
+            return (const GLubyte*) i->name;
+         else
+            ++n;
       }
    }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/main/fbobject.c 
new/mesa-8.98.5/src/mesa/main/fbobject.c
--- old/mesa-8.98.1/src/mesa/main/fbobject.c    2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/mesa/main/fbobject.c    2012-09-15 00:27:51.000000000 
+0200
@@ -2979,8 +2979,8 @@
    /* extra checks for multisample copies... */
    if (readFb->Visual.samples > 0 || drawFb->Visual.samples > 0) {
       /* src and dest region sizes must be the same */
-      if (srcX1 - srcX0 != dstX1 - dstX0 ||
-          srcY1 - srcY0 != dstY1 - dstY0) {
+      if (abs(srcX1 - srcX0) != abs(dstX1 - dstX0) ||
+          abs(srcY1 - srcY0) != abs(dstY1 - dstY0)) {
          _mesa_error(ctx, GL_INVALID_OPERATION,
                 "glBlitFramebufferEXT(bad src/dst multisample region sizes)");
          return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/main/imports.h 
new/mesa-8.98.5/src/mesa/main/imports.h
--- old/mesa-8.98.1/src/mesa/main/imports.h     2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/mesa/main/imports.h     2012-09-15 00:27:51.000000000 
+0200
@@ -587,6 +587,28 @@
 _mesa_bitcount_64(uint64_t n);
 #endif
 
+/**
+ * Find the last (most significant) bit set in a word.
+ *
+ * Essentially ffs() in the reverse direction.
+ */
+static inline unsigned int
+_mesa_fls(unsigned int n)
+{
+#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 304)
+   return n == 0 ? 0 : 32 - __builtin_clz(n);
+#else
+   unsigned int v = 1;
+
+   if (n == 0)
+      return 0;
+
+   while (n >>= 1)
+       v++;
+
+   return v;
+#endif
+}
 
 extern GLhalfARB
 _mesa_float_to_half(float f);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/main/syncobj.c 
new/mesa-8.98.5/src/mesa/main/syncobj.c
--- old/mesa-8.98.1/src/mesa/main/syncobj.c     2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/mesa/main/syncobj.c     2012-09-15 00:27:51.000000000 
+0200
@@ -326,9 +326,13 @@
    if (syncObj->StatusFlag) {
       ret = GL_ALREADY_SIGNALED;
    } else {
-      ctx->Driver.ClientWaitSync(ctx, syncObj, flags, timeout);
+      if (timeout == 0) {
+         ret = GL_TIMEOUT_EXPIRED;
+      } else {
+         ctx->Driver.ClientWaitSync(ctx, syncObj, flags, timeout);
 
-      ret = syncObj->StatusFlag ? GL_CONDITION_SATISFIED : GL_TIMEOUT_EXPIRED;
+         ret = syncObj->StatusFlag ? GL_CONDITION_SATISFIED : 
GL_TIMEOUT_EXPIRED;
+      }
    }
 
    _mesa_unref_sync_object(ctx, syncObj);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/main/teximage.c 
new/mesa-8.98.5/src/mesa/main/teximage.c
--- old/mesa-8.98.1/src/mesa/main/teximage.c    2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/mesa/main/teximage.c    2012-09-15 00:27:51.000000000 
+0200
@@ -660,8 +660,8 @@
 /**
  * Return the proxy target which corresponds to the given texture target
  */
-static GLenum
-get_proxy_target(GLenum target)
+GLenum
+_mesa_get_proxy_target(GLenum target)
 {
    switch (target) {
    case GL_TEXTURE_1D:
@@ -692,7 +692,7 @@
    case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
       return GL_PROXY_TEXTURE_2D_ARRAY_EXT;
    default:
-      _mesa_problem(NULL, "unexpected target in get_proxy_target()");
+      _mesa_problem(NULL, "unexpected target in _mesa_get_proxy_target()");
       return 0;
    }
 }
@@ -1247,11 +1247,12 @@
 
    switch (target) {
    case GL_PROXY_TEXTURE_1D:
-      maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
-      if (width < 2 * border || width > 2 * border + maxSize)
-         return GL_FALSE;
       if (level >= ctx->Const.MaxTextureLevels)
          return GL_FALSE;
+      maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); /* level zero size */
+      maxSize >>= level;  /* level size */
+      if (width < 2 * border || width > 2 * border + maxSize)
+         return GL_FALSE;
       if (!ctx->Extensions.ARB_texture_non_power_of_two) {
          if (width > 0 && !_mesa_is_pow_two(width - 2 * border))
             return GL_FALSE;
@@ -1259,13 +1260,14 @@
       return GL_TRUE;
 
    case GL_PROXY_TEXTURE_2D:
+      if (level >= ctx->Const.MaxTextureLevels)
+         return GL_FALSE;
       maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
+      maxSize >>= level;
       if (width < 2 * border || width > 2 * border + maxSize)
          return GL_FALSE;
       if (height < 2 * border || height > 2 * border + maxSize)
          return GL_FALSE;
-      if (level >= ctx->Const.MaxTextureLevels)
-         return GL_FALSE;
       if (!ctx->Extensions.ARB_texture_non_power_of_two) {
          if (width > 0 && !_mesa_is_pow_two(width - 2 * border))
             return GL_FALSE;
@@ -1275,15 +1277,16 @@
       return GL_TRUE;
 
    case GL_PROXY_TEXTURE_3D:
+      if (level >= ctx->Const.Max3DTextureLevels)
+         return GL_FALSE;
       maxSize = 1 << (ctx->Const.Max3DTextureLevels - 1);
+      maxSize >>= level;
       if (width < 2 * border || width > 2 * border + maxSize)
          return GL_FALSE;
       if (height < 2 * border || height > 2 * border + maxSize)
          return GL_FALSE;
       if (depth < 2 * border || depth > 2 * border + maxSize)
          return GL_FALSE;
-      if (level >= ctx->Const.Max3DTextureLevels)
-         return GL_FALSE;
       if (!ctx->Extensions.ARB_texture_non_power_of_two) {
          if (width > 0 && !_mesa_is_pow_two(width - 2 * border))
             return GL_FALSE;
@@ -1295,23 +1298,24 @@
       return GL_TRUE;
 
    case GL_PROXY_TEXTURE_RECTANGLE_NV:
+      if (level != 0)
+         return GL_FALSE;
       maxSize = ctx->Const.MaxTextureRectSize;
       if (width < 0 || width > maxSize)
          return GL_FALSE;
       if (height < 0 || height > maxSize)
          return GL_FALSE;
-      if (level != 0)
-         return GL_FALSE;
       return GL_TRUE;
 
    case GL_PROXY_TEXTURE_CUBE_MAP_ARB:
+      if (level >= ctx->Const.MaxCubeTextureLevels)
+         return GL_FALSE;
       maxSize = 1 << (ctx->Const.MaxCubeTextureLevels - 1);
+      maxSize >>= level;
       if (width < 2 * border || width > 2 * border + maxSize)
          return GL_FALSE;
       if (height < 2 * border || height > 2 * border + maxSize)
          return GL_FALSE;
-      if (level >= ctx->Const.MaxCubeTextureLevels)
-         return GL_FALSE;
       if (!ctx->Extensions.ARB_texture_non_power_of_two) {
          if (width > 0 && !_mesa_is_pow_two(width - 2 * border))
             return GL_FALSE;
@@ -1321,13 +1325,14 @@
       return GL_TRUE;
 
    case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
+      if (level >= ctx->Const.MaxTextureLevels)
+         return GL_FALSE;
       maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
+      maxSize >>= level;
       if (width < 2 * border || width > 2 * border + maxSize)
          return GL_FALSE;
       if (height < 1 || height > ctx->Const.MaxArrayTextureLayers)
          return GL_FALSE;
-      if (level >= ctx->Const.MaxTextureLevels)
-         return GL_FALSE;
       if (!ctx->Extensions.ARB_texture_non_power_of_two) {
          if (width > 0 && !_mesa_is_pow_two(width - 2 * border))
             return GL_FALSE;
@@ -1335,15 +1340,16 @@
       return GL_TRUE;
 
    case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
+      if (level >= ctx->Const.MaxTextureLevels)
+         return GL_FALSE;
       maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
+      maxSize >>= level;
       if (width < 2 * border || width > 2 * border + maxSize)
          return GL_FALSE;
       if (height < 2 * border || height > 2 * border + maxSize)
          return GL_FALSE;
       if (depth < 1 || depth > ctx->Const.MaxArrayTextureLayers)
          return GL_FALSE;
-      if (level >= ctx->Const.MaxTextureLevels)
-         return GL_FALSE;
       if (!ctx->Extensions.ARB_texture_non_power_of_two) {
          if (width > 0 && !_mesa_is_pow_two(width - 2 * border))
             return GL_FALSE;
@@ -1697,7 +1703,7 @@
                      GLint width, GLint height,
                      GLint depth, GLint border )
 {
-   const GLenum proxyTarget = get_proxy_target(target);
+   const GLenum proxyTarget = _mesa_get_proxy_target(target);
    const GLboolean isProxy = target == proxyTarget;
    GLboolean sizeOK = GL_TRUE;
    GLboolean colorFormat;
@@ -1927,7 +1933,7 @@
                                GLsizei height, GLsizei depth, GLint border,
                                GLsizei imageSize)
 {
-   const GLenum proxyTarget = get_proxy_target(target);
+   const GLenum proxyTarget = _mesa_get_proxy_target(target);
    const GLint maxLevels = _mesa_max_texture_levels(ctx, target);
    GLint expectedSize;
    GLenum choose_format;
@@ -2302,7 +2308,7 @@
                          GLenum target, GLint level, GLint internalFormat,
                          GLint width, GLint height, GLint border )
 {
-   const GLenum proxyTarget = get_proxy_target(target);
+   const GLenum proxyTarget = _mesa_get_proxy_target(target);
    const GLenum type = GL_FLOAT;
    GLboolean sizeOK;
    GLint baseFormat;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/main/teximage.h 
new/mesa-8.98.5/src/mesa/main/teximage.h
--- old/mesa-8.98.1/src/mesa/main/teximage.h    2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/mesa/main/teximage.h    2012-09-15 00:27:51.000000000 
+0200
@@ -66,6 +66,8 @@
 extern GLboolean
 _mesa_is_proxy_texture(GLenum target);
 
+extern GLenum
+_mesa_get_proxy_target(GLenum target);
 
 extern struct gl_texture_image *
 _mesa_new_texture_image( struct gl_context *ctx );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/main/texstorage.c 
new/mesa-8.98.5/src/mesa/main/texstorage.c
--- old/mesa-8.98.1/src/mesa/main/texstorage.c  2012-09-01 08:00:25.000000000 
+0200
+++ new/mesa-8.98.5/src/mesa/main/texstorage.c  2012-09-15 00:27:51.000000000 
+0200
@@ -192,9 +192,10 @@
 
          return;
       }
-   }
 
-   texObj->Immutable = GL_TRUE;
+      /* Only set this field for non-proxy texture objects */
+      texObj->Immutable = GL_TRUE;
+   }
 }
 
 
@@ -242,25 +243,68 @@
                         GLsizei levels, GLenum internalformat,
                         GLsizei width, GLsizei height, GLsizei depth)
 {
-   const GLboolean isProxy = _mesa_is_proxy_texture(target);
    struct gl_texture_object *texObj;
    GLuint maxDim;
+   GLboolean legalFormat;
+
+   /* check internal format - note that only sized formats are allowed */
+   switch (internalformat) {
+   case GL_ALPHA:
+   case GL_LUMINANCE:
+   case GL_LUMINANCE_ALPHA:
+   case GL_INTENSITY:
+   case GL_RED:
+   case GL_RG:
+   case GL_RGB:
+   case GL_RGBA:
+   case GL_BGRA:
+   case GL_DEPTH_COMPONENT:
+   case GL_DEPTH_STENCIL:
+   case GL_COMPRESSED_ALPHA:
+   case GL_COMPRESSED_LUMINANCE_ALPHA:
+   case GL_COMPRESSED_LUMINANCE:
+   case GL_COMPRESSED_INTENSITY:
+   case GL_COMPRESSED_RGB:
+   case GL_COMPRESSED_RGBA:
+   case GL_COMPRESSED_SRGB:
+   case GL_COMPRESSED_SRGB_ALPHA:
+   case GL_COMPRESSED_SLUMINANCE:
+   case GL_COMPRESSED_SLUMINANCE_ALPHA:
+   case GL_RED_INTEGER:
+   case GL_GREEN_INTEGER:
+   case GL_BLUE_INTEGER:
+   case GL_ALPHA_INTEGER:
+   case GL_RGB_INTEGER:
+   case GL_RGBA_INTEGER:
+   case GL_BGR_INTEGER:
+   case GL_BGRA_INTEGER:
+   case GL_LUMINANCE_INTEGER_EXT:
+   case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+      /* these unsized formats are illegal */
+      legalFormat = GL_FALSE;
+      break;
+   default:
+      legalFormat = _mesa_base_tex_format(ctx, internalformat) > 0;
+   }
+
+   if (!legalFormat) {
+      _mesa_error(ctx, GL_INVALID_ENUM,
+                  "glTexStorage%uD(internalformat = %s)", dims,
+                  _mesa_lookup_enum_by_nr(internalformat));
+      return GL_TRUE;
+   }
 
    /* size check */
    if (width < 1 || height < 1 || depth < 1) {
-      if (!isProxy) {
-         _mesa_error(ctx, GL_INVALID_VALUE,
-                     "glTexStorage%uD(width, height or depth < 1)", dims);
-      }
+      _mesa_error(ctx, GL_INVALID_VALUE,
+                  "glTexStorage%uD(width, height or depth < 1)", dims);
       return GL_TRUE;
    }  
 
    /* levels check */
    if (levels < 1 || height < 1 || depth < 1) {
-      if (!isProxy) {
-         _mesa_error(ctx, GL_INVALID_VALUE, "glTexStorage%uD(levels < 1)",
-                     dims);
-      }
+      _mesa_error(ctx, GL_INVALID_VALUE, "glTexStorage%uD(levels < 1)",
+                  dims);
       return GL_TRUE;
    }  
 
@@ -274,40 +318,32 @@
 
    /* check levels against maximum */
    if (levels > _mesa_max_texture_levels(ctx, target)) {
-      if (!isProxy) {
-         _mesa_error(ctx, GL_INVALID_OPERATION,
-                     "glTexStorage%uD(levels too large)", dims);
-      }
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glTexStorage%uD(levels too large)", dims);
       return GL_TRUE;
    }
 
    /* check levels against width/height/depth */
    maxDim = MAX3(width, height, depth);
    if (levels > _mesa_logbase2(maxDim) + 1) {
-      if (!isProxy) {
-         _mesa_error(ctx, GL_INVALID_OPERATION,
-                     "glTexStorage%uD(too many levels for max texture 
dimension)",
-                     dims);
-      }
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glTexStorage%uD(too many levels for max texture dimension)",
+                  dims);
       return GL_TRUE;
    }
 
    /* non-default texture object check */
    texObj = _mesa_get_current_tex_object(ctx, target);
-   if (!texObj || (texObj->Name == 0 && !isProxy)) {
-      if (!isProxy) {
-         _mesa_error(ctx, GL_INVALID_OPERATION,
-                     "glTexStorage%uD(texture object 0)", dims);
-      }
+   if (!texObj || (texObj->Name == 0)) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glTexStorage%uD(texture object 0)", dims);
       return GL_TRUE;
    }
 
    /* Check if texObj->Immutable is set */
    if (texObj->Immutable) {
-      if (!isProxy) {
-         _mesa_error(ctx, GL_INVALID_OPERATION, "glTexStorage%uD(immutable)",
-                     dims);
-      }
+      _mesa_error(ctx, GL_INVALID_OPERATION, "glTexStorage%uD(immutable)",
+                  dims);
       return GL_TRUE;
    }
 
@@ -323,22 +359,38 @@
            GLsizei width, GLsizei height, GLsizei depth)
 {
    struct gl_texture_object *texObj;
-   GLboolean error;
+   GLboolean sizeOK;
+   GLenum proxyTarget = _mesa_get_proxy_target(target);
 
    GET_CURRENT_CONTEXT(ctx);
 
    texObj = _mesa_get_current_tex_object(ctx, target);
 
-   error = tex_storage_error_check(ctx, dims, target, levels,
-                                   internalformat, width, height, depth);
-   if (!error) {
+   if (tex_storage_error_check(ctx, dims, target, levels,
+                               internalformat, width, height, depth)) {
+      return; /* error was recorded */
+   }
+
+   sizeOK = ctx->Driver.TestProxyTexImage(ctx, proxyTarget, 0,
+                                          internalformat, GL_NONE, GL_NONE,
+                                          width, height, depth, 0);
+
+   if (!sizeOK) {
+      if (_mesa_is_proxy_texture(texObj->Target)) {
+         /* clear all image fields for [levels] */
+         clear_image_fields(ctx, dims, texObj);
+      }
+      else {
+         _mesa_error(ctx, GL_INVALID_VALUE,
+                     "glTexStorage%uD(invalid width, height or depth)",
+                     dims);
+         return;
+      }
+   }
+   else {
       setup_texstorage(ctx, texObj, dims, levels, internalformat,
                        width, height, depth);
    }
-   else if (_mesa_is_proxy_texture(target)) {
-      /* clear all image fields for [levels] */
-      clear_image_fields(ctx, dims, texObj);
-   }
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/program/ir_to_mesa.cpp 
new/mesa-8.98.5/src/mesa/program/ir_to_mesa.cpp
--- old/mesa-8.98.1/src/mesa/program/ir_to_mesa.cpp     2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/program/ir_to_mesa.cpp     2012-09-15 
00:27:51.000000000 +0200
@@ -3060,7 +3060,7 @@
       return;
    }
 
-   state->error = preprocess(state, &source, &state->info_log,
+   state->error = glcpp_preprocess(state, &source, &state->info_log,
                             &ctx->Extensions, ctx->API);
 
    if (ctx->Shader.Flags & GLSL_DUMP) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/program/program_lexer.l 
new/mesa-8.98.5/src/mesa/program/program_lexer.l
--- old/mesa-8.98.1/src/mesa/program/program_lexer.l    2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/program/program_lexer.l    2012-09-15 
00:27:51.000000000 +0200
@@ -165,6 +165,7 @@
 cc     C?
 sat    (_SAT)?
 
+%option prefix="_mesa_program_"
 %option bison-bridge bison-locations reentrant noyywrap
 %%
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mesa-8.98.1/src/mesa/state_tracker/st_mesa_to_tgsi.c 
new/mesa-8.98.5/src/mesa/state_tracker/st_mesa_to_tgsi.c
--- old/mesa-8.98.1/src/mesa/state_tracker/st_mesa_to_tgsi.c    2012-09-01 
08:00:25.000000000 +0200
+++ new/mesa-8.98.5/src/mesa/state_tracker/st_mesa_to_tgsi.c    2012-09-15 
00:27:51.000000000 +0200
@@ -1198,7 +1198,7 @@
     * for these, so we put all the translated regs in t->constants.
     */
    if (program->Parameters) {
-      t->constants = CALLOC( program->Parameters->NumParameters,
+      t->constants = calloc( program->Parameters->NumParameters,
                              sizeof t->constants[0] );
       if (t->constants == NULL) {
          ret = PIPE_ERROR_OUT_OF_MEMORY;

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to