]> git.pld-linux.org Git - packages/Mesa.git/blobdiff - Mesa-git.patch
- renamed static bcond to static_libs
[packages/Mesa.git] / Mesa-git.patch
index f07d9db0e54a07b5d867b92874eda0186ecc43f0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
-diff --git a/include/GL/gl_mangle.h b/include/GL/gl_mangle.h
-index 54147f7..59f6149 100644
---- a/include/GL/gl_mangle.h
-+++ b/include/GL/gl_mangle.h
-@@ -108,12 +108,20 @@
- #define glBlendColorEXT               MANGLE(BlendColorEXT)
- #define glBlendColor          MANGLE(BlendColor)
- #define glBlendEquationEXT            MANGLE(BlendEquationEXT)
-+#define glBlendEquationi              MANGLE(BlendEquationi)
-+#define glBlendEquationIndexedAMD             MANGLE(BlendEquationIndexedAMD)
- #define glBlendEquation               MANGLE(BlendEquation)
- #define glBlendEquationSeparateATI            MANGLE(BlendEquationSeparateATI)
- #define glBlendEquationSeparateEXT            MANGLE(BlendEquationSeparateEXT)
-+#define glBlendEquationSeparatei              MANGLE(BlendEquationSeparatei)
-+#define glBlendEquationSeparateIndexedAMD             MANGLE(BlendEquationSeparateIndexedAMD)
- #define glBlendEquationSeparate               MANGLE(BlendEquationSeparate)
-+#define glBlendFunci          MANGLE(BlendFunci)
-+#define glBlendFuncIndexedAMD         MANGLE(BlendFuncIndexedAMD)
- #define glBlendFunc           MANGLE(BlendFunc)
- #define glBlendFuncSeparateEXT                MANGLE(BlendFuncSeparateEXT)
-+#define glBlendFuncSeparatei          MANGLE(BlendFuncSeparatei)
-+#define glBlendFuncSeparateIndexedAMD         MANGLE(BlendFuncSeparateIndexedAMD)
- #define glBlendFuncSeparateINGR               MANGLE(BlendFuncSeparateINGR)
- #define glBlendFuncSeparate           MANGLE(BlendFuncSeparate)
- #define glBlitFramebufferEXT          MANGLE(BlitFramebufferEXT)
-@@ -148,6 +156,7 @@
- #define glClientActiveTexture         MANGLE(ClientActiveTexture)
- #define glClientActiveVertexStreamATI         MANGLE(ClientActiveVertexStreamATI)
- #define glClientAttribDefaultEXT              MANGLE(ClientAttribDefaultEXT)
-+#define glClientWaitSync              MANGLE(ClientWaitSync)
- #define glClipPlane           MANGLE(ClipPlane)
- #define glColor3b             MANGLE(Color3b)
- #define glColor3bv            MANGLE(Color3bv)
-@@ -320,6 +329,7 @@
- #define glDeleteRenderbuffersEXT              MANGLE(DeleteRenderbuffersEXT)
- #define glDeleteRenderbuffers         MANGLE(DeleteRenderbuffers)
- #define glDeleteShader                MANGLE(DeleteShader)
-+#define glDeleteSync          MANGLE(DeleteSync)
- #define glDeleteTexturesEXT           MANGLE(DeleteTexturesEXT)
- #define glDeleteTextures              MANGLE(DeleteTextures)
- #define glDeleteTransformFeedbacksNV          MANGLE(DeleteTransformFeedbacksNV)
-@@ -341,6 +351,7 @@
- #define glDisableIndexedEXT           MANGLE(DisableIndexedEXT)
- #define glDisable             MANGLE(Disable)
- #define glDisableVariantClientStateEXT                MANGLE(DisableVariantClientStateEXT)
-+#define glDisableVertexAttribAPPLE            MANGLE(DisableVertexAttribAPPLE)
- #define glDisableVertexAttribArrayARB         MANGLE(DisableVertexAttribArrayARB)
- #define glDisableVertexAttribArray            MANGLE(DisableVertexAttribArray)
- #define glDrawArraysEXT               MANGLE(DrawArraysEXT)
-@@ -354,7 +365,9 @@
- #define glDrawBuffers         MANGLE(DrawBuffers)
- #define glDrawElementArrayAPPLE               MANGLE(DrawElementArrayAPPLE)
- #define glDrawElementArrayATI         MANGLE(DrawElementArrayATI)
-+#define glDrawElementsBaseVertex              MANGLE(DrawElementsBaseVertex)
- #define glDrawElementsInstancedARB            MANGLE(DrawElementsInstancedARB)
-+#define glDrawElementsInstancedBaseVertex             MANGLE(DrawElementsInstancedBaseVertex)
- #define glDrawElementsInstancedEXT            MANGLE(DrawElementsInstancedEXT)
- #define glDrawElementsInstanced               MANGLE(DrawElementsInstanced)
- #define glDrawElements                MANGLE(DrawElements)
-@@ -362,6 +375,7 @@
- #define glDrawPixels          MANGLE(DrawPixels)
- #define glDrawRangeElementArrayAPPLE          MANGLE(DrawRangeElementArrayAPPLE)
- #define glDrawRangeElementArrayATI            MANGLE(DrawRangeElementArrayATI)
-+#define glDrawRangeElementsBaseVertex         MANGLE(DrawRangeElementsBaseVertex)
- #define glDrawRangeElementsEXT                MANGLE(DrawRangeElementsEXT)
- #define glDrawRangeElements           MANGLE(DrawRangeElements)
- #define glDrawTransformFeedbackNV             MANGLE(DrawTransformFeedbackNV)
-@@ -378,6 +392,7 @@
- #define glEnableIndexedEXT            MANGLE(EnableIndexedEXT)
- #define glEnable              MANGLE(Enable)
- #define glEnableVariantClientStateEXT         MANGLE(EnableVariantClientStateEXT)
-+#define glEnableVertexAttribAPPLE             MANGLE(EnableVertexAttribAPPLE)
- #define glEnableVertexAttribArrayARB          MANGLE(EnableVertexAttribArrayARB)
- #define glEnableVertexAttribArray             MANGLE(EnableVertexAttribArray)
- #define glEndConditionalRender                MANGLE(EndConditionalRender)
-@@ -409,6 +424,7 @@
- #define glExecuteProgramNV            MANGLE(ExecuteProgramNV)
- #define glExtractComponentEXT         MANGLE(ExtractComponentEXT)
- #define glFeedbackBuffer              MANGLE(FeedbackBuffer)
-+#define glFenceSync           MANGLE(FenceSync)
- #define glFinalCombinerInputNV                MANGLE(FinalCombinerInputNV)
- #define glFinishAsyncSGIX             MANGLE(FinishAsyncSGIX)
- #define glFinishFenceAPPLE            MANGLE(FinishFenceAPPLE)
-@@ -469,9 +485,11 @@
- #define glFramebufferTextureEXT               MANGLE(FramebufferTextureEXT)
- #define glFramebufferTextureFaceARB           MANGLE(FramebufferTextureFaceARB)
- #define glFramebufferTextureFaceEXT           MANGLE(FramebufferTextureFaceEXT)
-+#define glFramebufferTextureFace              MANGLE(FramebufferTextureFace)
- #define glFramebufferTextureLayerARB          MANGLE(FramebufferTextureLayerARB)
- #define glFramebufferTextureLayerEXT          MANGLE(FramebufferTextureLayerEXT)
- #define glFramebufferTextureLayer             MANGLE(FramebufferTextureLayer)
-+#define glFramebufferTexture          MANGLE(FramebufferTexture)
- #define glFrameTerminatorGREMEDY              MANGLE(FrameTerminatorGREMEDY)
- #define glFrameZoomSGIX               MANGLE(FrameZoomSGIX)
- #define glFreeObjectBufferATI         MANGLE(FreeObjectBufferATI)
-@@ -523,6 +541,7 @@
- #define glGetBooleanIndexedvEXT               MANGLE(GetBooleanIndexedvEXT)
- #define glGetBooleani_v               MANGLE(GetBooleani_v)
- #define glGetBooleanv         MANGLE(GetBooleanv)
-+#define glGetBufferParameteri64v              MANGLE(GetBufferParameteri64v)
- #define glGetBufferParameterivARB             MANGLE(GetBufferParameterivARB)
- #define glGetBufferParameteriv                MANGLE(GetBufferParameteriv)
- #define glGetBufferPointervARB                MANGLE(GetBufferPointervARB)
-@@ -586,6 +605,8 @@
- #define glGetImageTransformParameterivHP              MANGLE(GetImageTransformParameterivHP)
- #define glGetInfoLogARB               MANGLE(GetInfoLogARB)
- #define glGetInstrumentsSGIX          MANGLE(GetInstrumentsSGIX)
-+#define glGetInteger64i_v             MANGLE(GetInteger64i_v)
-+#define glGetInteger64v               MANGLE(GetInteger64v)
- #define glGetIntegerIndexedvEXT               MANGLE(GetIntegerIndexedvEXT)
- #define glGetIntegeri_v               MANGLE(GetIntegeri_v)
- #define glGetIntegerv         MANGLE(GetIntegerv)
-@@ -615,6 +636,7 @@
- #define glGetMinmaxParameterfv                MANGLE(GetMinmaxParameterfv)
- #define glGetMinmaxParameterivEXT             MANGLE(GetMinmaxParameterivEXT)
- #define glGetMinmaxParameteriv                MANGLE(GetMinmaxParameteriv)
-+#define glGetMultisamplefv            MANGLE(GetMultisamplefv)
- #define glGetMultisamplefvNV          MANGLE(GetMultisamplefvNV)
- #define glGetMultiTexEnvfvEXT         MANGLE(GetMultiTexEnvfvEXT)
- #define glGetMultiTexEnvivEXT         MANGLE(GetMultiTexEnvivEXT)
-@@ -642,6 +664,7 @@
- #define glGetObjectBufferfvATI                MANGLE(GetObjectBufferfvATI)
- #define glGetObjectBufferivATI                MANGLE(GetObjectBufferivATI)
- #define glGetObjectParameterfvARB             MANGLE(GetObjectParameterfvARB)
-+#define glGetObjectParameterivAPPLE           MANGLE(GetObjectParameterivAPPLE)
- #define glGetObjectParameterivARB             MANGLE(GetObjectParameterivARB)
- #define glGetOcclusionQueryivNV               MANGLE(GetOcclusionQueryivNV)
- #define glGetOcclusionQueryuivNV              MANGLE(GetOcclusionQueryuivNV)
-@@ -698,6 +721,7 @@
- #define glGetSharpenTexFuncSGIS               MANGLE(GetSharpenTexFuncSGIS)
- #define glGetStringi          MANGLE(GetStringi)
- #define glGetString           MANGLE(GetString)
-+#define glGetSynciv           MANGLE(GetSynciv)
- #define glGetTexBumpParameterfvATI            MANGLE(GetTexBumpParameterfvATI)
- #define glGetTexBumpParameterivATI            MANGLE(GetTexBumpParameterivATI)
- #define glGetTexEnvfv         MANGLE(GetTexEnvfv)
-@@ -715,6 +739,7 @@
- #define glGetTexParameterIuivEXT              MANGLE(GetTexParameterIuivEXT)
- #define glGetTexParameterIuiv         MANGLE(GetTexParameterIuiv)
- #define glGetTexParameteriv           MANGLE(GetTexParameteriv)
-+#define glGetTexParameterPointervAPPLE                MANGLE(GetTexParameterPointervAPPLE)
- #define glGetTextureImageEXT          MANGLE(GetTextureImageEXT)
- #define glGetTextureLevelParameterfvEXT               MANGLE(GetTextureLevelParameterfvEXT)
- #define glGetTextureLevelParameterivEXT               MANGLE(GetTextureLevelParameterivEXT)
-@@ -825,12 +850,14 @@
- #define glIsRenderbufferEXT           MANGLE(IsRenderbufferEXT)
- #define glIsRenderbuffer              MANGLE(IsRenderbuffer)
- #define glIsShader            MANGLE(IsShader)
-+#define glIsSync              MANGLE(IsSync)
- #define glIsTextureEXT                MANGLE(IsTextureEXT)
- #define glIsTexture           MANGLE(IsTexture)
- #define glIsTransformFeedbackNV               MANGLE(IsTransformFeedbackNV)
- #define glIsVariantEnabledEXT         MANGLE(IsVariantEnabledEXT)
- #define glIsVertexArrayAPPLE          MANGLE(IsVertexArrayAPPLE)
- #define glIsVertexArray               MANGLE(IsVertexArray)
-+#define glIsVertexAttribEnabledAPPLE          MANGLE(IsVertexAttribEnabledAPPLE)
- #define glLightEnviSGIX               MANGLE(LightEnviSGIX)
- #define glLightf              MANGLE(Lightf)
- #define glLightfv             MANGLE(Lightfv)
-@@ -877,6 +904,10 @@
- #define glMapObjectBufferATI          MANGLE(MapObjectBufferATI)
- #define glMapParameterfvNV            MANGLE(MapParameterfvNV)
- #define glMapParameterivNV            MANGLE(MapParameterivNV)
-+#define glMapVertexAttrib1dAPPLE              MANGLE(MapVertexAttrib1dAPPLE)
-+#define glMapVertexAttrib1fAPPLE              MANGLE(MapVertexAttrib1fAPPLE)
-+#define glMapVertexAttrib2dAPPLE              MANGLE(MapVertexAttrib2dAPPLE)
-+#define glMapVertexAttrib2fAPPLE              MANGLE(MapVertexAttrib2fAPPLE)
- #define glMaterialf           MANGLE(Materialf)
- #define glMaterialfv          MANGLE(Materialfv)
- #define glMateriali           MANGLE(Materiali)
-@@ -907,9 +938,11 @@
- #define glMatrixTranslatefEXT         MANGLE(MatrixTranslatefEXT)
- #define glMinmaxEXT           MANGLE(MinmaxEXT)
- #define glMinmax              MANGLE(Minmax)
-+#define glMinSampleShading            MANGLE(MinSampleShading)
- #define glMultiDrawArraysEXT          MANGLE(MultiDrawArraysEXT)
- #define glMultiDrawArrays             MANGLE(MultiDrawArrays)
- #define glMultiDrawElementArrayAPPLE          MANGLE(MultiDrawElementArrayAPPLE)
-+#define glMultiDrawElementsBaseVertex         MANGLE(MultiDrawElementsBaseVertex)
- #define glMultiDrawElementsEXT                MANGLE(MultiDrawElementsEXT)
- #define glMultiDrawElements           MANGLE(MultiDrawElements)
- #define glMultiDrawRangeElementArrayAPPLE             MANGLE(MultiDrawRangeElementArrayAPPLE)
-@@ -1072,6 +1105,8 @@
- #define glNormalStream3ivATI          MANGLE(NormalStream3ivATI)
- #define glNormalStream3sATI           MANGLE(NormalStream3sATI)
- #define glNormalStream3svATI          MANGLE(NormalStream3svATI)
-+#define glObjectPurgeableAPPLE                MANGLE(ObjectPurgeableAPPLE)
-+#define glObjectUnpurgeableAPPLE              MANGLE(ObjectUnpurgeableAPPLE)
- #define glOrtho               MANGLE(Ortho)
- #define glPassTexCoordATI             MANGLE(PassTexCoordATI)
- #define glPassThrough         MANGLE(PassThrough)
-@@ -1162,6 +1197,7 @@
- #define glProgramParameter4fvNV               MANGLE(ProgramParameter4fvNV)
- #define glProgramParameteriARB                MANGLE(ProgramParameteriARB)
- #define glProgramParameteriEXT                MANGLE(ProgramParameteriEXT)
-+#define glProgramParameteri           MANGLE(ProgramParameteri)
- #define glProgramParameters4dvNV              MANGLE(ProgramParameters4dvNV)
- #define glProgramParameters4fvNV              MANGLE(ProgramParameters4fvNV)
- #define glProgramStringARB            MANGLE(ProgramStringARB)
-@@ -1200,6 +1236,7 @@
- #define glProgramUniformMatrix4x3fvEXT                MANGLE(ProgramUniformMatrix4x3fvEXT)
- #define glProgramVertexLimitNV                MANGLE(ProgramVertexLimitNV)
- #define glProvokingVertexEXT          MANGLE(ProvokingVertexEXT)
-+#define glProvokingVertex             MANGLE(ProvokingVertex)
- #define glPushAttrib          MANGLE(PushAttrib)
- #define glPushClientAttribDefaultEXT          MANGLE(PushClientAttribDefaultEXT)
- #define glPushClientAttrib            MANGLE(PushClientAttrib)
-@@ -1283,6 +1320,7 @@
- #define glSampleCoverage              MANGLE(SampleCoverage)
- #define glSampleMapATI                MANGLE(SampleMapATI)
- #define glSampleMaskEXT               MANGLE(SampleMaskEXT)
-+#define glSampleMaski         MANGLE(SampleMaski)
- #define glSampleMaskIndexedNV         MANGLE(SampleMaskIndexedNV)
- #define glSampleMaskSGIS              MANGLE(SampleMaskSGIS)
- #define glSamplePatternEXT            MANGLE(SamplePatternEXT)
-@@ -1454,8 +1492,10 @@
- #define glTexGeniv            MANGLE(TexGeniv)
- #define glTexImage1D          MANGLE(TexImage1D)
- #define glTexImage2D          MANGLE(TexImage2D)
-+#define glTexImage2DMultisample               MANGLE(TexImage2DMultisample)
- #define glTexImage3DEXT               MANGLE(TexImage3DEXT)
- #define glTexImage3D          MANGLE(TexImage3D)
-+#define glTexImage3DMultisample               MANGLE(TexImage3DMultisample)
- #define glTexImage4DSGIS              MANGLE(TexImage4DSGIS)
- #define glTexParameterf               MANGLE(TexParameterf)
- #define glTexParameterfv              MANGLE(TexParameterfv)
-@@ -1487,6 +1527,7 @@
- #define glTextureParameterIivEXT              MANGLE(TextureParameterIivEXT)
- #define glTextureParameterIuivEXT             MANGLE(TextureParameterIuivEXT)
- #define glTextureParameterivEXT               MANGLE(TextureParameterivEXT)
-+#define glTextureRangeAPPLE           MANGLE(TextureRangeAPPLE)
- #define glTextureRenderbufferEXT              MANGLE(TextureRenderbufferEXT)
- #define glTextureSubImage1DEXT                MANGLE(TextureSubImage1DEXT)
- #define glTextureSubImage2DEXT                MANGLE(TextureSubImage2DEXT)
-@@ -1828,6 +1869,7 @@
- #define glVertexWeighthvNV            MANGLE(VertexWeighthvNV)
- #define glVertexWeightPointerEXT              MANGLE(VertexWeightPointerEXT)
- #define glViewport            MANGLE(Viewport)
-+#define glWaitSync            MANGLE(WaitSync)
- #define glWeightbvARB         MANGLE(WeightbvARB)
- #define glWeightdvARB         MANGLE(WeightdvARB)
- #define glWeightfvARB         MANGLE(WeightfvARB)
-diff --git a/progs/glsl/skinning.c b/progs/glsl/skinning.c
-index 65ba983..2b96f31 100644
---- a/progs/glsl/skinning.c
-+++ b/progs/glsl/skinning.c
-@@ -16,6 +16,9 @@
- #include <GL/glut.h>
- #include "shaderutil.h"
-+#ifndef M_PI
-+#define M_PI 3.1415926535
-+#endif
- static char *FragProgFile = "skinning.frag";
- static char *VertProgFile = "skinning.vert";
-diff --git a/progs/glsl/texaaline.c b/progs/glsl/texaaline.c
-index 7a5ac40..2e4f932 100644
---- a/progs/glsl/texaaline.c
-+++ b/progs/glsl/texaaline.c
-@@ -14,6 +14,9 @@
- #include <GL/glew.h>
- #include <GL/glut.h>
-+#ifndef M_PI
-+#define M_PI 3.1415926535
-+#endif
- static GLint WinWidth = 300, WinHeight = 300;
- static GLint win = 0;
-diff --git a/progs/glsl/twoside.c b/progs/glsl/twoside.c
-index a57484f..ce155d6 100644
---- a/progs/glsl/twoside.c
-+++ b/progs/glsl/twoside.c
-@@ -16,6 +16,9 @@
- #include <GL/glut.h>
- #include "shaderutil.h"
-+#ifndef M_PI
-+#define M_PI 3.1415926535
-+#endif
- static GLint WinWidth = 300, WinHeight = 300;
- static char *FragProgFile = NULL;
-diff --git a/progs/xdemos/pbdemo.c b/progs/xdemos/pbdemo.c
-index 7db0017..2573209 100644
---- a/progs/xdemos/pbdemo.c
-+++ b/progs/xdemos/pbdemo.c
-@@ -143,7 +143,7 @@ MakePbuffer( Display *dpy, int screen, int width, int height )
-       /* Create the pbuffer using first fbConfig in the list that works. */
-       for (i=0;i<nConfigs;i++) {
--         pBuffer = CreatePbuffer(dpy, screen, fbConfigs[i], width, height, preserve, largest);
-+         pBuffer = CreatePbuffer(dpy, screen, fbConfigs[i], width, height, largest, preserve);
-          if (pBuffer) {
-             gFBconfig = fbConfigs[i];
-             gWidth = width;
-@@ -210,6 +210,21 @@ Setup(int width, int height)
-       return 0;
-    }
-+   /* Test drawable queries */
-+   {
-+      unsigned int v;
-+      glXQueryDrawable( gDpy, gPBuffer, GLX_WIDTH, &v);
-+      printf("GLX_WIDTH = %u\n", v);
-+      glXQueryDrawable( gDpy, gPBuffer, GLX_HEIGHT, &v);
-+      printf("GLX_HEIGHT = %u\n", v);
-+      glXQueryDrawable( gDpy, gPBuffer, GLX_PRESERVED_CONTENTS, &v);
-+      printf("GLX_PRESERVED_CONTENTS = %u\n", v);
-+      glXQueryDrawable( gDpy, gPBuffer, GLX_LARGEST_PBUFFER, &v);
-+      printf("GLX_LARGEST_PBUFFER = %u\n", v);
-+      glXQueryDrawable( gDpy, gPBuffer, GLX_FBCONFIG_ID, &v);
-+      printf("GLX_FBCONFIG_ID = %u\n", v);
-+   }
-+
-    /* Get corresponding XVisualInfo */
-    visInfo = GetVisualFromFBConfig(gDpy, gScreen, gFBconfig);
-    if (!visInfo) {
-diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c
-index 36c882a..4f13b3e 100644
---- a/src/gallium/auxiliary/cso_cache/cso_context.c
-+++ b/src/gallium/auxiliary/cso_cache/cso_context.c
-@@ -268,7 +268,7 @@ void cso_release_all( struct cso_context *ctx )
- void cso_destroy_context( struct cso_context *ctx )
- {
-    if (ctx) {
--      //cso_release_all( ctx );
-+      /*cso_release_all( ctx );*/
-       FREE( ctx );
-    }
- }
-diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
-index 44147ae..734c05f 100644
---- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
-+++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
-@@ -212,17 +212,10 @@ static void fse_prepare( struct draw_pt_middle_end *middle,
-       struct draw_vertex_shader *vs = draw->vs.vertex_shader;
-       vs->prepare(vs, draw);
-    }
--   
--
--   //return TRUE;
- }
--
--
--
--
- static void fse_run_linear( struct draw_pt_middle_end *middle, 
-                             unsigned start, 
-                             unsigned count )
-diff --git a/src/gallium/auxiliary/draw/draw_pt_post_vs.c b/src/gallium/auxiliary/draw/draw_pt_post_vs.c
-index 00d7197..78953bc 100644
---- a/src/gallium/auxiliary/draw/draw_pt_post_vs.c
-+++ b/src/gallium/auxiliary/draw/draw_pt_post_vs.c
-@@ -210,7 +210,7 @@ void draw_pt_post_vs_prepare( struct pt_post_vs *pvs,
-        pvs->run = post_vs_viewport;
-    }
-    else {
--      //if (opengl) 
-+      /* if (opengl) */
-       pvs->run = post_vs_cliptest_viewport_gl;
-    }
- }
-diff --git a/src/gallium/auxiliary/draw/draw_vs_aos.c b/src/gallium/auxiliary/draw/draw_vs_aos.c
-index 62e04a6..645d7cc 100644
---- a/src/gallium/auxiliary/draw/draw_vs_aos.c
-+++ b/src/gallium/auxiliary/draw/draw_vs_aos.c
-@@ -891,7 +891,7 @@ static void x87_emit_ex2( struct aos_compilation *cp )
-    struct x86_reg st1 = x86_make_reg(file_x87, 1);
-    int stack = cp->func->x87_stack;
--//   set_fpu_round_neg_inf( cp );
-+   /* set_fpu_round_neg_inf( cp ); */
-    x87_fld(cp->func, st0);      /* a a */
-    x87_fprndint( cp->func );  /* int(a) a*/
-@@ -1759,14 +1759,14 @@ emit_instruction( struct aos_compilation *cp,
-       return emit_SUB(cp, inst);
-  
-    case TGSI_OPCODE_LRP:
--//      return emit_LERP(cp, inst);
-+      /*return emit_LERP(cp, inst);*/
-       return FALSE;
-    case TGSI_OPCODE_FRC:
-       return emit_FRC(cp, inst);
-    case TGSI_OPCODE_CLAMP:
--//      return emit_CLAMP(cp, inst);
-+      /*return emit_CLAMP(cp, inst);*/
-       return FALSE;
-    case TGSI_OPCODE_FLR:
-diff --git a/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c b/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
-index 109ac7c..0d30363 100644
---- a/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
-+++ b/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
-@@ -584,7 +584,7 @@ fenced_buffer_list_destroy(struct fenced_buffer_list *fenced_list)
-    }
- #ifdef DEBUG
--   //assert(!fenced_list->numUnfenced);
-+   /*assert(!fenced_list->numUnfenced);*/
- #endif
-       
-    pipe_mutex_unlock(fenced_list->mutex);
-diff --git a/src/gallium/auxiliary/translate/translate_generic.c b/src/gallium/auxiliary/translate/translate_generic.c
-index 8d39b64..266e7ee 100644
---- a/src/gallium/auxiliary/translate/translate_generic.c
-+++ b/src/gallium/auxiliary/translate/translate_generic.c
-@@ -217,7 +217,7 @@ ATTRIB( R8G8_SNORM,      2, char, FROM_8_SNORM, TO_8_SNORM )
- ATTRIB( R8_SNORM,        1, char, FROM_8_SNORM, TO_8_SNORM )
- ATTRIB( A8R8G8B8_UNORM,       4, ubyte, FROM_8_UNORM, TO_8_UNORM )
--//ATTRIB( R8G8B8A8_UNORM,       4, ubyte, FROM_8_UNORM, TO_8_UNORM )
-+/*ATTRIB( R8G8B8A8_UNORM,       4, ubyte, FROM_8_UNORM, TO_8_UNORM )*/
- ATTRIB( R32G32B32A32_FIXED,   4, int, FROM_32_FIXED, TO_32_FIXED )
- ATTRIB( R32G32B32_FIXED,      3, int, FROM_32_FIXED, TO_32_FIXED )
-diff --git a/src/gallium/auxiliary/util/u_cpu_detect.c b/src/gallium/auxiliary/util/u_cpu_detect.c
-index d9f2f8f..f78706f 100644
---- a/src/gallium/auxiliary/util/u_cpu_detect.c
-+++ b/src/gallium/auxiliary/util/u_cpu_detect.c
-@@ -268,7 +268,7 @@ static void check_os_katmai_support(void)
-        * and therefore to be safe I'm going to leave this test in here.
-        */
-       if (__cpu_detect_caps.hasSSE) {
--              //      test_os_katmai_exception_support();
-+           /* test_os_katmai_exception_support(); */
-       }
-       /* Restore the original signal handlers.
-diff --git a/src/gallium/auxiliary/util/u_debug_profile.c b/src/gallium/auxiliary/util/u_debug_profile.c
-index 6d8b244..d765b50 100644
---- a/src/gallium/auxiliary/util/u_debug_profile.c
-+++ b/src/gallium/auxiliary/util/u_debug_profile.c
-@@ -254,7 +254,7 @@ debug_profile_start(void)
- {
-    WCHAR *p;
--   // increment starting from the less significant digit
-+   /* increment starting from the less significant digit */
-    p = &wFileName[14];
-    while(1) {
-       if(*p == '9') {
-diff --git a/src/gallium/auxiliary/util/u_debug_symbol.c b/src/gallium/auxiliary/util/u_debug_symbol.c
-index 811931f..417d0cf 100644
---- a/src/gallium/auxiliary/util/u_debug_symbol.c
-+++ b/src/gallium/auxiliary/util/u_debug_symbol.c
-@@ -214,7 +214,7 @@ debug_symbol_print_imagehlp(const void *addr)
-    HANDLE hProcess;
-    BYTE symbolBuffer[1024];
-    PIMAGEHLP_SYMBOL pSymbol = (PIMAGEHLP_SYMBOL) symbolBuffer;
--   DWORD dwDisplacement = 0;  // Displacement of the input address, relative to the start of the symbol
-+   DWORD dwDisplacement = 0;  /* Displacement of the input address, relative to the start of the symbol */
-    hProcess = GetCurrentProcess();
-diff --git a/src/gallium/auxiliary/util/u_gen_mipmap.c b/src/gallium/auxiliary/util/u_gen_mipmap.c
-index 4e3d35f..aa823aa 100644
---- a/src/gallium/auxiliary/util/u_gen_mipmap.c
-+++ b/src/gallium/auxiliary/util/u_gen_mipmap.c
-@@ -1427,6 +1427,7 @@ set_vertex_data(struct gen_mipmap_state *ctx,
-             rz = -1.0f;
-             break;
-          default:
-+            rx = ry = rz = 0.0f;
-             assert(0);
-          }
-diff --git a/src/gallium/drivers/softpipe/sp_context.c b/src/gallium/drivers/softpipe/sp_context.c
-index 86df320..b4650c0 100644
---- a/src/gallium/drivers/softpipe/sp_context.c
-+++ b/src/gallium/drivers/softpipe/sp_context.c
-@@ -105,12 +105,17 @@ static void softpipe_destroy( struct pipe_context *pipe )
-       softpipe->quad[i].output->destroy( softpipe->quad[i].output );
-    }
--   for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++)
-+   for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {
-       sp_destroy_tile_cache(softpipe->cbuf_cache[i]);
-+      pipe_surface_reference(&softpipe->framebuffer.cbufs[i], NULL);
-+   }
-    sp_destroy_tile_cache(softpipe->zsbuf_cache);
-+   pipe_surface_reference(&softpipe->framebuffer.zsbuf, NULL);
--   for (i = 0; i < PIPE_MAX_SAMPLERS; i++)
-+   for (i = 0; i < PIPE_MAX_SAMPLERS; i++) {
-       sp_destroy_tile_cache(softpipe->tex_cache[i]);
-+      pipe_texture_reference(&softpipe->texture[i], NULL);
-+   }
-    for (i = 0; i < Elements(softpipe->constants); i++) {
-       if (softpipe->constants[i].buffer) {
-diff --git a/src/gallium/drivers/softpipe/sp_fs_sse.c b/src/gallium/drivers/softpipe/sp_fs_sse.c
-index f4fa090..31ccc3b 100644
---- a/src/gallium/drivers/softpipe/sp_fs_sse.c
-+++ b/src/gallium/drivers/softpipe/sp_fs_sse.c
-@@ -101,7 +101,7 @@ fs_sse_run( const struct sp_fragment_shader *base,
-                machine->Consts,
-                  (const float (*)[4])shader->immediates,
-                machine->InterpCoefs
--               //      , &machine->QuadPos
-+               /*, &machine->QuadPos*/
-       );
-    return ~(machine->Temps[TGSI_EXEC_TEMP_KILMASK_I].xyzw[TGSI_EXEC_TEMP_KILMASK_C].u[0]);
-diff --git a/src/gallium/drivers/softpipe/sp_state_surface.c b/src/gallium/drivers/softpipe/sp_state_surface.c
-index 7c06d86..181bff8 100644
---- a/src/gallium/drivers/softpipe/sp_state_surface.c
-+++ b/src/gallium/drivers/softpipe/sp_state_surface.c
-@@ -56,7 +56,7 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
-          sp_flush_tile_cache(sp, sp->cbuf_cache[i]);
-          /* assign new */
--         sp->framebuffer.cbufs[i] = fb->cbufs[i];
-+         pipe_surface_reference(&sp->framebuffer.cbufs[i], fb->cbufs[i]);
-          /* update cache */
-          sp_tile_cache_set_surface(sp->cbuf_cache[i], fb->cbufs[i]);
-@@ -71,7 +71,7 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
-       sp_flush_tile_cache(sp, sp->zsbuf_cache);
-       /* assign new */
--      sp->framebuffer.zsbuf = fb->zsbuf;
-+      pipe_surface_reference(&sp->framebuffer.zsbuf, fb->zsbuf);
-       /* update cache */
-       sp_tile_cache_set_surface(sp->zsbuf_cache, fb->zsbuf);
-diff --git a/src/gallium/drivers/softpipe/sp_tile_cache.c b/src/gallium/drivers/softpipe/sp_tile_cache.c
-index 461cbb9..5f7864e 100644
---- a/src/gallium/drivers/softpipe/sp_tile_cache.c
-+++ b/src/gallium/drivers/softpipe/sp_tile_cache.c
-@@ -130,6 +130,11 @@ sp_create_tile_cache( struct pipe_screen *screen )
-          tc->entries[pos].x =
-          tc->entries[pos].y = -1;
-       }
-+
-+#if TILE_CLEAR_OPTIMIZATION
-+      /* set flags to indicate all the tiles are cleared */
-+      memset(tc->clear_flags, 255, sizeof(tc->clear_flags));
-+#endif
-    }
-    return tc;
- }
-diff --git a/src/gallium/state_trackers/glx/xlib/glx_api.c b/src/gallium/state_trackers/glx/xlib/glx_api.c
-index d1a98f8..f2881b9 100644
---- a/src/gallium/state_trackers/glx/xlib/glx_api.c
-+++ b/src/gallium/state_trackers/glx/xlib/glx_api.c
-@@ -850,10 +850,10 @@ choose_visual( Display *dpy, int screen, const int *list, GLboolean fbConfig )
-             if (!fbConfig)
-                return NULL;
-             parselist++;
--            if (*parselist == GLX_RGBA_BIT) {
-+            if (*parselist & GLX_RGBA_BIT) {
-                rgb_flag = GL_TRUE;
-             }
--            else if (*parselist == GLX_COLOR_INDEX_BIT) {
-+            else if (*parselist & GLX_COLOR_INDEX_BIT) {
-                rgb_flag = GL_FALSE;
-             }
-             else if (*parselist == 0) {
-@@ -1309,13 +1309,17 @@ glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
- Bool
--glXQueryExtension( Display *dpy, int *errorb, int *event )
-+glXQueryExtension( Display *dpy, int *errorBase, int *eventBase )
- {
-+   int op, ev, err;
-    /* Mesa's GLX isn't really an X extension but we try to act like one. */
--   (void) dpy;
--   (void) errorb;
--   (void) event;
--   return True;
-+   if (!XQueryExtension(dpy, GLX_EXTENSION_NAME, &op, &ev, &err))
-+      ev = err = 0;
-+   if (errorBase)
-+      *errorBase = err;
-+   if (eventBase)
-+      *eventBase = ev;
-+   return True; /* we're faking GLX so always return success */
- }
-@@ -1990,32 +1994,42 @@ glXCreatePbuffer( Display *dpy, GLXFBConfig config,
-             break;
-          case GLX_PRESERVED_CONTENTS:
-             attrib++;
--            preserveContents = *attrib; /* ignored */
-+            preserveContents = *attrib;
-             break;
-          case GLX_LARGEST_PBUFFER:
-             attrib++;
--            useLargest = *attrib; /* ignored */
-+            useLargest = *attrib;
-             break;
-          default:
-             return 0;
-       }
-    }
--   /* not used at this time */
--   (void) useLargest;
--   (void) preserveContents;
--
-    if (width == 0 || height == 0)
-       return 0;
-+   if (width > MAX_WIDTH || height > MAX_HEIGHT) {
-+      /* If allocation would have failed and GLX_LARGEST_PBUFFER is set,
-+       * allocate the largest possible buffer.
-+       */
-+      if (useLargest) {
-+         width = MAX_WIDTH;
-+         height = MAX_HEIGHT;
-+      }
-+   }
-+
-    xmbuf = XMesaCreatePBuffer( xmvis, 0, width, height);
-    /* A GLXPbuffer handle must be an X Drawable because that's what
-     * glXMakeCurrent takes.
-     */
--   if (xmbuf)
-+   if (xmbuf) {
-+      xmbuf->largestPbuffer = useLargest;
-+      xmbuf->preservedContents = preserveContents;
-       return (GLXPbuffer) xmbuf->drawable;
--   else
-+   }
-+   else {
-       return 0;
-+   }
- }
-@@ -2033,22 +2047,26 @@ void
- glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
-                        unsigned int *value )
- {
-+   GLuint width, height;
-    XMesaBuffer xmbuf = XMesaFindBuffer(dpy, draw);
-    if (!xmbuf)
-       return;
-+   /* make sure buffer's dimensions are up to date */
-+   xmesa_get_window_size(dpy, xmbuf, &width, &height);
-+
-    switch (attribute) {
-       case GLX_WIDTH:
--         *value = xmesa_buffer_width(xmbuf);
-+         *value = width;
-          break;
-       case GLX_HEIGHT:
--         *value = xmesa_buffer_width(xmbuf);
-+         *value = height;
-          break;
-       case GLX_PRESERVED_CONTENTS:
--         *value = True;
-+         *value = xmbuf->preservedContents;
-          break;
-       case GLX_LARGEST_PBUFFER:
--         *value = xmesa_buffer_width(xmbuf) * xmesa_buffer_height(xmbuf);
-+         *value = xmbuf->largestPbuffer;
-          break;
-       case GLX_FBCONFIG_ID:
-          *value = xmbuf->xm_visual->visinfo->visualid;
-@@ -2120,9 +2138,9 @@ glXQueryContext( Display *dpy, GLXContext ctx, int attribute, int *value )
-       break;
-    case GLX_RENDER_TYPE:
-       if (xmctx->xm_visual->mesa_visual.rgbMode)
--         *value = GLX_RGBA_BIT;
-+         *value = GLX_RGBA_TYPE;
-       else
--         *value = GLX_COLOR_INDEX_BIT;
-+         *value = GLX_COLOR_INDEX_TYPE;
-       break;
-    case GLX_SCREEN:
-       *value = 0;
-diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c
-index 957002d..c76dfb3 100644
---- a/src/gallium/state_trackers/glx/xlib/xm_api.c
-+++ b/src/gallium/state_trackers/glx/xlib/xm_api.c
-@@ -228,7 +228,7 @@ get_drawable_size( Display *dpy, Drawable d, uint *width, uint *height )
-  * \param width  returns width in pixels
-  * \param height  returns height in pixels
-  */
--static void
-+void
- xmesa_get_window_size(Display *dpy, XMesaBuffer b,
-                       GLuint *width, GLuint *height)
- {
-diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.h b/src/gallium/state_trackers/glx/xlib/xm_api.h
-index ce97a3e..d24971c 100644
---- a/src/gallium/state_trackers/glx/xlib/xm_api.h
-+++ b/src/gallium/state_trackers/glx/xlib/xm_api.h
-@@ -323,6 +323,9 @@ struct xmesa_buffer {
-    Colormap cmap;             /* the X colormap */
-    BufferType type;             /* window, pixmap, pbuffer or glxwindow */
-+   GLboolean largestPbuffer;    /**< for pbuffers */
-+   GLboolean preservedContents; /**< for pbuffers */
-+
-    XImage *tempImage;
-    unsigned long selectedEvents;/* for pbuffers only */
-@@ -370,6 +373,10 @@ extern XMesaBuffer
- xmesa_find_buffer(Display *dpy, Colormap cmap, XMesaBuffer notThis);
- extern void
-+xmesa_get_window_size(Display *dpy, XMesaBuffer b,
-+                      GLuint *width, GLuint *height);
-+
-+extern void
- xmesa_check_and_update_buffer_size(XMesaContext xmctx, XMesaBuffer drawBuffer);
- extern void
-diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c
-index ea55cc4..cd4aede 100644
---- a/src/glx/x11/glxcmds.c
-+++ b/src/glx/x11/glxcmds.c
-@@ -398,6 +398,10 @@ CreateContext(Display * dpy, XVisualInfo * vis,
-                _XError(dpy, &error);
-                return None;
-             }
-+            if (renderType == 0) {
-+               /* Initialize renderType now */
-+               renderType = mode->rgbMode ? GLX_RGBA_TYPE : GLX_COLOR_INDEX_TYPE;
-+            }
-          }
-          else {
-             mode = fbconfig;
-@@ -484,6 +488,8 @@ CreateContext(Display * dpy, XVisualInfo * vis,
-       gc->imported = GL_TRUE;
-    }
-+   gc->renderType = renderType;
-+
-    return gc;
- }
-@@ -1575,7 +1581,7 @@ GLX_ALIAS(Display *, glXGetCurrentDisplayEXT, (void), (),
-  * This function dynamically determines whether to use the EXT_import_context
-  * version of the protocol or the GLX 1.3 version of the protocol.
-  */
--     static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
-+static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
- {
-    __GLXdisplayPrivate *priv = __glXInitialize(dpy);
-    xGLXQueryContextReply reply;
-@@ -1713,7 +1719,7 @@ GLX_ALIAS(int, glXQueryContextInfoEXT,
-           (Display * dpy, GLXContext ctx, int attribute, int *value),
-           (dpy, ctx, attribute, value), glXQueryContext)
--     PUBLIC GLXContextID glXGetContextIDEXT(const GLXContext ctx)
-+PUBLIC GLXContextID glXGetContextIDEXT(const GLXContext ctx)
- {
-    return ctx->xid;
- }
-@@ -2159,18 +2165,19 @@ GLX_ALIAS(int, glXGetFBConfigAttribSGIX,
-           (Display * dpy, GLXFBConfigSGIX config, int attribute, int *value),
-           (dpy, config, attribute, value), glXGetFBConfigAttrib)
--     PUBLIC GLX_ALIAS(GLXFBConfigSGIX *, glXChooseFBConfigSGIX,
--                      (Display * dpy, int screen, int *attrib_list,
--                       int *nelements), (dpy, screen, attrib_list, nelements),
--                      glXChooseFBConfig)
-+PUBLIC GLX_ALIAS(GLXFBConfigSGIX *, glXChooseFBConfigSGIX,
-+                 (Display * dpy, int screen, int *attrib_list,
-+                  int *nelements), (dpy, screen, attrib_list, nelements),
-+                 glXChooseFBConfig)
--     PUBLIC GLX_ALIAS(XVisualInfo *, glXGetVisualFromFBConfigSGIX,
--                      (Display * dpy, GLXFBConfigSGIX config),
--                      (dpy, config), glXGetVisualFromFBConfig)
-+PUBLIC GLX_ALIAS(XVisualInfo *, glXGetVisualFromFBConfigSGIX,
-+                 (Display * dpy, GLXFBConfigSGIX config),
-+                 (dpy, config), glXGetVisualFromFBConfig)
--     PUBLIC GLXPixmap glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
--                                                       GLXFBConfigSGIX config,
--                                                       Pixmap pixmap)
-+PUBLIC GLXPixmap
-+glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
-+                                 GLXFBConfigSGIX config,
-+                                 Pixmap pixmap)
- {
-    xGLXVendorPrivateWithReplyReq *vpreq;
-    xGLXCreateGLXPixmapWithConfigSGIXReq *req;
-diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
-index 2741a41..b6c6ef7 100644
---- a/src/mesa/drivers/common/meta.c
-+++ b/src/mesa/drivers/common/meta.c
-@@ -238,34 +238,10 @@ _mesa_meta_init(GLcontext *ctx)
- void
- _mesa_meta_free(GLcontext *ctx)
- {
--   struct gl_meta_state *meta = ctx->Meta;
--
--   if (_mesa_get_current_context()) {
--      /* if there's no current context, these textures, buffers, etc should
--       * still get freed by _mesa_free_context_data().
--       */
--
--      _mesa_DeleteTextures(1, &meta->TempTex.TexObj);
--
--      /* glBlitFramebuffer */
--      _mesa_DeleteBuffersARB(1, & meta->Blit.VBO);
--      _mesa_DeleteVertexArraysAPPLE(1, &meta->Blit.ArrayObj);
--      _mesa_DeletePrograms(1, &meta->Blit.DepthFP);
--
--      /* glClear */
--      _mesa_DeleteBuffersARB(1, & meta->Clear.VBO);
--      _mesa_DeleteVertexArraysAPPLE(1, &meta->Clear.ArrayObj);
--
--      /* glCopyPixels */
--      _mesa_DeleteBuffersARB(1, & meta->CopyPix.VBO);
--      _mesa_DeleteVertexArraysAPPLE(1, &meta->CopyPix.ArrayObj);
--
--      /* glDrawPixels */
--      _mesa_DeleteVertexArraysAPPLE(1, &meta->DrawPix.ArrayObj);
--      _mesa_DeletePrograms(1, &meta->DrawPix.DepthFP);
--      _mesa_DeletePrograms(1, &meta->DrawPix.StencilFP);
--   }
--
-+   /* Note: Any textures, VBOs, etc, that we allocate should get
-+    * freed by the normal context destruction code.  But this would be
-+    * the place to free other meta data someday.
-+    */
-    _mesa_free(ctx->Meta);
-    ctx->Meta = NULL;
- }
-diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h
-index 5335eac..d639656 100644
---- a/src/mesa/drivers/dri/i965/brw_state.h
-+++ b/src/mesa/drivers/dri/i965/brw_state.h
-@@ -151,6 +151,7 @@ void brw_state_cache_check_size( struct brw_context *brw );
- void brw_init_caches( struct brw_context *brw );
- void brw_destroy_caches( struct brw_context *brw );
-+void brw_state_cache_bo_delete(struct brw_cache *cache, dri_bo *bo);
- /***********************************************************************
-  * brw_state_batch.c
-diff --git a/src/mesa/drivers/dri/i965/brw_state_cache.c b/src/mesa/drivers/dri/i965/brw_state_cache.c
-index e40d7a0..f8e46aa 100644
---- a/src/mesa/drivers/dri/i965/brw_state_cache.c
-+++ b/src/mesa/drivers/dri/i965/brw_state_cache.c
-@@ -517,6 +517,55 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache)
-    brw->state.dirty.cache |= ~0;
- }
-+/* Clear all entries from the cache that point to the given bo.
-+ *
-+ * This lets us release memory for reuse earlier for known-dead buffers,
-+ * at the cost of walking the entire hash table.
-+ */
-+void
-+brw_state_cache_bo_delete(struct brw_cache *cache, dri_bo *bo)
-+{
-+   struct brw_cache_item **prev;
-+   GLuint i;
-+
-+   if (INTEL_DEBUG & DEBUG_STATE)
-+      _mesa_printf("%s\n", __FUNCTION__);
-+
-+   for (i = 0; i < cache->size; i++) {
-+      for (prev = &cache->items[i]; *prev;) {
-+       struct brw_cache_item *c = *prev;
-+       int j;
-+
-+       for (j = 0; j < c->nr_reloc_bufs; j++) {
-+          if (c->reloc_bufs[j] == bo)
-+             break;
-+       }
-+
-+       if (j != c->nr_reloc_bufs) {
-+
-+          *prev = c->next;
-+
-+          for (j = 0; j < c->nr_reloc_bufs; j++)
-+             dri_bo_unreference(c->reloc_bufs[j]);
-+          dri_bo_unreference(c->bo);
-+          free((void *)c->key);
-+          free(c);
-+          cache->n_items--;
-+
-+          /* Delete up the tree.  Notably we're trying to get from
-+           * a request to delete the surface, to deleting the surface state
-+           * object, to deleting the binding table.  We're slack and restart
-+           * the deletion process when we do this because the other delete
-+           * may kill our *prev.
-+           */
-+          brw_state_cache_bo_delete(cache, c->bo);
-+          prev = &cache->items[i];
-+       } else {
-+          prev = &(*prev)->next;
-+       }
-+      }
-+   }
-+}
- void
- brw_state_cache_check_size(struct brw_context *brw)
-diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
-index fce42e9..c49f06e 100644
---- a/src/mesa/drivers/dri/intel/intel_context.c
-+++ b/src/mesa/drivers/dri/intel/intel_context.c
-@@ -993,41 +993,35 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,
-       _mesa_make_current(&intel->ctx, &intel_fb->Base, readFb);
--      /* The drawbuffer won't always be updated by _mesa_make_current: 
--       */
--      if (intel->ctx.DrawBuffer == &intel_fb->Base) {
--
--       if (intel->driReadDrawable != driReadPriv)
--          intel->driReadDrawable = driReadPriv;
--
--       if (intel->driDrawable != driDrawPriv) {
--          if (driDrawPriv->swap_interval == (unsigned)-1) {
--             int i;
--
--             driDrawPriv->vblFlags = (intel->intelScreen->irq_active != 0)
--                ? driGetDefaultVBlankFlags(&intel->optionCache)
--               : VBLANK_FLAG_NO_IRQ;
--
--             /* Prevent error printf if one crtc is disabled, this will
--              * be properly calculated in intelWindowMoved() next.
--              */
--              driDrawPriv->vblFlags = intelFixupVblank(intel, driDrawPriv);
--
--             (*psp->systemTime->getUST) (&intel_fb->swap_ust);
--             driDrawableInitVBlank(driDrawPriv);
--             intel_fb->vbl_waited = driDrawPriv->vblSeq;
--
--             for (i = 0; i < 2; i++) {
--                if (intel_fb->color_rb[i])
--                   intel_fb->color_rb[i]->vbl_pending = driDrawPriv->vblSeq;
--             }
--          }
--          intel->driDrawable = driDrawPriv;
--          intelWindowMoved(intel);
--       }
-+      intel->driReadDrawable = driReadPriv;
-+
-+      if (intel->driDrawable != driDrawPriv) {
-+         if (driDrawPriv->swap_interval == (unsigned)-1) {
-+            int i;
-+
-+            driDrawPriv->vblFlags = (intel->intelScreen->irq_active != 0)
-+               ? driGetDefaultVBlankFlags(&intel->optionCache)
-+               : VBLANK_FLAG_NO_IRQ;
--       intel_draw_buffer(&intel->ctx, &intel_fb->Base);
-+            /* Prevent error printf if one crtc is disabled, this will
-+             * be properly calculated in intelWindowMoved() next.
-+             */
-+            driDrawPriv->vblFlags = intelFixupVblank(intel, driDrawPriv);
-+
-+            (*psp->systemTime->getUST) (&intel_fb->swap_ust);
-+            driDrawableInitVBlank(driDrawPriv);
-+            intel_fb->vbl_waited = driDrawPriv->vblSeq;
-+
-+            for (i = 0; i < 2; i++) {
-+               if (intel_fb->color_rb[i])
-+                  intel_fb->color_rb[i]->vbl_pending = driDrawPriv->vblSeq;
-+            }
-+         }
-+         intel->driDrawable = driDrawPriv;
-+         intelWindowMoved(intel);
-       }
-+
-+      intel_draw_buffer(&intel->ctx, &intel_fb->Base);
-    }
-    else {
-       _mesa_make_current(NULL, NULL, NULL);
-diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
-index c985da5..4f5101a 100644
---- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
-+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
-@@ -29,6 +29,9 @@
- #include "intel_mipmap_tree.h"
- #include "intel_regions.h"
- #include "intel_chipset.h"
-+#ifndef I915
-+#include "brw_state.h"
-+#endif
- #include "main/enums.h"
- #define FILE_DEBUG_FLAG DEBUG_MIPTREE
-@@ -269,6 +272,19 @@ intel_miptree_release(struct intel_context *intel,
-       DBG("%s deleting %p\n", __FUNCTION__, *mt);
-+#ifndef I915
-+      /* Free up cached binding tables holding a reference on our buffer, to
-+       * avoid excessive memory consumption.
-+       *
-+       * This isn't as aggressive as we could be, as we'd like to do
-+       * it from any time we free the last ref on a region.  But intel_region.c
-+       * is context-agnostic.  Perhaps our constant state cache should be, as
-+       * well.
-+       */
-+      brw_state_cache_bo_delete(&brw_context(&intel->ctx)->surface_cache,
-+                              (*mt)->region->buffer);
-+#endif
-+
-       intel_region_release(&((*mt)->region));
-       for (i = 0; i < MAX_TEXTURE_LEVELS; i++)
-diff --git a/src/mesa/drivers/dri/intel/intel_pixel_read.c b/src/mesa/drivers/dri/intel/intel_pixel_read.c
-index 8713463..e036736 100644
---- a/src/mesa/drivers/dri/intel/intel_pixel_read.c
-+++ b/src/mesa/drivers/dri/intel/intel_pixel_read.c
-@@ -236,14 +236,14 @@ do_blit_readpixels(GLcontext * ctx,
-    intelFlush(&intel->ctx);
-    LOCK_HARDWARE(intel);
--   if (intel->driDrawable->numClipRects) {
-+   if (intel->driReadDrawable->numClipRects) {
-       GLboolean all = (width * height * src->cpp == dst->Base.Size &&
-                        x == 0 && dst_offset == 0);
-       dri_bo *dst_buffer = intel_bufferobj_buffer(intel, dst,
-                                                 all ? INTEL_WRITE_FULL :
-                                                 INTEL_WRITE_PART);
--      __DRIdrawablePrivate *dPriv = intel->driDrawable;
-+      __DRIdrawablePrivate *dPriv = intel->driReadDrawable;
-       int nbox = dPriv->numClipRects;
-       drm_clip_rect_t *box = dPriv->pClipRects;
-       drm_clip_rect_t rect;
-diff --git a/src/mesa/drivers/dri/intel/intel_tex_copy.c b/src/mesa/drivers/dri/intel/intel_tex_copy.c
-index 74f7f58..b241c11 100644
---- a/src/mesa/drivers/dri/intel/intel_tex_copy.c
-+++ b/src/mesa/drivers/dri/intel/intel_tex_copy.c
-@@ -135,7 +135,7 @@ do_copy_texsubimage(struct intel_context *intel,
-       if (ctx->ReadBuffer->Name == 0) {
-        /* reading from a window, adjust x, y */
--       __DRIdrawablePrivate *dPriv = intel->driDrawable;
-+       const __DRIdrawablePrivate *dPriv = intel->driReadDrawable;
-        y = dPriv->y + (dPriv->h - (y + height));
-        x += dPriv->x;
-diff --git a/src/mesa/drivers/dri/r200/r200_state.c b/src/mesa/drivers/dri/r200/r200_state.c
-index 76852e3..d28e96d 100644
---- a/src/mesa/drivers/dri/r200/r200_state.c
-+++ b/src/mesa/drivers/dri/r200/r200_state.c
-@@ -1578,13 +1578,6 @@ static void r200ClearStencil( GLcontext *ctx, GLint s )
-  * Window position and viewport transformation
-  */
--/*
-- * To correctly position primitives:
-- */
--#define SUBPIXEL_X 0.125
--#define SUBPIXEL_Y 0.125
--
--
- /**
-  * Called when window size or position changes or viewport or depth range
-  * state is changed.  We update the hardware viewport state here.
-@@ -1609,9 +1602,9 @@ void r200UpdateWindow( GLcontext *ctx )
-    }
-    float_ui32_type sx = { v[MAT_SX] };
--   float_ui32_type tx = { v[MAT_TX] + xoffset + SUBPIXEL_X };
-+   float_ui32_type tx = { v[MAT_TX] + xoffset };
-    float_ui32_type sy = { v[MAT_SY] * y_scale };
--   float_ui32_type ty = { (v[MAT_TY] * y_scale) + y_bias + SUBPIXEL_Y };
-+   float_ui32_type ty = { (v[MAT_TY] * y_scale) + y_bias };
-    float_ui32_type sz = { v[MAT_SZ] * depthScale };
-    float_ui32_type tz = { v[MAT_TZ] * depthScale };
-@@ -1680,8 +1673,8 @@ void r200UpdateViewportOffset( GLcontext *ctx )
-    float_ui32_type tx;
-    float_ui32_type ty;
--   tx.f = v[MAT_TX] + xoffset + SUBPIXEL_X;
--   ty.f = (- v[MAT_TY]) + yoffset + SUBPIXEL_Y;
-+   tx.f = v[MAT_TX] + xoffset;
-+   ty.f = (- v[MAT_TY]) + yoffset;
-    if ( rmesa->hw.vpt.cmd[VPT_SE_VPORT_XOFFSET] != tx.ui32 ||
-       rmesa->hw.vpt.cmd[VPT_SE_VPORT_YOFFSET] != ty.ui32 )
-diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c
-index 2ea1b82..9df3897 100644
---- a/src/mesa/drivers/dri/r300/r300_context.c
-+++ b/src/mesa/drivers/dri/r300/r300_context.c
-@@ -374,11 +374,21 @@ static void r300InitConstValues(GLcontext *ctx, radeonScreenPtr screen)
-       if (screen->chip_family >= CHIP_FAMILY_RV515) {
-               ctx->Const.FragmentProgram.MaxNativeTemps = R500_PFS_NUM_TEMP_REGS;
-               ctx->Const.FragmentProgram.MaxNativeAttribs = 11;       /* copy i915... */
--              ctx->Const.FragmentProgram.MaxNativeParameters = R500_PFS_NUM_CONST_REGS;
--              ctx->Const.FragmentProgram.MaxNativeAluInstructions = R500_PFS_MAX_INST;
--              ctx->Const.FragmentProgram.MaxNativeTexInstructions = R500_PFS_MAX_INST;
--              ctx->Const.FragmentProgram.MaxNativeInstructions = R500_PFS_MAX_INST;
--              ctx->Const.FragmentProgram.MaxNativeTexIndirections = R500_PFS_MAX_INST;
-+
-+              /* The hardware limits are higher than this,
-+               * but the non-KMS DRM interface artificially limits us
-+               * to this many instructions.
-+               *
-+               * We could of course work around it in the KMS path,
-+               * but it would be a mess, so it seems wiser
-+               * to leave it as is. Going forward, the Gallium driver
-+               * will not be subject to these limitations.
-+               */
-+              ctx->Const.FragmentProgram.MaxNativeParameters = 255;
-+              ctx->Const.FragmentProgram.MaxNativeAluInstructions = 255;
-+              ctx->Const.FragmentProgram.MaxNativeTexInstructions = 255;
-+              ctx->Const.FragmentProgram.MaxNativeInstructions = 255;
-+              ctx->Const.FragmentProgram.MaxNativeTexIndirections = 255;
-               ctx->Const.FragmentProgram.MaxNativeAddressRegs = 0;
-       } else {
-               ctx->Const.FragmentProgram.MaxNativeTemps = R300_PFS_NUM_TEMP_REGS;
-diff --git a/src/mesa/drivers/dri/r300/r300_fragprog_common.c b/src/mesa/drivers/dri/r300/r300_fragprog_common.c
-index 0bdc90b..70c9252 100644
---- a/src/mesa/drivers/dri/r300/r300_fragprog_common.c
-+++ b/src/mesa/drivers/dri/r300/r300_fragprog_common.c
-@@ -239,6 +239,19 @@ static void translate_fragment_program(GLcontext *ctx, struct r300_fragment_prog
-       rewriteFog(&compiler, fp);
-       r3xx_compile_fragment_program(&compiler);
-+
-+      if (compiler.is_r500) {
-+              /* We need to support the non-KMS DRM interface, which
-+               * artificially limits the number of instructions and
-+               * constants which are available to us.
-+               *
-+               * See also the comment in r300_context.c where we
-+               * set the MAX_NATIVE_xxx values.
-+               */
-+              if (fp->code.code.r500.inst_end >= 255 || fp->code.constants.Count > 255)
-+                      rc_error(&compiler.Base, "Program is too big (upgrade to r300g to avoid this limitation).\n");
-+      }
-+
-       fp->error = compiler.Base.Error;
-       fp->InputsRead = compiler.Base.Program.InputsRead;
-diff --git a/src/mesa/drivers/x11/fakeglx.c b/src/mesa/drivers/x11/fakeglx.c
-index 34e0b8b..5c0084f 100644
---- a/src/mesa/drivers/x11/fakeglx.c
-+++ b/src/mesa/drivers/x11/fakeglx.c
-@@ -1197,10 +1197,10 @@ choose_visual( Display *dpy, int screen, const int *list, GLboolean fbConfig )
-             if (!fbConfig)
-                return NULL;
-             parselist++;
--            if (*parselist == GLX_RGBA_BIT) {
-+            if (*parselist & GLX_RGBA_BIT) {
-                rgb_flag = GL_TRUE;
-             }
--            else if (*parselist == GLX_COLOR_INDEX_BIT) {
-+            else if (*parselist & GLX_COLOR_INDEX_BIT) {
-                rgb_flag = GL_FALSE;
-             }
-             else if (*parselist == 0) {
-@@ -1637,13 +1637,17 @@ Fake_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
- static Bool
--Fake_glXQueryExtension( Display *dpy, int *errorb, int *event )
-+Fake_glXQueryExtension( Display *dpy, int *errorBase, int *eventBase )
- {
-+   int op, ev, err;
-    /* Mesa's GLX isn't really an X extension but we try to act like one. */
--   (void) dpy;
--   (void) errorb;
--   (void) event;
--   return True;
-+   if (!XQueryExtension(dpy, GLX_EXTENSION_NAME, &op, &ev, &err))
-+      ev = err = 0;
-+   if (errorBase)
-+      *errorBase = err;
-+   if (eventBase)
-+      *eventBase = ev;
-+   return True; /* we're faking GLX so always return success */
- }
-@@ -2349,32 +2353,42 @@ Fake_glXCreatePbuffer( Display *dpy, GLXFBConfig config,
-             break;
-          case GLX_PRESERVED_CONTENTS:
-             attrib++;
--            preserveContents = *attrib; /* ignored */
-+            preserveContents = *attrib;
-             break;
-          case GLX_LARGEST_PBUFFER:
-             attrib++;
--            useLargest = *attrib; /* ignored */
-+            useLargest = *attrib;
-             break;
-          default:
-             return 0;
-       }
-    }
--   /* not used at this time */
--   (void) useLargest;
--   (void) preserveContents;
--
-    if (width == 0 || height == 0)
-       return 0;
-+   if (width > MAX_WIDTH || height > MAX_HEIGHT) {
-+      /* If allocation would have failed and GLX_LARGEST_PBUFFER is set,
-+       * allocate the largest possible buffer.
-+       */
-+      if (useLargest) {
-+         width = MAX_WIDTH;
-+         height = MAX_HEIGHT;
-+      }
-+   }
-+
-    xmbuf = XMesaCreatePBuffer( xmvis, 0, width, height);
-    /* A GLXPbuffer handle must be an X Drawable because that's what
-     * glXMakeCurrent takes.
-     */
--   if (xmbuf)
-+   if (xmbuf) {
-+      xmbuf->largestPbuffer = useLargest;
-+      xmbuf->preservedContents = preserveContents;
-       return (GLXPbuffer) xmbuf->frontxrb->pixmap;
--   else
-+   }
-+   else {
-       return 0;
-+   }
- }
-@@ -2396,6 +2410,9 @@ Fake_glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
-    if (!xmbuf)
-       return;
-+   /* make sure buffer's dimensions are up to date */
-+   xmesa_check_and_update_buffer_size(NULL, xmbuf);
-+
-    switch (attribute) {
-       case GLX_WIDTH:
-          *value = xmbuf->mesa_buffer.Width;
-@@ -2404,10 +2421,10 @@ Fake_glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
-          *value = xmbuf->mesa_buffer.Height;
-          break;
-       case GLX_PRESERVED_CONTENTS:
--         *value = True;
-+         *value = xmbuf->preservedContents;
-          break;
-       case GLX_LARGEST_PBUFFER:
--         *value = xmbuf->mesa_buffer.Width * xmbuf->mesa_buffer.Height;
-+         *value = xmbuf->largestPbuffer;
-          break;
-       case GLX_FBCONFIG_ID:
-          *value = xmbuf->xm_visual->visinfo->visualid;
-@@ -2477,9 +2494,9 @@ Fake_glXQueryContext( Display *dpy, GLXContext ctx, int attribute, int *value )
-       break;
-    case GLX_RENDER_TYPE:
-       if (xmctx->xm_visual->mesa_visual.rgbMode)
--         *value = GLX_RGBA_BIT;
-+         *value = GLX_RGBA_TYPE;
-       else
--         *value = GLX_COLOR_INDEX_BIT;
-+         *value = GLX_COLOR_INDEX_TYPE;
-       break;
-    case GLX_SCREEN:
-       *value = 0;
-@@ -2764,10 +2781,10 @@ Fake_glXQueryGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf, int attribute, un
-    switch (attribute) {
-       case GLX_PRESERVED_CONTENTS_SGIX:
--         *value = True;
-+         *value = xmbuf->preservedContents;
-          break;
-       case GLX_LARGEST_PBUFFER_SGIX:
--         *value = xmbuf->mesa_buffer.Width * xmbuf->mesa_buffer.Height;
-+         *value = xmbuf->largestPbuffer;
-          break;
-       case GLX_WIDTH_SGIX:
-          *value = xmbuf->mesa_buffer.Width;
-diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h
-index 25db558..3ffd766 100644
---- a/src/mesa/drivers/x11/xmesaP.h
-+++ b/src/mesa/drivers/x11/xmesaP.h
-@@ -212,6 +212,9 @@ struct xmesa_buffer {
-    XMesaDisplay *display;
-    BufferType type;             /* window, pixmap, pbuffer or glxwindow */
-+   GLboolean largestPbuffer;    /**< for pbuffers */
-+   GLboolean preservedContents; /**< for pbuffers */
-+
-    struct xmesa_renderbuffer *frontxrb; /* front color renderbuffer */
-    struct xmesa_renderbuffer *backxrb;  /* back color renderbuffer */
-diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
-index f6d4ac4..ac6540f 100644
---- a/src/mesa/main/context.c
-+++ b/src/mesa/main/context.c
-@@ -898,6 +898,7 @@ _mesa_initialize_context(GLcontext *ctx,
-       _mesa_free_shared_state(ctx, ctx->Shared);
-       if (ctx->Exec)
-          _mesa_free(ctx->Exec);
-+      return GL_FALSE;
-    }
- #if FEATURE_dispatch
-    _mesa_init_exec_table(ctx->Exec);
-diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c
-index b53c173..41a5b61 100644
---- a/src/mesa/main/dlist.c
-+++ b/src/mesa/main/dlist.c
-@@ -1956,6 +1956,9 @@ save_Fogiv(GLenum pname, const GLint *params)
-    case GL_FOG_END:
-    case GL_FOG_INDEX:
-       p[0] = (GLfloat) *params;
-+      p[1] = 0.0f;
-+      p[2] = 0.0f;
-+      p[3] = 0.0f;
-       break;
-    case GL_FOG_COLOR:
-       p[0] = INT_TO_FLOAT(params[0]);
-@@ -2244,6 +2247,9 @@ save_LightModeliv(GLenum pname, const GLint *params)
-    case GL_LIGHT_MODEL_TWO_SIDE:
-    case GL_LIGHT_MODEL_COLOR_CONTROL:
-       fparam[0] = (GLfloat) params[0];
-+      fparam[1] = 0.0F;
-+      fparam[2] = 0.0F;
-+      fparam[3] = 0.0F;
-       break;
-    default:
-       /* Error will be caught later in gl_LightModelfv */
-diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
-index baecbab..139e56a 100644
---- a/src/mesa/main/image.c
-+++ b/src/mesa/main/image.c
-@@ -5511,7 +5511,7 @@ _mesa_clip_drawpixels(const GLcontext *ctx,
-    }
-    if (*height <= 0)
--      return GL_TRUE;
-+      return GL_FALSE;
-    return GL_TRUE;
- }
-@@ -5564,7 +5564,7 @@ _mesa_clip_readpixels(const GLcontext *ctx,
-       *height -= (*srcY + *height - buffer->Height);
-    if (*height <= 0)
--      return GL_TRUE;
-+      return GL_FALSE;
-    return GL_TRUE;
- }
-diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c
-index 3dca09d..c3928fa 100644
---- a/src/mesa/main/mipmap.c
-+++ b/src/mesa/main/mipmap.c
-@@ -1501,8 +1501,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
-    GLuint comps;
-    ASSERT(texObj);
--   /* XXX choose cube map face here??? */
--   srcImage = texObj->Image[0][texObj->BaseLevel];
-+   srcImage = _mesa_select_tex_image(ctx, texObj, target, texObj->BaseLevel);
-    ASSERT(srcImage);
-    maxLevels = _mesa_max_texture_levels(ctx, texObj->Target);
-@@ -1510,7 +1509,9 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
-    /* Find convertFormat - the format that do_row() will process */
-    if (srcImage->IsCompressed) {
--      /* setup for compressed textures */
-+      /* setup for compressed textures - need to allocate temporary
-+       * image buffers to hold uncompressed images.
-+       */
-       GLuint row;
-       GLint  components, size;
-       GLchan *dst;
-@@ -1587,11 +1588,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
-                                          &dstWidth, &dstHeight, &dstDepth);
-       if (!nextLevel) {
-          /* all done */
--         if (srcImage->IsCompressed) {
--            _mesa_free((void *) srcData);
--            _mesa_free(dstData);
--         }
--         return;
-+         break;
-       }
-       /* get dest gl_texture_image */
-@@ -1682,6 +1679,12 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
-       }
-    } /* loop over mipmap levels */
-+
-+   if (srcImage->IsCompressed) {
-+      /* free uncompressed image buffers */
-+      _mesa_free((void *) srcData);
-+      _mesa_free(dstData);
-+   }
- }
-diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
-index d09c439..da55ac8 100644
---- a/src/mesa/main/texobj.c
-+++ b/src/mesa/main/texobj.c
-@@ -863,7 +863,7 @@ unbind_texobj_from_texunits(GLcontext *ctx, struct gl_texture_object *texObj)
-       for (tex = 0; tex < NUM_TEXTURE_TARGETS; tex++) {
-          if (texObj == unit->CurrentTex[tex]) {
-             _mesa_reference_texobj(&unit->CurrentTex[tex],
--                                   ctx->Shared->DefaultTex[TEXTURE_1D_INDEX]);
-+                                   ctx->Shared->DefaultTex[tex]);
-             ASSERT(unit->CurrentTex[tex]);
-             break;
-          }
-diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
-index 861c5f3..8292d43 100644
---- a/src/mesa/main/texstate.c
-+++ b/src/mesa/main/texstate.c
-@@ -99,16 +99,22 @@ _mesa_copy_texture_state( const GLcontext *src, GLcontext *dst )
-       dst->Texture.Unit[u].BumpTarget = src->Texture.Unit[u].BumpTarget;
-       COPY_4V(dst->Texture.Unit[u].RotMatrix, src->Texture.Unit[u].RotMatrix);
-+      /*
-+       * XXX strictly speaking, we should compare texture names/ids and
-+       * bind textures in the dest context according to id.  For now, only
-+       * copy bindings if the contexts share the same pool of textures to
-+       * avoid refcounting bugs.
-+       */
-+      if (dst->Shared == src->Shared) {
-+         /* copy texture object bindings, not contents of texture objects */
-+         _mesa_lock_context_textures(dst);
--      /* copy texture object bindings, not contents of texture objects */
--      _mesa_lock_context_textures(dst);
--
--      for (tex = 0; tex < NUM_TEXTURE_TARGETS; tex++) {
--         _mesa_reference_texobj(&dst->Texture.Unit[u].CurrentTex[tex],
--                                src->Texture.Unit[u].CurrentTex[tex]);
-+         for (tex = 0; tex < NUM_TEXTURE_TARGETS; tex++) {
-+            _mesa_reference_texobj(&dst->Texture.Unit[u].CurrentTex[tex],
-+                                   src->Texture.Unit[u].CurrentTex[tex]);
-+         }
-+         _mesa_unlock_context_textures(dst);
-       }
--
--      _mesa_unlock_context_textures(dst);
-    }
- }
-diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h
-index 0ccdbf9..f24e11c 100644
---- a/src/mesa/main/version.h
-+++ b/src/mesa/main/version.h
-@@ -1,6 +1,6 @@
- /*
-  * Mesa 3-D graphics library
-- * Version:  7.6
-+ * Version:  7.6.1
-  *
-  * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
-  * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
-@@ -31,8 +31,8 @@
- /* Mesa version */
- #define MESA_MAJOR 7
- #define MESA_MINOR 6
--#define MESA_PATCH 0
--#define MESA_VERSION_STRING "7.6"
-+#define MESA_PATCH 1
-+#define MESA_VERSION_STRING "7.6.1-devel"
- /* To make version comparison easy */
- #define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
-diff --git a/src/mesa/shader/prog_execute.c b/src/mesa/shader/prog_execute.c
-index 69b81e7..192d39a 100644
---- a/src/mesa/shader/prog_execute.c
-+++ b/src/mesa/shader/prog_execute.c
-@@ -939,7 +939,7 @@ _mesa_execute_program(GLcontext * ctx,
-           /* The fast LOG2 macro doesn't meet the precision requirements.
-            */
-             if (a[0] == 0.0F) {
--               val = 0.0F;
-+               val = -FLT_MAX;
-             }
-             else {
-                val = log(a[0]) * 1.442695F;
-diff --git a/src/mesa/shader/prog_optimize.c b/src/mesa/shader/prog_optimize.c
-index be90310..9d93748 100644
---- a/src/mesa/shader/prog_optimize.c
-+++ b/src/mesa/shader/prog_optimize.c
-@@ -217,6 +217,7 @@ _mesa_remove_dead_code(struct gl_program *prog)
-             if (inst->SrcReg[j].RelAddr) {
-                if (dbg)
-                   _mesa_printf("abort remove dead code (indirect temp)\n");
-+               _mesa_free(removeInst);
-                return;
-             }
-@@ -232,6 +233,7 @@ _mesa_remove_dead_code(struct gl_program *prog)
-          if (inst->DstReg.RelAddr) {
-             if (dbg)
-                _mesa_printf("abort remove dead code (indirect temp)\n");
-+            _mesa_free(removeInst);
-             return;
-          }
-@@ -422,6 +424,8 @@ _mesa_remove_extra_moves(struct gl_program *prog)
-    /* now remove the instructions which aren't needed */
-    rem = remove_instructions(prog, removeInst);
-+   _mesa_free(removeInst);
-+
-    if (dbg) {
-       _mesa_printf("Optimize: End remove extra moves.  %u instructions removed\n", rem);
-       /*_mesa_print_program(prog);*/
-diff --git a/src/mesa/shader/prog_parameter.h b/src/mesa/shader/prog_parameter.h
-index d1fcf47..699cb0c 100644
---- a/src/mesa/shader/prog_parameter.h
-+++ b/src/mesa/shader/prog_parameter.h
-@@ -56,7 +56,13 @@ struct gl_program_parameter
-    const char *Name;        /**< Null-terminated string */
-    gl_register_file Type;   /**< PROGRAM_NAMED_PARAM, CONSTANT or STATE_VAR */
-    GLenum DataType;         /**< GL_FLOAT, GL_FLOAT_VEC2, etc */
--   GLuint Size;             /**< Number of components (1..4) */
-+   /**
-+    * Number of components (1..4), or more.
-+    * If the number of components is greater than 4,
-+    * this parameter is part of a larger uniform like a GLSL matrix or array.
-+    * The next program parameter's Size will be Size-4 of this parameter.
-+    */
-+   GLuint Size;
-    GLboolean Used;          /**< Helper flag for GLSL uniform tracking */
-    GLboolean Initialized;   /**< Has the ParameterValue[] been set? */
-    GLbitfield Flags;        /**< Bitmask of PROG_PARAM_*_BIT */
-diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c
-index 178b7d0..b282d7a 100644
---- a/src/mesa/shader/shader_api.c
-+++ b/src/mesa/shader/shader_api.c
-@@ -1702,8 +1702,8 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program,
-          /* we'll ignore extra data below */
-       }
-       else {
--         /* non-array: count must be one */
--         if (count != 1) {
-+         /* non-array: count must be at most one; count == 0 is handled by the loop below */
-+         if (count > 1) {
-             _mesa_error(ctx, GL_INVALID_OPERATION,
-                         "glUniform(uniform is not an array)");
-             return;
-@@ -1880,20 +1880,27 @@ set_program_uniform_matrix(GLcontext *ctx, struct gl_program *program,
-                            GLboolean transpose, const GLfloat *values)
- {
-    GLuint mat, row, col;
--   GLuint dst = index + offset, src = 0;
-+   GLuint src = 0;
-+   const struct gl_program_parameter * param = &program->Parameters->Parameters[index];
-+   const GLint slots = (param->Size + 3) / 4;
-+   const GLint typeSize = sizeof_glsl_type(param->DataType);
-    GLint nr, nc;
-    /* check that the number of rows, columns is correct */
--   get_matrix_dims(program->Parameters->Parameters[index].DataType, &nr, &nc);
-+   get_matrix_dims(param->DataType, &nr, &nc);
-    if (rows != nr || cols != nc) {
-       _mesa_error(ctx, GL_INVALID_OPERATION,
-                   "glUniformMatrix(matrix size mismatch)");
-       return;
-    }
--   if (index + offset > program->Parameters->Size) {
--      /* out of bounds! */
--      return;
-+   if (param->Size <= typeSize) {
-+      /* non-array: count must be at most one; count == 0 is handled by the loop below */
-+      if (count > 1) {
-+         _mesa_error(ctx, GL_INVALID_OPERATION,
-+                     "glUniformMatrix(uniform is not an array)");
-+         return;
-+      }
-    }
-    /*
-@@ -1907,7 +1914,12 @@ set_program_uniform_matrix(GLcontext *ctx, struct gl_program *program,
-       /* each matrix: */
-       for (col = 0; col < cols; col++) {
--         GLfloat *v = program->Parameters->ParameterValues[dst];
-+         GLfloat *v;
-+         if (offset >= slots) {
-+            /* Ignore writes beyond the end of (the used part of) an array */
-+            return;
-+         }
-+         v = program->Parameters->ParameterValues[index + offset];
-          for (row = 0; row < rows; row++) {
-             if (transpose) {
-                v[row] = values[src + row * cols + col];
-@@ -1916,7 +1928,8 @@ set_program_uniform_matrix(GLcontext *ctx, struct gl_program *program,
-                v[row] = values[src + col * rows + row];
-             }
-          }
--         dst++;
-+
-+         offset++;
-       }
-       src += rows * cols;  /* next matrix */
-diff --git a/src/mesa/shader/slang/library/slang_common_builtin.gc b/src/mesa/shader/slang/library/slang_common_builtin.gc
-index 9764fc2..56de47e 100644
---- a/src/mesa/shader/slang/library/slang_common_builtin.gc
-+++ b/src/mesa/shader/slang/library/slang_common_builtin.gc
-@@ -602,42 +602,50 @@ vec4 exp2(const vec4 a)
- float sqrt(const float x)
- {
-+   const float nx = -x;
-    float r;
-    __asm float_rsq r, x;
--   __asm float_rcp __retVal, r;
--}
--
--vec2 sqrt(const vec2 v)
--{
--   float r;
--   __asm float_rsq r, v.x;
--   __asm float_rcp __retVal.x, r;
--   __asm float_rsq r, v.y;
--   __asm float_rcp __retVal.y, r;
--}
--
--vec3 sqrt(const vec3 v)
--{
--   float r;
--   __asm float_rsq r, v.x;
--   __asm float_rcp __retVal.x, r;
--   __asm float_rsq r, v.y;
--   __asm float_rcp __retVal.y, r;
--   __asm float_rsq r, v.z;
--   __asm float_rcp __retVal.z, r;
--}
--
--vec4 sqrt(const vec4 v)
--{
--   float r;
--   __asm float_rsq r, v.x;
--   __asm float_rcp __retVal.x, r;
--   __asm float_rsq r, v.y;
--   __asm float_rcp __retVal.y, r;
--   __asm float_rsq r, v.z;
--   __asm float_rcp __retVal.z, r;
--   __asm float_rsq r, v.w;
--   __asm float_rcp __retVal.w, r;
-+   __asm float_rcp r, r;
-+   __asm vec4_cmp __retVal, nx, r, 0.0;
-+}
-+
-+vec2 sqrt(const vec2 x)
-+{
-+   const vec2 nx = -x, zero = vec2(0.0);
-+   vec2 r;
-+   __asm float_rsq r.x, x.x;
-+   __asm float_rsq r.y, x.y;
-+   __asm float_rcp r.x, r.x;
-+   __asm float_rcp r.y, r.y;
-+   __asm vec4_cmp __retVal, nx, r, zero;
-+}
-+
-+vec3 sqrt(const vec3 x)
-+{
-+   const vec3 nx = -x, zero = vec3(0.0);
-+   vec3 r;
-+   __asm float_rsq r.x, x.x;
-+   __asm float_rsq r.y, x.y;
-+   __asm float_rsq r.z, x.z;
-+   __asm float_rcp r.x, r.x;
-+   __asm float_rcp r.y, r.y;
-+   __asm float_rcp r.z, r.z;
-+   __asm vec4_cmp __retVal, nx, r, zero;
-+}
-+
-+vec4 sqrt(const vec4 x)
-+{
-+   const vec4 nx = -x, zero = vec4(0.0);
-+   vec4 r;
-+   __asm float_rsq r.x, x.x;
-+   __asm float_rsq r.y, x.y;
-+   __asm float_rsq r.z, x.z;
-+   __asm float_rsq r.w, x.w;
-+   __asm float_rcp r.x, r.x;
-+   __asm float_rcp r.y, r.y;
-+   __asm float_rcp r.z, r.z;
-+   __asm float_rcp r.w, r.w;
-+   __asm vec4_cmp __retVal, nx, r, zero;
- }
-diff --git a/src/mesa/shader/slang/library/slang_common_builtin_gc.h b/src/mesa/shader/slang/library/slang_common_builtin_gc.h
-index 78a7b83..3c3666e 100644
---- a/src/mesa/shader/slang/library/slang_common_builtin_gc.h
-+++ b/src/mesa/shader/slang/library/slang_common_builtin_gc.h
-@@ -307,55 +307,63 @@
- 0,0,18,97,0,59,121,0,0,0,4,102,108,111,97,116,95,101,120,112,50,0,18,95,95,114,101,116,86,97,108,0,
- 59,122,0,0,18,97,0,59,122,0,0,0,4,102,108,111,97,116,95,101,120,112,50,0,18,95,95,114,101,116,86,
- 97,108,0,59,119,0,0,18,97,0,59,119,0,0,0,0,1,90,95,0,0,9,0,0,115,113,114,116,0,1,1,0,0,9,0,120,0,0,
--0,1,3,2,90,95,0,0,9,0,1,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,0,0,18,120,0,0,0,4,
--102,108,111,97,116,95,114,99,112,0,18,95,95,114,101,116,86,97,108,0,0,18,114,0,0,0,0,1,90,95,0,0,
--10,0,0,115,113,114,116,0,1,1,0,0,10,0,118,0,0,0,1,3,2,90,95,0,0,9,0,1,114,0,0,0,4,102,108,111,97,
--116,95,114,115,113,0,18,114,0,0,18,118,0,59,120,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,95,
--95,114,101,116,86,97,108,0,59,120,0,0,18,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,0,
--0,18,118,0,59,121,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,95,95,114,101,116,86,97,108,0,59,
--121,0,0,18,114,0,0,0,0,1,90,95,0,0,11,0,0,115,113,114,116,0,1,1,0,0,11,0,118,0,0,0,1,3,2,90,95,0,0,
--9,0,1,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,0,0,18,118,0,59,120,0,0,0,4,102,108,
--111,97,116,95,114,99,112,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,114,0,0,0,4,102,108,111,
--97,116,95,114,115,113,0,18,114,0,0,18,118,0,59,121,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,
--95,95,114,101,116,86,97,108,0,59,121,0,0,18,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,
--0,0,18,118,0,59,122,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,95,95,114,101,116,86,97,108,0,59,
--122,0,0,18,114,0,0,0,0,1,90,95,0,0,12,0,0,115,113,114,116,0,1,1,0,0,12,0,118,0,0,0,1,3,2,90,95,0,0,
--9,0,1,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,0,0,18,118,0,59,120,0,0,0,4,102,108,
--111,97,116,95,114,99,112,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,114,0,0,0,4,102,108,111,
--97,116,95,114,115,113,0,18,114,0,0,18,118,0,59,121,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,
--95,95,114,101,116,86,97,108,0,59,121,0,0,18,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,
--0,0,18,118,0,59,122,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,95,95,114,101,116,86,97,108,0,59,
--122,0,0,18,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,0,0,18,118,0,59,119,0,0,0,4,102,
--108,111,97,116,95,114,99,112,0,18,95,95,114,101,116,86,97,108,0,59,119,0,0,18,114,0,0,0,0,1,90,95,
--0,0,9,0,0,105,110,118,101,114,115,101,115,113,114,116,0,1,1,0,0,9,0,120,0,0,0,1,4,102,108,111,97,
--116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,120,0,0,0,0,1,90,95,0,0,10,0,0,
--105,110,118,101,114,115,101,115,113,114,116,0,1,1,0,0,10,0,118,0,0,0,1,4,102,108,111,97,116,95,114,
--115,113,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,118,0,59,120,0,0,0,4,102,108,111,97,116,
--95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,121,0,0,18,118,0,59,121,0,0,0,0,1,90,95,0,0,
--11,0,0,105,110,118,101,114,115,101,115,113,114,116,0,1,1,0,0,11,0,118,0,0,0,1,4,102,108,111,97,116,
--95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,118,0,59,120,0,0,0,4,102,108,111,
--97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,121,0,0,18,118,0,59,121,0,0,0,4,102,
--108,111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,122,0,0,18,118,0,59,122,0,0,0,
--0,1,90,95,0,0,12,0,0,105,110,118,101,114,115,101,115,113,114,116,0,1,1,0,0,12,0,118,0,0,0,1,4,102,
--108,111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,118,0,59,120,0,0,0,
--4,102,108,111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,121,0,0,18,118,0,59,121,
--0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,122,0,0,18,118,0,
--59,122,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,119,0,0,18,
--118,0,59,119,0,0,0,0,1,90,95,0,0,9,0,0,110,111,114,109,97,108,105,122,101,0,1,1,0,0,9,0,120,0,0,0,
--1,9,18,95,95,114,101,116,86,97,108,0,17,49,0,48,0,0,20,0,0,1,90,95,0,0,10,0,0,110,111,114,109,97,
--108,105,122,101,0,1,1,0,0,10,0,118,0,0,0,1,3,2,90,95,1,0,9,0,1,115,0,2,58,105,110,118,101,114,115,
--101,115,113,114,116,0,0,58,100,111,116,0,0,18,118,0,0,18,118,0,0,0,0,0,0,0,4,118,101,99,52,95,109,
--117,108,116,105,112,108,121,0,18,95,95,114,101,116,86,97,108,0,59,120,121,0,0,18,118,0,0,18,115,0,
--0,0,0,1,90,95,0,0,11,0,0,110,111,114,109,97,108,105,122,101,0,1,1,0,0,11,0,118,0,0,0,1,3,2,90,95,0,
--0,9,0,1,116,109,112,0,0,0,4,118,101,99,51,95,100,111,116,0,18,116,109,112,0,0,18,118,0,0,18,118,0,
--0,0,4,102,108,111,97,116,95,114,115,113,0,18,116,109,112,0,0,18,116,109,112,0,0,0,4,118,101,99,52,
--95,109,117,108,116,105,112,108,121,0,18,95,95,114,101,116,86,97,108,0,59,120,121,122,0,0,18,118,0,
--0,18,116,109,112,0,0,0,0,1,90,95,0,0,12,0,0,110,111,114,109,97,108,105,122,101,0,1,1,0,0,12,0,118,
--0,0,0,1,3,2,90,95,0,0,9,0,1,116,109,112,0,0,0,4,118,101,99,52,95,100,111,116,0,18,116,109,112,0,0,
--18,118,0,0,18,118,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,116,109,112,0,0,18,116,109,112,0,
--0,0,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,95,95,114,101,116,86,97,108,0,59,120,
--121,122,0,0,18,118,0,0,18,116,109,112,0,0,0,0,1,90,95,0,0,9,0,0,97,98,115,0,1,1,0,0,9,0,97,0,0,0,1,
--4,118,101,99,52,95,97,98,115,0,18,95,95,114,101,116,86,97,108,0,0,18,97,0,0,0,0,1,90,95,0,0,10,0,0,
-+0,1,3,2,90,95,1,0,9,0,1,110,120,0,2,18,120,0,54,0,0,3,2,90,95,0,0,9,0,1,114,0,0,0,4,102,108,111,97,
-+116,95,114,115,113,0,18,114,0,0,18,120,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,114,0,0,18,
-+114,0,0,0,4,118,101,99,52,95,99,109,112,0,18,95,95,114,101,116,86,97,108,0,0,18,110,120,0,0,18,114,
-+0,0,17,48,0,48,0,0,0,0,0,1,90,95,0,0,10,0,0,115,113,114,116,0,1,1,0,0,10,0,120,0,0,0,1,3,2,90,95,1,
-+0,10,0,1,110,120,0,2,18,120,0,54,0,1,1,122,101,114,111,0,2,58,118,101,99,50,0,0,17,48,0,48,0,0,0,0,
-+0,0,3,2,90,95,0,0,10,0,1,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,0,59,120,0,0,18,
-+120,0,59,120,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,0,59,121,0,0,18,120,0,59,121,0,0,0,
-+4,102,108,111,97,116,95,114,99,112,0,18,114,0,59,120,0,0,18,114,0,59,120,0,0,0,4,102,108,111,97,
-+116,95,114,99,112,0,18,114,0,59,121,0,0,18,114,0,59,121,0,0,0,4,118,101,99,52,95,99,109,112,0,18,
-+95,95,114,101,116,86,97,108,0,0,18,110,120,0,0,18,114,0,0,18,122,101,114,111,0,0,0,0,1,90,95,0,0,
-+11,0,0,115,113,114,116,0,1,1,0,0,11,0,120,0,0,0,1,3,2,90,95,1,0,11,0,1,110,120,0,2,18,120,0,54,0,1,
-+1,122,101,114,111,0,2,58,118,101,99,51,0,0,17,48,0,48,0,0,0,0,0,0,3,2,90,95,0,0,11,0,1,114,0,0,0,4,
-+102,108,111,97,116,95,114,115,113,0,18,114,0,59,120,0,0,18,120,0,59,120,0,0,0,4,102,108,111,97,116,
-+95,114,115,113,0,18,114,0,59,121,0,0,18,120,0,59,121,0,0,0,4,102,108,111,97,116,95,114,115,113,0,
-+18,114,0,59,122,0,0,18,120,0,59,122,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,114,0,59,120,0,0,
-+18,114,0,59,120,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,114,0,59,121,0,0,18,114,0,59,121,0,0,
-+0,4,102,108,111,97,116,95,114,99,112,0,18,114,0,59,122,0,0,18,114,0,59,122,0,0,0,4,118,101,99,52,
-+95,99,109,112,0,18,95,95,114,101,116,86,97,108,0,0,18,110,120,0,0,18,114,0,0,18,122,101,114,111,0,
-+0,0,0,1,90,95,0,0,12,0,0,115,113,114,116,0,1,1,0,0,12,0,120,0,0,0,1,3,2,90,95,1,0,12,0,1,110,120,0,
-+2,18,120,0,54,0,1,1,122,101,114,111,0,2,58,118,101,99,52,0,0,17,48,0,48,0,0,0,0,0,0,3,2,90,95,0,0,
-+12,0,1,114,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,114,0,59,120,0,0,18,120,0,59,120,0,0,0,4,
-+102,108,111,97,116,95,114,115,113,0,18,114,0,59,121,0,0,18,120,0,59,121,0,0,0,4,102,108,111,97,116,
-+95,114,115,113,0,18,114,0,59,122,0,0,18,120,0,59,122,0,0,0,4,102,108,111,97,116,95,114,115,113,0,
-+18,114,0,59,119,0,0,18,120,0,59,119,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,114,0,59,120,0,0,
-+18,114,0,59,120,0,0,0,4,102,108,111,97,116,95,114,99,112,0,18,114,0,59,121,0,0,18,114,0,59,121,0,0,
-+0,4,102,108,111,97,116,95,114,99,112,0,18,114,0,59,122,0,0,18,114,0,59,122,0,0,0,4,102,108,111,97,
-+116,95,114,99,112,0,18,114,0,59,119,0,0,18,114,0,59,119,0,0,0,4,118,101,99,52,95,99,109,112,0,18,
-+95,95,114,101,116,86,97,108,0,0,18,110,120,0,0,18,114,0,0,18,122,101,114,111,0,0,0,0,1,90,95,0,0,9,
-+0,0,105,110,118,101,114,115,101,115,113,114,116,0,1,1,0,0,9,0,120,0,0,0,1,4,102,108,111,97,116,95,
-+114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,120,0,0,0,0,1,90,95,0,0,10,0,0,105,
-+110,118,101,114,115,101,115,113,114,116,0,1,1,0,0,10,0,118,0,0,0,1,4,102,108,111,97,116,95,114,115,
-+113,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,118,0,59,120,0,0,0,4,102,108,111,97,116,95,
-+114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,121,0,0,18,118,0,59,121,0,0,0,0,1,90,95,0,0,11,0,
-+0,105,110,118,101,114,115,101,115,113,114,116,0,1,1,0,0,11,0,118,0,0,0,1,4,102,108,111,97,116,95,
-+114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,118,0,59,120,0,0,0,4,102,108,111,97,
-+116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,121,0,0,18,118,0,59,121,0,0,0,4,102,108,
-+111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,122,0,0,18,118,0,59,122,0,0,0,0,1,
-+90,95,0,0,12,0,0,105,110,118,101,114,115,101,115,113,114,116,0,1,1,0,0,12,0,118,0,0,0,1,4,102,108,
-+111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,120,0,0,18,118,0,59,120,0,0,0,4,
-+102,108,111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,121,0,0,18,118,0,59,121,0,
-+0,0,4,102,108,111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,122,0,0,18,118,0,59,
-+122,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,95,95,114,101,116,86,97,108,0,59,119,0,0,18,118,
-+0,59,119,0,0,0,0,1,90,95,0,0,9,0,0,110,111,114,109,97,108,105,122,101,0,1,1,0,0,9,0,120,0,0,0,1,9,
-+18,95,95,114,101,116,86,97,108,0,17,49,0,48,0,0,20,0,0,1,90,95,0,0,10,0,0,110,111,114,109,97,108,
-+105,122,101,0,1,1,0,0,10,0,118,0,0,0,1,3,2,90,95,1,0,9,0,1,115,0,2,58,105,110,118,101,114,115,101,
-+115,113,114,116,0,0,58,100,111,116,0,0,18,118,0,0,18,118,0,0,0,0,0,0,0,4,118,101,99,52,95,109,117,
-+108,116,105,112,108,121,0,18,95,95,114,101,116,86,97,108,0,59,120,121,0,0,18,118,0,0,18,115,0,0,0,
-+0,1,90,95,0,0,11,0,0,110,111,114,109,97,108,105,122,101,0,1,1,0,0,11,0,118,0,0,0,1,3,2,90,95,0,0,9,
-+0,1,116,109,112,0,0,0,4,118,101,99,51,95,100,111,116,0,18,116,109,112,0,0,18,118,0,0,18,118,0,0,0,
-+4,102,108,111,97,116,95,114,115,113,0,18,116,109,112,0,0,18,116,109,112,0,0,0,4,118,101,99,52,95,
-+109,117,108,116,105,112,108,121,0,18,95,95,114,101,116,86,97,108,0,59,120,121,122,0,0,18,118,0,0,
-+18,116,109,112,0,0,0,0,1,90,95,0,0,12,0,0,110,111,114,109,97,108,105,122,101,0,1,1,0,0,12,0,118,0,
-+0,0,1,3,2,90,95,0,0,9,0,1,116,109,112,0,0,0,4,118,101,99,52,95,100,111,116,0,18,116,109,112,0,0,18,
-+118,0,0,18,118,0,0,0,4,102,108,111,97,116,95,114,115,113,0,18,116,109,112,0,0,18,116,109,112,0,0,0,
-+4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,95,95,114,101,116,86,97,108,0,59,120,121,
-+122,0,0,18,118,0,0,18,116,109,112,0,0,0,0,1,90,95,0,0,9,0,0,97,98,115,0,1,1,0,0,9,0,97,0,0,0,1,4,
-+118,101,99,52,95,97,98,115,0,18,95,95,114,101,116,86,97,108,0,0,18,97,0,0,0,0,1,90,95,0,0,10,0,0,
- 97,98,115,0,1,1,0,0,10,0,97,0,0,0,1,4,118,101,99,52,95,97,98,115,0,18,95,95,114,101,116,86,97,108,
- 0,59,120,121,0,0,18,97,0,0,0,0,1,90,95,0,0,11,0,0,97,98,115,0,1,1,0,0,11,0,97,0,0,0,1,4,118,101,99,
- 52,95,97,98,115,0,18,95,95,114,101,116,86,97,108,0,59,120,121,122,0,0,18,97,0,0,0,0,1,90,95,0,0,12,
-diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
-index 703af9f..344dfdc 100644
---- a/src/mesa/shader/slang/slang_codegen.c
-+++ b/src/mesa/shader/slang/slang_codegen.c
-@@ -422,6 +422,7 @@ static slang_asm_info AsmInfo[] = {
-    { "vec4_lrp", IR_LRP, 1, 3 },
-    { "vec4_min", IR_MIN, 1, 2 },
-    { "vec4_max", IR_MAX, 1, 2 },
-+   { "vec4_cmp", IR_CMP, 1, 3 },
-    { "vec4_clamp", IR_CLAMP, 1, 3 },
-    { "vec4_seq", IR_SEQUAL, 1, 2 },
-    { "vec4_sne", IR_SNEQUAL, 1, 2 },
-diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c
-index 3f455e0..3af301e 100644
---- a/src/mesa/shader/slang/slang_emit.c
-+++ b/src/mesa/shader/slang/slang_emit.c
-@@ -2287,6 +2287,7 @@ emit(slang_emit_info *emitInfo, slang_ir_node *n)
-    case IR_POW:
-    /* trinary operators */
-    case IR_LRP:
-+   case IR_CMP:
-       return emit_arith(emitInfo, n);
-    case IR_EQUAL:
-diff --git a/src/mesa/shader/slang/slang_ir.c b/src/mesa/shader/slang/slang_ir.c
-index 1c7f747..6260350 100644
---- a/src/mesa/shader/slang/slang_ir.c
-+++ b/src/mesa/shader/slang/slang_ir.c
-@@ -80,6 +80,7 @@ static const slang_ir_info IrInfo[] = {
-    { IR_NOISE4, "IR_NOISE4", OPCODE_NOISE4, 1, 1 },
-    /* other */
-+   { IR_CMP, "IR_CMP", OPCODE_CMP, 4, 3 },  /* compare/select */
-    { IR_SEQ, "IR_SEQ", OPCODE_NOP, 0, 0 },
-    { IR_SCOPE, "IR_SCOPE", OPCODE_NOP, 0, 0 },
-    { IR_LABEL, "IR_LABEL", OPCODE_NOP, 0, 0 },
-diff --git a/src/mesa/shader/slang/slang_ir.h b/src/mesa/shader/slang/slang_ir.h
-index e796693..166b4e8 100644
---- a/src/mesa/shader/slang/slang_ir.h
-+++ b/src/mesa/shader/slang/slang_ir.h
-@@ -91,6 +91,7 @@ typedef enum
-    IR_CLAMP,
-    IR_MIN,
-    IR_MAX,
-+   IR_CMP,     /* = (op0 < 0) ? op1 : op2 */
-    IR_SEQUAL,  /* Set if args are equal (vector) */
-    IR_SNEQUAL, /* Set if args are not equal (vector) */
-    IR_SGE,     /* Set if greater or equal (vector) */
-diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c
-index 8f2b40d..71038d2 100644
---- a/src/mesa/shader/slang/slang_link.c
-+++ b/src/mesa/shader/slang/slang_link.c
-@@ -670,6 +670,7 @@ get_main_shader(GLcontext *ctx,
-           !shader->Main ||
-           shader->UnresolvedRefs) {
-          link_error(shProg, "Unresolved symbols");
-+         _mesa_free_shader(ctx, shader);
-          return NULL;
-       }
-    }
-diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
-index a9cafbf..c655690 100644
---- a/src/mesa/state_tracker/st_cb_drawpixels.c
-+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
-@@ -598,15 +598,15 @@ draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,
-    /* viewport state: viewport matching window dims */
-    {
--      const float width = (float) ctx->DrawBuffer->Width;
--      const float height = (float) ctx->DrawBuffer->Height;
-+      const float w = (float) ctx->DrawBuffer->Width;
-+      const float h = (float) ctx->DrawBuffer->Height;
-       struct pipe_viewport_state vp;
--      vp.scale[0] =  0.5f * width;
--      vp.scale[1] = -0.5f * height;
-+      vp.scale[0] =  0.5f * w;
-+      vp.scale[1] = -0.5f * h;
-       vp.scale[2] = 1.0f;
-       vp.scale[3] = 1.0f;
--      vp.translate[0] = 0.5f * width;
--      vp.translate[1] = 0.5f * height;
-+      vp.translate[0] = 0.5f * w;
-+      vp.translate[1] = 0.5f * h;
-       vp.translate[2] = 0.0f;
-       vp.translate[3] = 0.0f;
-       cso_set_viewport(cso, &vp);
-diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
-index fe0a121..e8399de 100644
---- a/src/mesa/state_tracker/st_cb_fbo.c
-+++ b/src/mesa/state_tracker/st_cb_fbo.c
-@@ -165,12 +165,12 @@ st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
-                                                      strb->texture,
-                                                      0, 0, 0,
-                                                      surface_usage );
--
--      assert(strb->surface->texture);
--      assert(strb->surface->format);
--      assert(strb->surface->width == width);
--      assert(strb->surface->height == height);
--
-+      if (strb->surface) {
-+         assert(strb->surface->texture);
-+         assert(strb->surface->format);
-+         assert(strb->surface->width == width);
-+         assert(strb->surface->height == height);
-+      }
-       return strb->surface != NULL;
-    }
-@@ -298,6 +298,7 @@ st_new_renderbuffer_fb(enum pipe_format format, int samples, boolean sw)
-    default:
-       _mesa_problem(NULL,
-                   "Unexpected format in st_new_renderbuffer_fb");
-+      _mesa_free(strb);
-       return NULL;
-    }
-diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
-index b13e377..50675b5 100644
---- a/src/mesa/state_tracker/st_cb_texture.c
-+++ b/src/mesa/state_tracker/st_cb_texture.c
-@@ -1775,7 +1775,11 @@ st_finalize_texture(GLcontext *ctx,
-        * incomplete.  In that case, we'll have set stObj->lastLevel before
-        * we get here.
-        */
--      stObj->lastLevel = stObj->base._MaxLevel - stObj->base.BaseLevel;
-+      if (stObj->base.MinFilter == GL_LINEAR ||
-+          stObj->base.MinFilter == GL_NEAREST)
-+         stObj->lastLevel = stObj->base.BaseLevel;
-+      else
-+         stObj->lastLevel = stObj->base._MaxLevel - stObj->base.BaseLevel;
-    }
-    firstImage = st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]);
-diff --git a/src/mesa/swrast/s_depth.c b/src/mesa/swrast/s_depth.c
-index 26e23f0..7086cae 100644
---- a/src/mesa/swrast/s_depth.c
-+++ b/src/mesa/swrast/s_depth.c
-@@ -1211,6 +1211,7 @@ _swrast_read_depth_span_float( GLcontext *ctx, struct gl_renderbuffer *rb,
-    if (!rb) {
-       /* really only doing this to prevent FP exceptions later */
-       _mesa_bzero(depth, n * sizeof(GLfloat));
-+      return;
-    }
-    ASSERT(rb->_BaseFormat == GL_DEPTH_COMPONENT);
-@@ -1273,7 +1274,8 @@ _swrast_read_depth_span_uint( GLcontext *ctx, struct gl_renderbuffer *rb,
- {
-    if (!rb) {
-       /* really only doing this to prevent FP exceptions later */
--      _mesa_bzero(depth, n * sizeof(GLfloat));
-+      _mesa_bzero(depth, n * sizeof(GLuint));
-+      return;
-    }
-    ASSERT(rb->_BaseFormat == GL_DEPTH_COMPONENT);
This page took 0.118415 seconds and 4 git commands to generate.