meta/blit: Restore GL_DEPTH_STENCIL_TEXTURE_MODE state for GL_TEXTURE_RECTANGLE
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 13 Jan 2016 00:08:47 +0000 (16:08 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 25 Jan 2016 18:43:47 +0000 (10:43 -0800)
Commit c246828c added the code to save and restore the stencil
texturing mode.  The restore, however, was erroneously inside the
'target != GL_TEXTURE_RECTANGLE' block.

Fixes piglit test 'arb_stencil_texturing-blit_corrupts_state
GL_TEXTURE_RECTANGLE'.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: "11.0 11.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/drivers/common/meta_blit.c

index b414dce88199e51747e7340b94e2c3fbf5da77f4..78ecfe2db5972b26dc9026264db60513c4d58400 100644 (file)
@@ -834,16 +834,16 @@ _mesa_meta_fb_tex_blit_end(struct gl_context *ctx, GLenum target,
    if (target != GL_TEXTURE_RECTANGLE_ARB) {
       _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, blit->baseLevelSave);
       _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, blit->maxLevelSave);
+   }
 
-      if (ctx->Extensions.ARB_stencil_texturing) {
-         const struct gl_texture_object *texObj =
-            _mesa_get_current_tex_object(ctx, target);
+   if (ctx->Extensions.ARB_stencil_texturing) {
+      const struct gl_texture_object *texObj =
+         _mesa_get_current_tex_object(ctx, target);
 
-         if (texObj->StencilSampling != blit->stencilSamplingSave)
-            _mesa_TexParameteri(target, GL_DEPTH_STENCIL_TEXTURE_MODE,
-                                blit->stencilSamplingSave ?
-                                   GL_STENCIL_INDEX : GL_DEPTH_COMPONENT);
-      }
+      if (texObj->StencilSampling != blit->stencilSamplingSave)
+         _mesa_TexParameteri(target, GL_DEPTH_STENCIL_TEXTURE_MODE,
+                             blit->stencilSamplingSave ?
+                             GL_STENCIL_INDEX : GL_DEPTH_COMPONENT);
    }
 
    _mesa_bind_sampler(ctx, ctx->Texture.CurrentUnit, blit->samp_obj_save);