[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

mesa: Changes to 'ubuntu'



 bin/.cherry-ignore                                         |   10 ++++
 debian/changelog                                           |    6 ++
 src/egl/main/Makefile.am                                   |    2 
 src/gallium/auxiliary/os/os_process.c                      |    8 +--
 src/gallium/drivers/nouveau/nouveau_buffer.c               |    2 
 src/gallium/drivers/nv30/nv30_context.c                    |    2 
 src/gallium/drivers/nv30/nvfx_fragprog.c                   |    3 -
 src/gallium/drivers/nvc0/codegen/nv50_ir_lowering_nvc0.cpp |    3 -
 src/gallium/drivers/nvc0/codegen/nv50_ir_target_nvc0.cpp   |   12 ++++
 src/gallium/drivers/nvc0/nvc0_context.c                    |    1 
 src/gallium/drivers/nvc0/nvc0_context.h                    |    2 
 src/gallium/drivers/nvc0/nvc0_screen.c                     |    1 
 src/gallium/drivers/nvc0/nvc0_state_validate.c             |    6 +-
 src/gallium/drivers/nvc0/nvc0_surface.c                    |   11 +++-
 src/gallium/drivers/r600/r600_hw_context.c                 |   11 +++-
 src/gallium/include/state_tracker/st_api.h                 |    3 -
 src/gallium/state_trackers/dri/common/dri_drawable.c       |   13 +++--
 src/gallium/state_trackers/dri/common/dri_drawable.h       |    3 -
 src/gallium/state_trackers/dri/drm/dri2.c                  |   23 ++-------
 src/gallium/state_trackers/dri/sw/drisw.c                  |    3 -
 src/gallium/state_trackers/egl/common/egl_g3d_api.c        |    2 
 src/gallium/state_trackers/egl/common/egl_g3d_st.c         |    6 +-
 src/gallium/state_trackers/glx/xlib/xm_st.c                |    3 -
 src/gallium/state_trackers/osmesa/osmesa.c                 |    3 -
 src/gallium/state_trackers/vega/vg_manager.c               |    3 -
 src/gallium/state_trackers/wgl/stw_st.c                    |    3 -
 src/gallium/winsys/radeon/drm/radeon_drm_cs.c              |   30 ++++++++++++
 src/glsl/ast_to_hir.cpp                                    |   29 ++++++++---
 src/glsl/glsl_parser.yy                                    |   10 ++--
 src/glsl/link_functions.cpp                                |   32 +++++++++++++
 src/glx/dri2_glx.c                                         |   10 ++--
 src/glx/dri_common.c                                       |   14 ++---
 src/glx/drisw_glx.c                                        |   10 ++--
 src/mesa/drivers/dri/i965/brw_blorp_blit.cpp               |    2 
 src/mesa/drivers/dri/i965/brw_blorp_clear.cpp              |    2 
 src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp        |   18 +++++--
 src/mesa/drivers/dri/i965/brw_fs.cpp                       |    6 ++
 src/mesa/drivers/dri/i965/brw_fs_fp.cpp                    |    8 +--
 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp               |    8 ++-
 src/mesa/drivers/dri/i965/brw_vec4.cpp                     |    8 ++-
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp             |    6 +-
 src/mesa/drivers/dri/i965/brw_vs.c                         |    2 
 src/mesa/drivers/dri/i965/intel_pixel_bitmap.c             |    3 -
 src/mesa/main/extensions.c                                 |    1 
 src/mesa/main/get.c                                        |    1 
 src/mesa/main/get_hash_params.py                           |    6 --
 src/mesa/main/glheader.h                                   |    6 --
 src/mesa/main/syncobj.c                                    |    2 
 src/mesa/main/texformat.c                                  |   18 +++----
 src/mesa/state_tracker/st_cb_fbo.c                         |    2 
 src/mesa/state_tracker/st_manager.c                        |    2 
 51 files changed, 262 insertions(+), 119 deletions(-)

New commits:
commit cb49205af45e4b6550c85efac91e4f7948c29833
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Thu Oct 3 12:22:22 2013 +0200

    Snapshot close to a new upstream release.

diff --git a/debian/changelog b/debian/changelog
index ecc4e58..d26d403 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+mesa (9.2.1-1) UNRELEASED; urgency=low
+
+  * Snapshot close to a new upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 03 Oct 2013 12:21:49 +0200
+
 mesa (9.2-1) experimental; urgency=low
 
   [ Jon Severinsson ]

commit 88513d6485f55fe33a0a40d9394ede6dc0d2feec
Author: Chris Forbes <chrisf@ijw.co.nz>
Date:   Mon Sep 30 22:10:17 2013 +1300

    i965: fix bogus swizzle in brw_cubemap_normalize
    
    When used with a cube array in VS, failed assertion in ir_validate:
    
       Assignment count of LHS write mask channels enabled not
       matching RHS vector size (3 LHS, 4 RHS).
    
    To fix this, swizzle the RHS correctly for the writemask.
    
    This showed up in the ARB_texture_gather tests, which exercise cube
    arrays in the VS.
    
    Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
    Cc: "9.2" <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    (cherry picked from commit 0d7fc10bcd2efb2f96d684b3273b4e0c0b0afef0)

diff --git a/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp b/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
index 46155fb..949414c 100644
--- a/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
+++ b/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
@@ -92,10 +92,12 @@ brw_cubemap_normalize_visitor::visit_leave(ir_texture *ir)
    /* coordinate.xyz *= expr */
    assign = new(mem_ctx) ir_assignment(
       new(mem_ctx) ir_dereference_variable(var),
-      new(mem_ctx) ir_expression(ir_binop_mul,
-                                 ir->coordinate->type,
-                                 new(mem_ctx) ir_dereference_variable(var),
-                                 expr));
+      new(mem_ctx) ir_swizzle(
+         new(mem_ctx) ir_expression(ir_binop_mul,
+                                    ir->coordinate->type,
+                                    new(mem_ctx) ir_dereference_variable(var),
+                                    expr),
+         0, 1, 2, 0, 3));
    assign->write_mask = WRITEMASK_XYZ;
    base_ir->insert_before(assign);
    ir->coordinate = new(mem_ctx) ir_dereference_variable(var);

commit 2eb55601bbb405bf72555409ede8795abb69d3dd
Author: Brian Paul <brianp@vmware.com>
Date:   Sat Sep 14 10:09:24 2013 -0600

    mesa: check for bufSize > 0 in _mesa_GetSynciv()
    
    The spec doesn't say GL_INVALID_VALUE should be raised for bufSize <= 0.
    In any case, memcpy(len < 0) will lead to a crash, so don't allow it.
    
    CC: "9.2" <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
    (cherry picked from commit 6659131be3bde0505a85e3a7d27382b273822bee)

diff --git a/src/mesa/main/syncobj.c b/src/mesa/main/syncobj.c
index c8d25cd..4e9b125 100644
--- a/src/mesa/main/syncobj.c
+++ b/src/mesa/main/syncobj.c
@@ -409,7 +409,7 @@ _mesa_GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length,
       return;
    }
 
-   if (size > 0) {
+   if (size > 0 && bufSize > 0) {
       const GLsizei copy_count = MIN2(size, bufSize);
 
       memcpy(values, v, sizeof(GLint) * copy_count);

commit 26ffbf6f391542b40c4ffe9b08f5cdc88efe18c9
Author: Eric Anholt <eric@anholt.net>
Date:   Thu Sep 19 08:45:07 2013 -0700

    i965: Reenable glBitmap() after the sRGB winsys enabling.
    
    The format of the window system framebuffer changed from ARGB8888 to
    SARGB8, but we're still supposed to render to it the same as ARGB8888
    unless the user flipped the GL_FRAMEBUFFER_SRGB switch.
    
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    NOTE: This is a candidate for stable branches.
    (cherry picked from commit 48b9720272184d884b21524ae0b5318d42019793)

diff --git a/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c b/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c
index 5398cb8..91f21a3 100644
--- a/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c
+++ b/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c
@@ -25,6 +25,7 @@
  * 
  **************************************************************************/
 
+#include "main/blend.h"
 #include "main/glheader.h"
 #include "main/enums.h"
 #include "main/image.h"
@@ -227,7 +228,7 @@ do_blit_bitmap( struct gl_context *ctx,
    UNCLAMPED_FLOAT_TO_UBYTE(ubcolor[2], tmpColor[2]);
    UNCLAMPED_FLOAT_TO_UBYTE(ubcolor[3], tmpColor[3]);
 
-   switch (irb->mt->format) {
+   switch (_mesa_get_render_format(ctx, intel_rb_format(irb))) {
    case MESA_FORMAT_ARGB8888:
    case MESA_FORMAT_XRGB8888:
       color = PACK_COLOR_8888(ubcolor[3], ubcolor[0], ubcolor[1], ubcolor[2]);

commit 421141192f0c35f8cb7dd4580a4fdedc7bb60104
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Fri Sep 13 11:31:00 2013 -0500

    mesa: Remove all traces of GL_OES_matrix_get
    
    I believe this extension was enabled by accident.  As far as I can tell,
    there has never been any code in Mesa to actually support it.  Not only
    that, this extension is only useful in the common-lite profile, and Mesa
    does the common profile.
    
    This "fixes" the piglit test oes_matrix_get-api.
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Cc: "9.1 9.2" <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    (cherry picked from commit 3e1fdf389918b3488f06116c1837594d469dbaa2)

diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 4e46cf0..b206c5b 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -262,7 +262,6 @@ static const struct extension extension_table[] = {
    { "GL_OES_framebuffer_object",                  o(dummy_true),                                   ES1,       2005 },
    { "GL_OES_get_program_binary",                  o(dummy_true),                                         ES2, 2008 },
    { "GL_OES_mapbuffer",                           o(dummy_true),                                   ES1 | ES2, 2005 },
-   { "GL_OES_matrix_get",                          o(dummy_true),                                   ES1,       2004 },
    { "GL_OES_packed_depth_stencil",                o(EXT_packed_depth_stencil),                     ES1 | ES2, 2007 },
    { "GL_OES_point_size_array",                    o(dummy_true),                                   ES1,       2004 },
    { "GL_OES_point_sprite",                        o(ARB_point_sprite),                             ES1,       2004 },
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index bd89ae5..b9000e6 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -229,11 +229,6 @@ descriptor=[
 
 
 { "apis": ["GLES"], "params": [
-# XXX: OES_matrix_get
-  [ "MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES", "" ],
-  [ "PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES", "" ],
-  [ "TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES", "" ],
-
 # OES_point_size_array
   [ "POINT_SIZE_ARRAY_OES", "ARRAY_FIELD(VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled, TYPE_BOOLEAN)" ],
   [ "POINT_SIZE_ARRAY_TYPE_OES", "ARRAY_FIELD(VertexAttrib[VERT_ATTRIB_POINT_SIZE].Type, TYPE_ENUM)" ],
diff --git a/src/mesa/main/glheader.h b/src/mesa/main/glheader.h
index b3b0c52..4ed51b3 100644
--- a/src/mesa/main/glheader.h
+++ b/src/mesa/main/glheader.h
@@ -115,12 +115,6 @@ typedef void *GLeglImageOES;
 #define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
 #endif
 
-#ifndef GL_OES_matrix_get
-#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES               0x898D
-#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES              0x898E
-#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES                 0x898F
-#endif
-
 #ifndef GL_ES_VERSION_2_0
 #define GL_SHADER_BINARY_FORMATS            0x8DF8
 #define GL_NUM_SHADER_BINARY_FORMATS        0x8DF9

commit be029eb993b17f7e8c1c0b0fb52c6dba370cef28
Author: Carl Worth <cworth@cworth.org>
Date:   Fri Sep 27 14:01:48 2013 -0700

    Use -Bsymbolic when linking libEGL.so
    
    For some reason that I don't yet fully understand, Glaze does not work with
    libEGL unless libEGL is linked with -Bsymbolic.[*]
    
    Beyond that specific reason, all of the reasons for which libGL.so is linked
    with -Bsymbolic, (see the commit history), should also apply here.
    
    [*] The specific behavior I am seeing is that when Glaze calls dlopen for
    libEGL.so, ifunc resolvers within Glaze for EGL functions are called before
    the dlopen returns. These resolvers cannot succeed, as they need the return
    value from dlopen in order to find the functions to resolve to. I don't know
    what's causing these resolvers to be called, but I have verified that linking
    libEGL with -Bsymbolic causes this problematic behavior to stop.
    
    CC: "9.1 and 9.2" <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
    (cherry picked from commit 9baf35de5cd4a0d832ee185afb709868fd55bc93)

diff --git a/src/egl/main/Makefile.am b/src/egl/main/Makefile.am
index cbb6a4d..9a39a02 100644
--- a/src/egl/main/Makefile.am
+++ b/src/egl/main/Makefile.am
@@ -75,7 +75,7 @@ libEGL_la_SOURCES = \
 
 libEGL_la_LIBADD = \
 	$(EGL_LIB_DEPS)
-libEGL_la_LDFLAGS = -version-number 1:0 -no-undefined
+libEGL_la_LDFLAGS = -Wl,-Bsymbolic -version-number 1:0 -no-undefined
 
 if HAVE_EGL_PLATFORM_X11
 AM_CFLAGS += -DHAVE_X11_PLATFORM

commit f7fba18e2e35af9c2a26a4cb42598662c988e5da
Author: Carl Worth <cworth@cworth.org>
Date:   Tue Oct 1 14:08:17 2013 -0700

    cherry-ignore: Ignore a commit which appeared twice on master
    
    In between the two appearances, it was reverted once.
    
    Regardless, the two versions on master are the same, and we've already
    cherry-picked one of them, so ignore the second.

diff --git a/bin/.cherry-ignore b/bin/.cherry-ignore
index c49d98a..dec0624 100644
--- a/bin/.cherry-ignore
+++ b/bin/.cherry-ignore
@@ -3,4 +3,8 @@ d8ac987f6ab228df1a478b36c3d889992754374f glsl: Disallow uniform block layout qua
 
 # The bug fixed by this patch does not exist in 9.2.  Discussed with Marek and
 # Brian Paul on the mesa-stable mailing list.
-89a665eb5fa176f68223bf54a472d6a0567c3546 draw: fix segfaults with aaline and aapoint stages disabled
\ No newline at end of file
+89a665eb5fa176f68223bf54a472d6a0567c3546 draw: fix segfaults with aaline and aapoint stages disabled
+
+# Previously cherry picked (patch originally appeared twice on master with a
+# revert in between)
+4e5eb8ba25054ede4798fa424e6f32b23aba0f98 i965/vec4: Only zero out unused message components when there are any.

commit 42b6d94537660c311b8d0dd80e36bcfa6b30a8bb
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Thu Sep 19 15:07:41 2013 +0200

    r600g: fix texture buffer object cache flushing
    
    Cc: "9.2" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit f7d004b9ad0deec99d465600ed7df683146b6cd7)
    
    Conflicts:
    	src/gallium/drivers/r600/r600_hw_context.c

diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
index 266d5f5..4a8f8ae 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -247,7 +247,10 @@ void r600_flush_emit(struct r600_context *rctx)
 							: S_0085F0_TC_ACTION_ENA(1);
 	}
 	if (rctx->flags & R600_CONTEXT_INV_TEX_CACHE) {
-		cp_coher_cntl |= S_0085F0_TC_ACTION_ENA(1);
+		/* Textures use the texture cache.
+		 * Texture buffer objects use the vertex cache. */
+		cp_coher_cntl |= S_0085F0_TC_ACTION_ENA(1) |
+				 (rctx->has_vertex_cache ? S_0085F0_VC_ACTION_ENA(1) : 0);
 	}
 
 	/* Don't use the DB CP COHER logic on r6xx.

commit 563c488453ec7dd11ba1d074215a2fa2b414769a
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Wed Sep 18 22:46:25 2013 +0200

    r600g: fix constant buffer cache flushing
    
    Cc: "9.2" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 6317a3fb31014d89edff2993f3cf403f651a07f6)
    
    Conflicts:
    	src/gallium/drivers/r600/r600_hw_context.c

diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
index 97b0f9c..266d5f5 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -236,7 +236,11 @@ void r600_flush_emit(struct r600_context *rctx)
 	}
 
 	if (rctx->flags & R600_CONTEXT_INV_CONST_CACHE) {
-		cp_coher_cntl |= S_0085F0_SH_ACTION_ENA(1);
+		/* Direct constant addressing uses the shader cache.
+		 * Indirect contant addressing uses the vertex cache. */
+		cp_coher_cntl |= S_0085F0_SH_ACTION_ENA(1) |
+				 (rctx->has_vertex_cache ? S_0085F0_VC_ACTION_ENA(1)
+							 : S_0085F0_TC_ACTION_ENA(1));
 	}
 	if (rctx->flags & R600_CONTEXT_INV_VERTEX_CACHE) {
 		cp_coher_cntl |= rctx->has_vertex_cache ? S_0085F0_VC_ACTION_ENA(1)

commit 4babf9ba6b889ac48123e66363177c2d23abda57
Author: Chris Forbes <chrisf@ijw.co.nz>
Date:   Sun Sep 15 22:25:45 2013 +1200

    i965: Fix cube array coordinate normalization
    
    Hardware requires the magnitude of the largest component to not exceed
    1; brw_cubemap_normalize ensures that this is the case.
    
    Unfortunately, we would previously multiply the array index for cube
    arrays by the normalization factor. The incorrect array index would then
    cause the sampler to attempt to access either the wrong cube, or memory
    outside the cube surface entirely, resulting in garbage rendering or in
    the worst case, hangs.
    
    Alter the normalization pass to only multiply the .xyz components.
    
    Fixes broken rendering in the arb_texture_cube_map_array-cubemap piglit,
    which was recently adjusted to provoke this behavior.
    
    V2: Fix indent.
    
    Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
    Cc: "9.2" mesa-stable@lists.freedesktop.org
    Reviewed-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit fe2528c0b69d5719b15d926ada9424cac7569b9c)

diff --git a/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp b/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
index 9e149f9..46155fb 100644
--- a/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
+++ b/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
@@ -32,6 +32,7 @@
 
 #include "glsl/glsl_types.h"
 #include "glsl/ir.h"
+#include "program/prog_instruction.h" /* For WRITEMASK_* */
 
 class brw_cubemap_normalize_visitor : public ir_hierarchical_visitor {
 public:
@@ -88,11 +89,16 @@ brw_cubemap_normalize_visitor::visit_leave(ir_texture *ir)
 				     glsl_type::float_type,
 				     expr, NULL);
 
-   deref = new(mem_ctx) ir_dereference_variable(var);
-   ir->coordinate = new(mem_ctx) ir_expression(ir_binop_mul,
-					       ir->coordinate->type,
-					       deref,
-					       expr);
+   /* coordinate.xyz *= expr */
+   assign = new(mem_ctx) ir_assignment(
+      new(mem_ctx) ir_dereference_variable(var),
+      new(mem_ctx) ir_expression(ir_binop_mul,
+                                 ir->coordinate->type,
+                                 new(mem_ctx) ir_dereference_variable(var),
+                                 expr));
+   assign->write_mask = WRITEMASK_XYZ;
+   base_ir->insert_before(assign);
+   ir->coordinate = new(mem_ctx) ir_dereference_variable(var);
 
    progress = true;
    return visit_continue;

commit 8a9099d4ef7daa8c6df76f25ce14345c36f4325f
Author: Eric Anholt <eric@anholt.net>
Date:   Wed Sep 18 12:32:31 2013 -0700

    i965/gen4: Fix fragment program rectangle texture shadow compares.
    
    The rescale_texcoord(), if it does something, will return just the
    GLSL-sized coordinate, leaving out the 3rd and 4th components where we
    were storing our projected shadow compare and the texture projector.
    Deref the shadow compare before using the shared rescale-the-coordinate
    code to fix the problem.
    
    Fixes piglit tex-shadow2drect.shader_test and txp-shadow2drect.shader_test
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69525
    NOTE: This is a candidate for stable branches.
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    (cherry picked from commit 938956ad52bc7659212b5877080967d4af0aad81)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
index 68531e3..0594948 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
@@ -490,15 +490,15 @@ fs_visitor::emit_fragment_program_code()
          ir_constant_data junk_data;
          ir->coordinate = new(mem_ctx) ir_constant(coordinate_type, &junk_data);
 
-         coordinate = rescale_texcoord(ir, coordinate,
-                                       fpi->TexSrcTarget == TEXTURE_RECT_INDEX,
-                                       fpi->TexSrcUnit, fpi->TexSrcUnit);
-
          if (fpi->TexShadow) {
             shadow_c = regoffset(coordinate, 2);
             ir->shadow_comparitor = new(mem_ctx) ir_constant(0.0f);
          }
 
+         coordinate = rescale_texcoord(ir, coordinate,
+                                       fpi->TexSrcTarget == TEXTURE_RECT_INDEX,
+                                       fpi->TexSrcUnit, fpi->TexSrcUnit);
+
          fs_inst *inst;
          if (brw->gen >= 7) {
             inst = emit_texture_gen7(ir, dst, coordinate, shadow_c, lod, dpdy, sample_index);

commit beebb2d9d5913b251e50dca9db3e427fdbaee8be
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Mon Sep 9 16:54:11 2013 -0500

    mesa: Support GL_MAX_VERTEX_OUTPUT_COMPONENTS query with ES3
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    Reviewed-by: Marek Olšák <marek.olsak@amd.com>
    Reviewed-by: Paul Berry <stereotype441@gmail.com>
    Cc: "9.1 9.2" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit d38765f3c8fbd473b949177cc9698b2cd459902c)

diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 0b33fa4..e13d6f1 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -714,6 +714,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
 
    case GL_MAX_VARYING_FLOATS_ARB:
    case GL_MAX_FRAGMENT_INPUT_COMPONENTS:
+   case GL_MAX_VERTEX_OUTPUT_COMPONENTS:
       v->value_int = ctx->Const.MaxVarying * 4;
       break;
 
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index fde4537..bd89ae5 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -330,6 +330,7 @@ descriptor=[
   [ "MINOR_VERSION", "LOC_CUSTOM, TYPE_INT, 0, extra_gl30_es3" ],
 
   # GL 3.0 / GLES3
+  [ "MAX_VERTEX_OUTPUT_COMPONENTS", "LOC_CUSTOM, TYPE_INT, 0, extra_gl32_es3" ],
   [ "MAX_FRAGMENT_INPUT_COMPONENTS", "LOC_CUSTOM, TYPE_INT, 0, extra_gl32_es3" ],
 
 # GL_ARB_ES3_compatibility

commit e021b50227b4711ea7f0209e0c9fb48ecddd0092
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Mon Sep 16 22:39:37 2013 -0700

    i965: Fix brw_vs_prog_data_compare to actually check field members.
    
    &a and &b are the address of the local stack variables, not the actual
    structures.  Instead of comparing the fields of a and b, we compared
    ...some stack memory.
    
    Caught by Valgrind on Piglit's glsl-lod-bias test (among many others).
    
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68233
    Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 4e4b0799165ae7b482da7d9af656ed8878500de1)

diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
index 5b8173d..f5cec21 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -204,7 +204,7 @@ brw_vs_prog_data_compare(const void *in_a, const void *in_b,
 
    /* Compare the rest of the struct. */
    const unsigned offset = sizeof(struct brw_vec4_prog_data);
-   if (memcmp(((char *) &a) + offset, ((char *) &b) + offset,
+   if (memcmp(((char *) a) + offset, ((char *) b) + offset,
               sizeof(struct brw_vs_prog_data) - offset)) {
       return false;
    }

commit 3801e9a87ed350e9891771967295048e3eab209e
Author: Dave Airlie <airlied@gmail.com>
Date:   Tue Sep 10 14:46:23 2013 +1000

    st/mesa: don't dereference stObj->pt if NULL
    
    It seems a user app can get us into this state, I trigger the fail
    running fbo-maxsize inside virgl, it fails to create the backing
    storage for the texture object, but then segfaults here when it
    should fail the completeness test.
    
    Cc: "9.2" <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    (cherry picked from commit 2f508f244e8e4cb4bb2b9f813548fbf0c89b77c1)

diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
index 77aaccd..2089482 100644
--- a/src/mesa/state_tracker/st_cb_fbo.c
+++ b/src/mesa/state_tracker/st_cb_fbo.c
@@ -502,7 +502,7 @@ st_validate_attachment(struct gl_context *ctx,
    if (att->Type != GL_TEXTURE)
       return GL_TRUE;
 
-   if (!stObj)
+   if (!stObj || !stObj->pt)
       return GL_FALSE;
 
    format = stObj->pt->format;

commit faec15dc7a5dfed7ffd3399331a3ce601f73cdc0
Author: Andreas Boll <andreas.boll.dev@gmail.com>
Date:   Wed Sep 11 14:27:08 2013 +0200

    os: First check for __GLIBC__ and then for PIPE_OS_BSD
    
    Fixes FTBFS on kfreebsd-*
    
    Debian GNU/kFreeBSD doesn't provide getprogname() since it uses stdlib.h
    from glibc. Instead it provides program_invocation_short_name from glibc.
    
    You can find the same order in src/mesa/drivers/dri/common/xmlconfig.c
    
    Cc: "9.2" <mesa-stable@lists.freedesktop.org>
    Tested-by: Julien Cristau <jcristau@debian.org>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    (cherry picked from commit 32637f56a5422b09ad945d21d8e60a8b990b0182)

diff --git a/src/gallium/auxiliary/os/os_process.c b/src/gallium/auxiliary/os/os_process.c
index 0557689..ef38e1d 100644
--- a/src/gallium/auxiliary/os/os_process.c
+++ b/src/gallium/auxiliary/os/os_process.c
@@ -32,10 +32,10 @@
 
 #if defined(PIPE_SUBSYSTEM_WINDOWS_USER)
 #  include <windows.h>
-#elif defined(PIPE_OS_BSD) || defined(PIPE_OS_APPLE)
-#  include <stdlib.h>
 #elif defined(__GLIBC__)
 #  include <errno.h>
+#elif defined(PIPE_OS_BSD) || defined(PIPE_OS_APPLE)
+#  include <stdlib.h>
 #else
 #warning unexpected platform in os_process.c
 #endif
@@ -68,11 +68,11 @@ os_get_process_name(char *procname, size_t size)
 
    name = lpProcessName;
 
+#elif defined(__GLIBC__)
+   name = program_invocation_short_name;
 #elif defined(PIPE_OS_BSD) || defined(PIPE_OS_APPLE)
    /* *BSD and OS X */
    name = getprogname();
-#elif defined(__GLIBC__)
-   name = program_invocation_short_name;
 #else
 #warning unexpected platform in os_process.c
    return FALSE;

commit 5461cc1f00dc9a06c94d05b0096e95e14652b013
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Mon Sep 9 11:11:03 2013 -0700

    i965/vec4: Only zero out unused message components when there are any.
    
    Otherwise, coordinates with four components would result in a MOV
    with a destination writemask that has no channels enabled:
    
    mov(8) g115<1>.F 0D { align16 WE_normal NoDDChk 1Q };
    
    At best, this is stupid: we emit code that shouldn't do anything.
    Worse, it apparently causes GPU hangs (observable with Chris's
    textureGather test on CubeArrays.)
    
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Cc: Chris Forbes <chrisf@ijw.co.nz>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 6c3db2167c64ecf2366862f15f8e2d4a91f1028c)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index 55f8b02..55ef2b5 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -2403,8 +2403,10 @@ vec4_visitor::visit(ir_texture *ir)
 	 emit(MOV(dst_reg(MRF, param_base, ir->coordinate->type, coord_mask),
 		  coordinate));
       }
-      emit(MOV(dst_reg(MRF, param_base, ir->coordinate->type, zero_mask),
-	       src_reg(0)));
+      if (zero_mask != 0) {
+         emit(MOV(dst_reg(MRF, param_base, ir->coordinate->type, zero_mask),
+                  src_reg(0)));
+      }
       /* Load the shadow comparitor */
       if (ir->shadow_comparitor && ir->op != ir_txd) {
 	 emit(MOV(dst_reg(MRF, param_base + 1, ir->shadow_comparitor->type,

commit 4fbbf49cc577feb9357455590c6f8d7283525e60
Author: Dominik Behr <dbehr@chromium.org>
Date:   Wed Sep 4 14:40:48 2013 -0700

    glsl: propagate max_array_access through function calls
    
    Fixes a bug where if an uniform array is passed to a function the accesses
    to the array are not propagated so later all but the first vector of the
    uniform array are removed in parcel_out_uniform_storage resulting in
    broken shaders and out of bounds access to arrays in
    brw::vec4_visitor::pack_uniform_registers.
    
    Cc: mesa-stable@lists.freedesktop.org
    Reviewed-and-Tested-by: Matt Turner <mattst88@gmail.com>
    Signed-off-by: Dominik Behr <dbehr@chromium.org>
    (cherry picked from commit 0f6fce15852d3d6fb5251e42394332a62788ef67)

diff --git a/src/glsl/link_functions.cpp b/src/glsl/link_functions.cpp
index 6b3e154..dd6f247 100644
--- a/src/glsl/link_functions.cpp
+++ b/src/glsl/link_functions.cpp
@@ -173,6 +173,38 @@ public:
       return visit_continue;
    }
 
+   virtual ir_visitor_status visit_leave(ir_call *ir)
+   {
+      /* Traverse list of function parameters, and for array parameters
+       * propagate max_array_access. Otherwise arrays that are only referenced
+       * from inside functions via function parameters will be incorrectly
+       * optimized. This will lead to incorrect code being generated (or worse).
+       * Do it when leaving the node so the children would propagate their
+       * array accesses first.
+       */
+
+      const exec_node *formal_param_node = ir->callee->parameters.get_head();
+      if (formal_param_node) {
+         const exec_node *actual_param_node = ir->actual_parameters.get_head();
+         while (!actual_param_node->is_tail_sentinel()) {
+            ir_variable *formal_param = (ir_variable *) formal_param_node;
+            ir_rvalue *actual_param = (ir_rvalue *) actual_param_node;
+
+            formal_param_node = formal_param_node->get_next();
+            actual_param_node = actual_param_node->get_next();
+
+            if (formal_param->type->is_array()) {
+               ir_dereference_variable *deref = actual_param->as_dereference_variable();
+               if (deref && deref->var && deref->var->type->is_array()) {
+                  deref->var->max_array_access =
+                     MAX2(formal_param->max_array_access, deref->var->max_array_access);
+               }
+            }
+         }
+      }
+      return visit_continue;
+   }
+
    virtual ir_visitor_status visit(ir_dereference_variable *ir)
    {
       if (hash_table_find(locals, ir->var) == NULL) {

commit 130fda3d3bd452322006d80277079167507d5417
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Wed Sep 4 02:06:05 2013 -0400

    nv30: fix inconsistent setting of push->user_priv
    
    It's set to &nv30->bufctx everywhere else.
    
    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Cc: "9.2" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 85f7df81a91b1825bf25adf3d4febcbb5e0a0d7e)

diff --git a/src/gallium/drivers/nv30/nv30_context.c b/src/gallium/drivers/nv30/nv30_context.c
index bd05042..4c4b89d 100644
--- a/src/gallium/drivers/nv30/nv30_context.c
+++ b/src/gallium/drivers/nv30/nv30_context.c
@@ -208,7 +208,7 @@ nv30_context_create(struct pipe_screen *pscreen, void *priv)
    /*XXX: *cough* per-context pushbufs */
    push = screen->base.pushbuf;
    nv30->base.pushbuf = push;
-   nv30->base.pushbuf->user_priv = push->user_priv; /* hack at validate time */
+   nv30->base.pushbuf->user_priv = &nv30->bufctx; /* hack at validate time */
    nv30->base.pushbuf->rsvd_kick = 16; /* hack in screen before first space */
    nv30->base.pushbuf->kick_notify = nv30_context_kick_notify;
 

commit 3a2926fdbf5fe741a0df7782c91d4f90b8df8acd
Author: Rico Schüller <kgbricola@web.de>
Date:   Sun Sep 1 21:30:19 2013 +0200

    glx: Initialize OpenGL version to 1.0
    
    The old code in dri2_glx suffered from a typographical error that caused
    the default version to be 2.1 instead of 1.2 (minimum required by the
    Linux OpenGL ABI).  drisw_glx had a similar error resulting in a default
    version of 0.1.
    
    Some driver/card combinations (r200/RV280, i915/915G) don't support
    OpenGL 2.1.  These create in some corner cases an indirect context
    instead of a direct context when calling glXCreateContextAttribsARB().
    This happens because of a bad default value.  To avoid this, just used
    the default value specified by the GLX_ARB_create_context specification:
    
        "The default values for GLX_CONTEXT_MAJOR_VERSION_ARB and
        GLX_CONTEXT_MINOR_VERSION_ARB are 1 and 0 respectively. In this
        case, implementations will typically return the most recent version
        of OpenGL they support which is backwards compatible with OpenGL 1.0
        (e.g. 3.0, 3.1 + GL_ARB_compatibility, or 3.2 compatibility
        profile)"
    
    Refactor all the default value setting to dri2_convert_glx_attribs, and
    make sure the correct defaults are set in that one place.
    
    Signed-off-by: Rico Schüller <kgbricola@web.de>
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
    Bugzilla http://bugs.winehq.org/show_bug.cgi?id=34238
    Cc: "9.1 9.2" <mesa-stable@lists.freedesktop.org>
    
    (cherry picked from commit 8b302e1635534bfc6ed3ad671f2428470b3a765d)

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index c54edac..112d6d4 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -260,12 +260,12 @@ dri2_create_context_attribs(struct glx_screen *base,
    __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) config_base;
    __DRIcontext *shared = NULL;
 
-   uint32_t minor_ver = 1;
-   uint32_t major_ver = 2;
-   uint32_t renderType = GLX_RGBA_TYPE;
-   uint32_t flags = 0;
+   uint32_t minor_ver;
+   uint32_t major_ver;
+   uint32_t renderType;
+   uint32_t flags;
    unsigned api;
-   int reset = __DRI_CTX_RESET_NO_NOTIFICATION;
+   int reset;
    uint32_t ctx_attribs[2 * 5];
    unsigned num_ctx_attribs = 0;
 
diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c
index b2a3117..5f199e9 100644
--- a/src/glx/dri_common.c
+++ b/src/glx/dri_common.c
@@ -470,8 +470,14 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
    bool got_profile = false;
    uint32_t profile;
 
+   *major_ver = 1;
+   *minor_ver = 0;
+   *render_type = GLX_RGBA_TYPE;
+   *reset = __DRI_CTX_RESET_NO_NOTIFICATION;
+   *flags = 0;
+   *api = __DRI_API_OPENGL;
+
    if (num_attribs == 0) {
-      *api = __DRI_API_OPENGL;
       return true;
    }
 
@@ -482,11 +488,6 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
       return false;
    }
 
-   *major_ver = 1;
-   *minor_ver = 0;
-   *render_type = GLX_RGBA_TYPE;
-   *reset = __DRI_CTX_RESET_NO_NOTIFICATION;
-
    for (i = 0; i < num_attribs; i++) {
       switch (attribs[i * 2]) {
       case GLX_CONTEXT_MAJOR_VERSION_ARB:
@@ -526,7 +527,6 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
       }
    }
 
-   *api = __DRI_API_OPENGL;
    if (!got_profile) {
       if (*major_ver > 3 || (*major_ver == 3 && *minor_ver >= 2))
 	 *api = __DRI_API_OPENGL_CORE;
diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c
index 0583cd1..393be20 100644
--- a/src/glx/drisw_glx.c
+++ b/src/glx/drisw_glx.c
@@ -433,12 +433,12 @@ drisw_create_context_attribs(struct glx_screen *base,
    struct drisw_screen *psc = (struct drisw_screen *) base;
    __DRIcontext *shared = NULL;
 
-   uint32_t minor_ver = 1;
-   uint32_t major_ver = 0;
-   uint32_t renderType = GLX_RGBA_TYPE;
-   uint32_t flags = 0;
+   uint32_t minor_ver;
+   uint32_t major_ver;
+   uint32_t renderType;
+   uint32_t flags;
    unsigned api;
-   int reset = __DRI_CTX_RESET_NO_NOTIFICATION;
+   int reset;
    uint32_t ctx_attribs[2 * 4];
    unsigned num_ctx_attribs = 0;
 

commit 616da8f8183e28174b16ba854296361c2e84ab46
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Fri Aug 30 14:04:18 2013 -0700

    glsl: Reallow precision qualifiers on structure members
    
    Changes to the grammar for GL_ARB_shading_language_420pack (commit
    6eec502) moved precision qualifiers out of the type_specifier production
    chain.  This caused declarations such as:
    
        struct S {
            lowp float f;
        };
    
    to generate parse errors.  Section 4.1.8 (Structures) of both the GLSL
    ES 1.00 spec and GLSL 1.30 specs says:
    
            "Member declarators may contain precision qualifiers, but may not
            contain any other qualifiers."
    
    So, it sure seems like we shouldn't generate a parse error. :)
    
    Instead of type_specifier, use fully_specified_type in struct members.
    However, fully_specified_type allows a lot of other qualifiers that are
    not allowed on structure members, so expeclitly disallow them.
    
    Note, this makes struct_declaration look an awful lot like
    member_declaration (used for interface blocks).  We may want to
    (somehow) unify these rules to reduce code duplication at some point.
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68753
    Reported-by: Aras Pranckevicius <aras@unity3d.com>
    Cc: Aras Pranckevicius <aras@unity3d.com>
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Matt Turner <mattst88@gmail.com>
    Cc: "9.2" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 87252bf97b62bd536632978b9d53e4025b7db77d)

diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
index d60a1e0..a87feaf 100644
--- a/src/glsl/glsl_parser.yy
+++ b/src/glsl/glsl_parser.yy
@@ -1667,13 +1667,17 @@ struct_declaration_list:
    ;
 
 struct_declaration:
-   type_specifier struct_declarator_list ';'
+   fully_specified_type struct_declarator_list ';'
    {
       void *ctx = state;
-      ast_fully_specified_type *type = new(ctx) ast_fully_specified_type();
+      ast_fully_specified_type *const type = $1;
       type->set_location(yylloc);
 
-      type->specifier = $1;
+      if (type->qualifier.flags.i != 0)
+         _mesa_glsl_error(&@1, state,
+			  "only precision qualifiers may be applied to "
+			  "structure members");
+
       $$ = new(ctx) ast_declarator_list(type);
       $$->set_location(yylloc);
 

commit 72295c5f6715555082455072bfd29a1e5ae545de
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Mon Sep 2 17:08:48 2013 +0200

    nvc0: restore viewport after blit
    
    Based on calim's original fix in the nine branch.
    
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
    Cc: "9.2 and 9.1" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit ad4dc7723199b3052231f5b4aed1bd1ba1505025)

diff --git a/src/gallium/drivers/nvc0/nvc0_context.h b/src/gallium/drivers/nvc0/nvc0_context.h
index e4029c5..a18cd00 100644
--- a/src/gallium/drivers/nvc0/nvc0_context.h
+++ b/src/gallium/drivers/nvc0/nvc0_context.h
@@ -198,6 +198,7 @@ struct nvc0_context {
    struct pipe_surface *surfaces[2][NVC0_MAX_SURFACE_SLOTS];
    uint16_t surfaces_dirty[2];
    uint16_t surfaces_valid[2];
+   uint32_t vport_int[2];
 
    struct util_dynarray global_residents;
 
diff --git a/src/gallium/drivers/nvc0/nvc0_state_validate.c b/src/gallium/drivers/nvc0/nvc0_state_validate.c
index 1e14723..22c9a84 100644
--- a/src/gallium/drivers/nvc0/nvc0_state_validate.c
+++ b/src/gallium/drivers/nvc0/nvc0_state_validate.c
@@ -245,9 +245,11 @@ nvc0_validate_viewport(struct nvc0_context *nvc0)
     zmin = vp->translate[2] - fabsf(vp->scale[2]);
     zmax = vp->translate[2] + fabsf(vp->scale[2]);
 
+    nvc0->vport_int[0] = (w << 16) | x;
+    nvc0->vport_int[1] = (h << 16) | y;
     BEGIN_NVC0(push, NVC0_3D(VIEWPORT_HORIZ(0)), 2);
-    PUSH_DATA (push, (w << 16) | x);
-    PUSH_DATA (push, (h << 16) | y);
+    PUSH_DATA (push, nvc0->vport_int[0]);
+    PUSH_DATA (push, nvc0->vport_int[1]);
     BEGIN_NVC0(push, NVC0_3D(DEPTH_RANGE_NEAR(0)), 2);
     PUSH_DATAf(push, zmin);
     PUSH_DATAf(push, zmax);
diff --git a/src/gallium/drivers/nvc0/nvc0_surface.c b/src/gallium/drivers/nvc0/nvc0_surface.c
index 606a2b5..4ef1a44 100644
--- a/src/gallium/drivers/nvc0/nvc0_surface.c
+++ b/src/gallium/drivers/nvc0/nvc0_surface.c
@@ -948,8 +948,8 @@ nvc0_blit_3d(struct nvc0_context *nvc0, const struct pipe_blit_info *info)
    /* restore viewport */
 
    BEGIN_NVC0(push, NVC0_3D(VIEWPORT_HORIZ(0)), 2);
-   PUSH_DATA (push, nvc0->framebuffer.width << 16);
-   PUSH_DATA (push, nvc0->framebuffer.height << 16);
+   PUSH_DATA (push, nvc0->vport_int[0]);
+   PUSH_DATA (push, nvc0->vport_int[1]);
    IMMED_NVC0(push, NVC0_3D(VIEWPORT_TRANSFORM_EN), 1);
 }
 

commit a6a2039a442c249dc59f0bdfb8b003f69548f338
Author: Christoph Bumiller <christoph.bumiller@speed.at>
Date:   Sun May 12 16:42:45 2013 +0200

    nvc0: delete compute object on screen destruction
    
    Cc: "9.2" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 7fe159ba7442b4558d4d06ad8c236ae565f5e5d8)


Reply to: