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

mesa: Changes to 'debian-experimental'



 Makefile.am                                                |    2 
 bin/.cherry-ignore                                         |    3 
 configure.ac                                               |   38 +-
 debian/changelog                                           |    4 
 debian/patches/15-fix-oot-build.diff                       |    9 
 docs/relnotes-9.1.html                                     |    1 
 src/egl/drivers/dri2/platform_wayland.c                    |    8 
 src/gallium/auxiliary/util/u_surface.c                     |    4 
 src/gallium/drivers/r600/evergreen_state.c                 |   31 +
 src/gallium/drivers/r600/r600_asm.c                        |    8 
 src/gallium/drivers/r600/r600_llvm.c                       |    2 
 src/gallium/drivers/r600/r600_state.c                      |   41 +-
 src/gallium/drivers/r600/r600_state_common.c               |    5 
 src/gallium/drivers/radeonsi/radeonsi_pipe.c               |    2 
 src/gallium/drivers/radeonsi/radeonsi_shader.c             |   67 +++
 src/gallium/drivers/radeonsi/si_state.c                    |   67 ++-
 src/gallium/drivers/softpipe/sp_tex_sample.c               |    1 
 src/gallium/drivers/svga/svga_state_rss.c                  |   11 
 src/gallium/state_trackers/egl/Makefile.am                 |    1 
 src/gallium/state_trackers/xorg/xorg_exa.c                 |    2 
 src/gallium/winsys/radeon/drm/radeon_drm_bo.c              |    7 
 src/glsl/ast_to_hir.cpp                                    |   58 ++-
 src/glsl/builtin_compiler/Makefile.am                      |   43 +-
 src/glsl/glsl_types.cpp                                    |   18 +
 src/glsl/glsl_types.h                                      |    6 
 src/glsl/link_uniform_blocks.cpp                           |    6 
 src/glsl/link_uniforms.cpp                                 |   24 -
 src/glsl/link_varyings.cpp                                 |  227 ++++++++-----
 src/glsl/link_varyings.h                                   |   59 +++
 src/glsl/linker.cpp                                        |   59 +++
 src/glsl/linker.h                                          |   33 -
 src/glsl/program.h                                         |    4 
 src/glx/dri2_glx.c                                         |    8 
 src/mesa/drivers/dri/i965/brw_blorp_blit.cpp               |  114 +++++-
 src/mesa/drivers/dri/i965/brw_context.c                    |   19 +
 src/mesa/drivers/dri/i965/brw_context.h                    |    8 
 src/mesa/drivers/dri/i965/brw_fs.cpp                       |   35 +-
 src/mesa/drivers/dri/i965/brw_fs.h                         |    1 
 src/mesa/drivers/dri/i965/brw_fs_emit.cpp                  |    4 
 src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp |    9 
 src/mesa/drivers/dri/i965/brw_primitive_restart.c          |    4 
 src/mesa/drivers/dri/i965/brw_state.h                      |    5 
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp             |   20 -
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c           |   18 -
 src/mesa/drivers/dri/i965/gen6_blorp.cpp                   |   19 +
 src/mesa/drivers/dri/i965/gen6_sf_state.c                  |   69 ++-
 src/mesa/drivers/dri/i965/gen7_sampler_state.c             |    2 
 src/mesa/drivers/dri/i965/gen7_sf_state.c                  |   36 +-
 src/mesa/drivers/dri/i965/gen7_wm_surface_state.c          |    3 
 src/mesa/drivers/dri/intel/intel_extensions.c              |    4 
 src/mesa/drivers/dri/intel/intel_fbo.c                     |   30 +
 src/mesa/drivers/dri/intel/intel_fbo.h                     |    4 
 src/mesa/drivers/dri/intel/intel_tex_copy.c                |   32 +
 src/mesa/drivers/osmesa/osmesa.c                           |    3 
 src/mesa/drivers/x11/xm_dd.c                               |    3 
 src/mesa/main/bufferobj.c                                  |    7 
 src/mesa/main/extensions.c                                 |    1 
 src/mesa/main/get_hash_params.py                           |    4 
 src/mesa/main/glformats.c                                  |   12 
 src/mesa/main/pack.c                                       |   26 +
 src/mesa/main/renderbuffer.h                               |    8 
 src/mesa/main/shaderapi.c                                  |   14 
 src/mesa/main/texgetimage.c                                |   92 ++++-
 src/mesa/main/teximage.c                                   |   42 +-
 src/mesa/main/uniform_query.cpp                            |   85 +---
 src/mesa/main/uniforms.h                                   |    4 
 src/mesa/main/version.h                                    |    2 
 src/mesa/program/ir_to_mesa.cpp                            |    4 
 src/mesa/state_tracker/st_cb_drawpixels.c                  |    6 
 src/mesa/state_tracker/st_cb_texture.c                     |    2 
 src/mesa/state_tracker/st_extensions.c                     |   12 
 src/mesa/state_tracker/st_format.c                         |   29 +
 src/mesa/state_tracker/st_format.h                         |    2 
 src/mesa/state_tracker/st_texture.c                        |    3 
 74 files changed, 1198 insertions(+), 458 deletions(-)

New commits:
commit 6bd7e21c3079efeccbbb61f93eadbd5aa8d3cee2
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Wed Feb 20 17:27:42 2013 +0100

    Update patch 15-fix-oot-build.diff
    
    Second hunk was applied upstream in commit
    c684e3b53e63b1f7797221312189125669bd38b4.

diff --git a/debian/patches/15-fix-oot-build.diff b/debian/patches/15-fix-oot-build.diff
index 7604766..7040999 100644
--- a/debian/patches/15-fix-oot-build.diff
+++ b/debian/patches/15-fix-oot-build.diff
@@ -11,12 +11,3 @@ index d647a64..d770699 100644
  	-I$(top_srcdir)/include
  
  noinst_LTLIBRARIES = libegl.la
-@@ -71,7 +71,7 @@ AM_CFLAGS += \
- AM_CPPFLAGS += \
- 	-I$(top_srcdir)/src/gallium/winsys \
- 	-I$(top_srcdir)/src/egl/wayland/wayland-egl \
--	-I$(top_srcdir)/src/egl/wayland/wayland-drm \
-+	-I$(top_builddir)/src/egl/wayland/wayland-drm \
- 	-DHAVE_WAYLAND_BACKEND
- endif
- 

commit 5a00752952a6563b42dc06d23a042c10b275a2fa
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Wed Feb 20 17:25:27 2013 +0100

    New upstream release candidate

diff --git a/debian/changelog b/debian/changelog
index ed86a15..dcae15f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,6 @@
-mesa (9.1~git20130207.f1c46c84-1) UNRELEASED; urgency=low
+mesa (9.1~rc2-1) UNRELEASED; urgency=low
 
-  * New upstream snapshot.
+  * New upstream release candidate.
     - Set close on exec flag when opening dri devices (Closes: #651370).
 
   [ Julien Cristau ]

commit 456cdb6d01bd317e46c4e528f7565269a20001d4
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Sun Feb 17 14:49:02 2013 -0800

    mesa: Bump version to 9.1-rc2
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>

diff --git a/Makefile.am b/Makefile.am
index cc94111..be42097 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,7 +36,7 @@ check-local:
 
 # Rules for making release tarballs
 
-PACKAGE_VERSION=9.1-rc1
+PACKAGE_VERSION=9.1-rc2
 PACKAGE_DIR = Mesa-$(PACKAGE_VERSION)
 PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
 
diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h
index 9834560..a99381a 100644
--- a/src/mesa/main/version.h
+++ b/src/mesa/main/version.h
@@ -35,7 +35,7 @@ struct gl_context;
 #define MESA_MAJOR 9
 #define MESA_MINOR 1
 #define MESA_PATCH 0
-#define MESA_VERSION_STRING "9.1-rc1"
+#define MESA_VERSION_STRING "9.1-rc2"
 
 /* To make version comparison easy */
 #define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

commit aaee8623052f55fd0237a360784c98dfc10e26f5
Author: Eric Anholt <eric@anholt.net>
Date:   Tue Feb 5 15:36:18 2013 -0800

    i965/fs: Use a helper function for checking for flow control instructions.
    
    In 2 of our checks, we were missing BREAK and CONTINUE.
    
    NOTE: Candidate for the stable branches.
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    (cherry picked from commit bf91f0b03942d966cf453201dc52c4aa4049f8fa)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 8e57eb0..8dab431 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -328,6 +328,23 @@ fs_inst::is_math()
 }
 
 bool
+fs_inst::is_control_flow()
+{
+   switch (opcode) {
+   case BRW_OPCODE_DO:
+   case BRW_OPCODE_WHILE:
+   case BRW_OPCODE_IF:
+   case BRW_OPCODE_ELSE:
+   case BRW_OPCODE_ENDIF:
+   case BRW_OPCODE_BREAK:
+   case BRW_OPCODE_CONTINUE:
+      return true;
+   default:
+      return false;
+   }
+}
+
+bool
 fs_inst::is_send_from_grf()
 {
    return (opcode == FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_GEN7 ||
@@ -2070,16 +2087,12 @@ fs_visitor::compute_to_mrf()
 	    break;
 	 }
 
-	 /* We don't handle flow control here.  Most computation of
+	 /* We don't handle control flow here.  Most computation of
 	  * values that end up in MRFs are shortly before the MRF
 	  * write anyway.
 	  */
-	 if (scan_inst->opcode == BRW_OPCODE_DO ||
-	     scan_inst->opcode == BRW_OPCODE_WHILE ||
-	     scan_inst->opcode == BRW_OPCODE_ELSE ||
-	     scan_inst->opcode == BRW_OPCODE_ENDIF) {
+	 if (scan_inst->is_control_flow() && scan_inst->opcode != BRW_OPCODE_IF)
 	    break;
-	 }
 
 	 /* You can't read from an MRF, so if someone else reads our
 	  * MRF's source GRF that we wanted to rewrite, that stops us.
@@ -2163,16 +2176,8 @@ fs_visitor::remove_duplicate_mrf_writes()
    foreach_list_safe(node, &this->instructions) {
       fs_inst *inst = (fs_inst *)node;
 
-      switch (inst->opcode) {
-      case BRW_OPCODE_DO:
-      case BRW_OPCODE_WHILE:
-      case BRW_OPCODE_IF:
-      case BRW_OPCODE_ELSE:
-      case BRW_OPCODE_ENDIF:
+      if (inst->is_control_flow()) {
 	 memset(last_mrf_move, 0, sizeof(last_mrf_move));
-	 continue;
-      default:
-	 break;
       }
 
       if (inst->opcode == BRW_OPCODE_MOV &&
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index d332502..88fecb9 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -178,6 +178,7 @@ public:
    bool overwrites_reg(const fs_reg &reg);
    bool is_tex();
    bool is_math();
+   bool is_control_flow();
    bool is_send_from_grf();
 
    fs_reg dst;
diff --git a/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp b/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp
index 3fbca6c..c125928 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp
@@ -816,15 +816,8 @@ fs_visitor::schedule_instructions(bool post_reg_alloc)
 	 next_block_header = (fs_inst *)next_block_header->next;
 
 	 sched.add_inst(inst);
-	 if (inst->opcode == BRW_OPCODE_IF ||
-	     inst->opcode == BRW_OPCODE_ELSE ||
-	     inst->opcode == BRW_OPCODE_ENDIF ||
-	     inst->opcode == BRW_OPCODE_DO ||
-	     inst->opcode == BRW_OPCODE_WHILE ||
-	     inst->opcode == BRW_OPCODE_BREAK ||
-	     inst->opcode == BRW_OPCODE_CONTINUE) {
+         if (inst->is_control_flow())
 	    break;
-	 }
       }
       sched.calculate_deps();
       sched.schedule_instructions(next_block_header);

commit b84d9aa0c661753d486bc87bc22198c5798947a8
Author: bma <Bo.Ma@windriver.com>
Date:   Tue Feb 12 08:42:36 2013 +0200

    shaderapi: Fix AttachShader error
    
    Detect a duplicate Shader type as and error instead of silently allowing
    it, restrict to ES2 API.
    
    v2: Tapani Pälli <tapani.palli@intel.com>
        - make the check run time instead of compile time
    
    v3: chadv
        - Quote spec on which error to generate.
    
    Signed-off-by: bma <Bo.Ma@windriver.com>
    Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
    Reviewed-and-tested-by: Chad Versace <chad.versace@linux.intel.com>
    (cherry picked from commit ce3dfa19ab27871d7eecd5664c1674e467b736bc)

diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 2590abe..be69467 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -207,6 +207,8 @@ attach_shader(struct gl_context *ctx, GLuint program, GLuint shader)
    struct gl_shader *sh;
    GLuint i, n;
 
+   const bool same_type_disallowed = _mesa_is_gles(ctx);
+
    shProg = _mesa_lookup_shader_program_err(ctx, program, "glAttachShader");
    if (!shProg)
       return;
@@ -227,6 +229,18 @@ attach_shader(struct gl_context *ctx, GLuint program, GLuint shader)
           */
          _mesa_error(ctx, GL_INVALID_OPERATION, "glAttachShader");
          return;
+      } else if (same_type_disallowed &&
+                 shProg->Shaders[i]->Type == sh->Type) {
+        /* Shader with the same type is already attached to this program,
+         * OpenGL ES 2.0 and 3.0 specs say:
+         *
+         *      "Multiple shader objects of the same type may not be attached
+         *      to a single program object. [...] The error INVALID_OPERATION
+         *      is generated if [...] another shader object of the same type
+         *      as shader is already attached to program."
+         */
+         _mesa_error(ctx, GL_INVALID_OPERATION, "glAttachShader");
+         return;
       }
    }
 

commit bb4b1494e32b85dc5caa777c391b30b3dda5c785
Author: Eric Anholt <eric@anholt.net>
Date:   Wed Feb 6 15:22:45 2013 -0800

    i965: Re-enable the -RHW workaround for original gen4 chips.
    
    Fixes broken clipping in supertuxkart and presumably many other applications.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51471
    NOTE: Candidate for the stable branches.
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    (cherry picked from commit cb4616d32dc85e60dba08d86581dbb0d6d1b7ffa)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index 1863fe5..ae4cf7d 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -2420,18 +2420,14 @@ vec4_visitor::emit_psiz_and_flags(struct brw_reg reg)
        * clipped against all fixed planes.
        */
       if (brw->has_negative_rhw_bug) {
-#if 0
-	 /* FINISHME */
-	 brw_CMP(p,
-		 vec8(brw_null_reg()),
-		 BRW_CONDITIONAL_L,
-		 brw_swizzle1(output_reg[BRW_VERT_RESULT_NDC], 3),
-		 brw_imm_f(0));
-
-	 brw_OR(p, brw_writemask(header1, WRITEMASK_W), header1, brw_imm_ud(1<<6));
-	 brw_MOV(p, output_reg[BRW_VERT_RESULT_NDC], brw_imm_f(0));
-	 brw_set_predicate_control(p, BRW_PREDICATE_NONE);
-#endif
+         src_reg ndc_w = src_reg(output_reg[BRW_VERT_RESULT_NDC]);
+         ndc_w.swizzle = BRW_SWIZZLE_WWWW;
+         emit(CMP(dst_null_f(), ndc_w, src_reg(0.0f), BRW_CONDITIONAL_L));
+         vec4_instruction *inst;
+         inst = emit(OR(header1_w, src_reg(header1_w), src_reg(1u << 6)));
+         inst->predicate = BRW_PREDICATE_NORMAL;
+         inst = emit(MOV(output_reg[BRW_VERT_RESULT_NDC], src_reg(0.0f)));
+         inst->predicate = BRW_PREDICATE_NORMAL;
       }
 
       emit(MOV(retype(reg, BRW_REGISTER_TYPE_UD), src_reg(header1)));

commit 321abaaa8d6afe56c5de69d32e914a893259e0bc
Author: Eric Anholt <eric@anholt.net>
Date:   Tue Feb 5 17:39:35 2013 -0800

    i965/gen4: Work around missing sRGB RGB DXT1 support.
    
    The hardware just doesn't support it.  I suspect this was a regression from
    the move to fixed MESA_FORMATs for compressed textures and that previously we
    were storing uncompressed for this or something.
    
    Fixes GPU hangs in piglit "texwrap GL_EXT_texture_sRGB-s3tc bordercolor
    swizzled" on my GM965.
    
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    (cherry picked from commit ddc2b453d02f2a9460efcc6c6198f56ba89e87fe)

diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h
index adc64e3..ecc61c4 100644
--- a/src/mesa/drivers/dri/i965/brw_state.h
+++ b/src/mesa/drivers/dri/i965/brw_state.h
@@ -197,7 +197,8 @@ uint32_t brw_format_for_mesa_format(gl_format mesa_format);
 
 GLuint translate_tex_target(GLenum target);
 
-GLuint translate_tex_format(gl_format mesa_format,
+GLuint translate_tex_format(struct intel_context *intel,
+                            gl_format mesa_format,
 			    GLenum internal_format,
 			    GLenum depth_mode,
 			    GLenum srgb_decode);
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 7f7b7eb..6ec7d71 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -622,7 +622,8 @@ brw_render_target_supported(struct intel_context *intel,
 }
 
 GLuint
-translate_tex_format(gl_format mesa_format,
+translate_tex_format(struct intel_context *intel,
+                     gl_format mesa_format,
 		     GLenum internal_format,
 		     GLenum depth_mode,
 		     GLenum srgb_decode)
@@ -651,6 +652,17 @@ translate_tex_format(gl_format mesa_format,
        */
       return BRW_SURFACEFORMAT_R32G32B32A32_FLOAT;
 
+   case MESA_FORMAT_SRGB_DXT1:
+      if (intel->gen == 4 && !intel->is_g4x) {
+         /* Work around missing SRGB DXT1 support on original gen4 by just
+          * skipping SRGB decode.  It's not worth not supporting sRGB in
+          * general to prevent this.
+          */
+         WARN_ONCE(true, "Demoting sRGB DXT1 texture to non-sRGB\n");
+         mesa_format = MESA_FORMAT_RGB_DXT1;
+      }
+      return brw_format_for_mesa_format(mesa_format);
+
    default:
       assert(brw_format_for_mesa_format(mesa_format) != 0);
       return brw_format_for_mesa_format(mesa_format);
@@ -829,6 +841,7 @@ brw_update_texture_surface(struct gl_context *ctx,
                            uint32_t *binding_table,
                            unsigned surf_index)
 {
+   struct intel_context *intel = intel_context(ctx);
    struct brw_context *brw = brw_context(ctx);
    struct gl_texture_object *tObj = ctx->Texture.Unit[unit]._Current;
    struct intel_texture_object *intelObj = intel_texture_object(tObj);
@@ -851,7 +864,8 @@ brw_update_texture_surface(struct gl_context *ctx,
    surf[0] = (translate_tex_target(tObj->Target) << BRW_SURFACE_TYPE_SHIFT |
 	      BRW_SURFACE_MIPMAPLAYOUT_BELOW << BRW_SURFACE_MIPLAYOUT_SHIFT |
 	      BRW_SURFACE_CUBEFACE_ENABLES |
-	      (translate_tex_format(mt->format,
+	      (translate_tex_format(intel,
+                                    mt->format,
 				    firstImage->InternalFormat,
 				    tObj->DepthMode,
 				    sampler->sRGBDecode) <<
diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
index 236d50c..24f1b9c 100644
--- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
@@ -308,7 +308,8 @@ gen7_update_texture_surface(struct gl_context *ctx,
                                     8 * 4, 32, &binding_table[surf_index]);
    memset(surf, 0, 8 * 4);
 
-   uint32_t tex_format = translate_tex_format(mt->format,
+   uint32_t tex_format = translate_tex_format(intel,
+                                              mt->format,
                                               firstImage->InternalFormat,
                                               tObj->DepthMode,
                                               sampler->sRGBDecode);

commit 95f1203a7c4471ba72a5e153659b515c52fefc53
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Sun Feb 17 14:16:22 2013 -0800

    mesa: Add .cherry-ignore for 9.1
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>

diff --git a/bin/.cherry-ignore b/bin/.cherry-ignore
new file mode 100644
index 0000000..829fab9
--- /dev/null
+++ b/bin/.cherry-ignore
@@ -0,0 +1,3 @@
+d60da27273d2cdb68bc32cae2ca66718dab15f27 st/mesa: set ctx->Const.MaxSamples = 0, not 1
+5c86a728d4f688c0fe7fbf9f4b8f88060b65c4ee r600g: fix htile buffer leak
+496928a442cec980b534bc5da2523b3632b21b61 CopyTexImage: Don't check sRGB vs LINEAR for desktop GL

commit 96fb4d61fb0aee76faad8b8b063ae9a833b2aeab
Author: Christopher James Halse Rogers <raof@ubuntu.com>
Date:   Sat Feb 16 16:39:07 2013 +1100

    i965: Fix leak in blorp CopyTexSubImage2D
    
    _mesa_delete_renderbuffer does not call the driver-specific
    renderbuffer delete function, so the blorp code was leaking the
    Intel-specific bits, including some GEM objects.
    
    Call the renderbuffer's ->Delete() method instead, which does the
    right thing.
    
    Fixes Unity rapidly sending the machine into the arms of the OOM-killer
    
    Note: This is a candidate for the 9.1 branch.
    
    Reviewed-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit dd599188d2868838541859a76800a8420958d358)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index 3615b09..d1ab7cb 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -337,7 +337,7 @@ brw_blorp_copytexsubimage(struct intel_context *intel,
    GLbitfield buffer_bit = 0;
 
    if (!formats_match(buffer_bit, src_irb, dst_irb)) {
-      _mesa_delete_renderbuffer(ctx, dst_rb);
+      dst_rb->Delete(ctx, dst_rb);
       return false;
    }
 
@@ -387,7 +387,7 @@ brw_blorp_copytexsubimage(struct intel_context *intel,
                     srcX0, srcY0, dstX0, dstY0, dstX1, dstY1, false, mirror_y);
    }
 
-   _mesa_delete_renderbuffer(ctx, dst_rb);
+   dst_rb->Delete(ctx, dst_rb);
    return true;
 }
 

commit d8a0439c65ab4fcc87ee1607b98b6efb18491117
Author: Brian Paul <brianp@vmware.com>
Date:   Thu Feb 14 12:24:02 2013 -0700

    st/mesa: fix format query for GL_ARB_texture_rg
    
    The GL_ARB_texture_rg spec says that we need to support both texturing
    and rendering for the GL_RED and GL_RG formats.  So move the format
    check up into the rendertarget_mapping[] list.  Also, add
    PIPE_FORMAT_R8_UNORM to the list of formats required.
    
    Note: This is a candidate for the stable branches.
    
    Reviewed-by: Marek Olšák <maraeo@gmail.com>
    (cherry picked from commit 4be5a067527107a383596c28f14bd76492c1cb4b)

diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index 8f4bc91..5f03cec 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -421,6 +421,10 @@ void st_init_extensions(struct st_context *st)
       { { o(EXT_texture_integer) },
         { PIPE_FORMAT_R32G32B32A32_UINT,
           PIPE_FORMAT_R32G32B32A32_SINT } },
+
+      { { o(ARB_texture_rg) },
+        { PIPE_FORMAT_R8_UNORM,
+          PIPE_FORMAT_R8G8_UNORM } },
    };
 
    /* Required: depth stencil and sampler support */
@@ -444,9 +448,6 @@ void st_init_extensions(struct st_context *st)
           PIPE_FORMAT_RGTC2_UNORM,
           PIPE_FORMAT_RGTC2_SNORM } },
 
-      { { o(ARB_texture_rg) },
-        { PIPE_FORMAT_R8G8_UNORM } },
-
       { { o(EXT_texture_compression_latc) },
         { PIPE_FORMAT_LATC1_UNORM,
           PIPE_FORMAT_LATC1_SNORM,

commit c785315f3d6b957c6124ce9efafdd47c8d8526a6
Author: Eric Anholt <eric@anholt.net>
Date:   Wed Feb 13 21:21:45 2013 -0800

    i965/gen7: Set up all samplers even if samplers are sparsely used.
    
    In GLSL, sampler indices are allocated contiguously from 0.  But in the
    case of ARB_fragment_program (and possibly fixed function), an app that
    uses texture 0 and 2 will use sampler indices 0 and 2, so we were only
    allocating space for samplers 0 and 1 and setting up sampler 0.  We
    would read garbage for sampler 2, resulting in flickering textures and
    an angry simulator.
    
    Fixes bad rendering in 0 A.D. and ETQW.  This was fixed for pre-gen7 by
    28f4be9eb91b12a2c6b1db6660cca71a98c486ec
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=25201
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58680
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    NOTE: This is a candidate for stable branches.
    (cherry picked from commit 5bb05c6e6d596d66c177e42a36128d2ca2e300aa)

diff --git a/src/mesa/drivers/dri/i965/gen7_sampler_state.c b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
index 6f0a757..1fb947f 100644
--- a/src/mesa/drivers/dri/i965/gen7_sampler_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
@@ -196,7 +196,7 @@ gen7_upload_samplers(struct brw_context *brw)
 
    GLbitfield SamplersUsed = vs->SamplersUsed | fs->SamplersUsed;
 
-   brw->sampler.count = _mesa_bitcount(SamplersUsed);
+   brw->sampler.count = _mesa_fls(SamplersUsed);
 
    if (brw->sampler.count == 0)
       return;

commit 0e3c755ca3b0bcb1fa83fa82165f008f4d1dfafd
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Sun Feb 10 16:55:19 2013 -0800

    i965: Use derived state for Haswell's 3DSTATE_VF packet.
    
    Otherwise, we fail to correctly handle GL_PRIMITIVE_RESTART_FIXED_INDEX.
    
    Fixes gles3conform's primitive_restart_mode test.
    
    NOTE: This is a candidate for the 9.1 branch.
    
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit 8cabe26f5dc4c66ae59649cfd7b25f761cda250b)

diff --git a/src/mesa/drivers/dri/i965/brw_primitive_restart.c b/src/mesa/drivers/dri/i965/brw_primitive_restart.c
index 8c7219d..e6902b4 100644
--- a/src/mesa/drivers/dri/i965/brw_primitive_restart.c
+++ b/src/mesa/drivers/dri/i965/brw_primitive_restart.c
@@ -196,11 +196,11 @@ haswell_upload_cut_index(struct brw_context *brw)
       return;
 
    const unsigned cut_index_setting =
-      ctx->Array.PrimitiveRestart ? HSW_CUT_INDEX_ENABLE : 0;
+      ctx->Array._PrimitiveRestart ? HSW_CUT_INDEX_ENABLE : 0;
 
    BEGIN_BATCH(2);
    OUT_BATCH(_3DSTATE_VF << 16 | cut_index_setting | (2 - 2));
-   OUT_BATCH(ctx->Array.RestartIndex);
+   OUT_BATCH(ctx->Array._RestartIndex);
    ADVANCE_BATCH();
 }
 

commit 4d11454e902a8ea5132bb767af6540e63b912f81
Author: Brian Paul <brianp@vmware.com>
Date:   Mon Feb 11 16:39:42 2013 -0700

    util: fix incorrect Z bit masking in util_clear_depth_stencil()
    
    For PIPE_FORMAT_Z24_UNORM_S8_UINT, the Z bits are in the 24
    least significant bits.
    
    Fixes http://bugs.freedesktop.org/show_bug.cgi?id=60527
    and http://bugs.freedesktop.org/show_bug.cgi?id=60524
    and http://bugs.freedesktop.org/show_bug.cgi?id=60047
    
    Note: This is a candidate for the stable branches.
    
    Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
    (cherry picked from commit 4bfdef87e66bfb2459af570351798d7754ddfb9f)

diff --git a/src/gallium/auxiliary/util/u_surface.c b/src/gallium/auxiliary/util/u_surface.c
index 37f4815..b948b46 100644
--- a/src/gallium/auxiliary/util/u_surface.c
+++ b/src/gallium/auxiliary/util/u_surface.c
@@ -421,10 +421,10 @@ util_clear_depth_stencil(struct pipe_context *pipe,
          else {
             uint32_t dst_mask;
             if (format == PIPE_FORMAT_Z24_UNORM_S8_UINT)
-               dst_mask = 0xffffff00;
+               dst_mask = 0x00ffffff;
             else {
                assert(format == PIPE_FORMAT_S8_UINT_Z24_UNORM);
-               dst_mask = 0xffffff;
+               dst_mask = 0xffffff00;
             }
             if (clear_flags & PIPE_CLEAR_DEPTH)
                dst_mask = ~dst_mask;

commit 9838215f3ce94358a4276fc83fe315b92a33102f
Author: Marek Olšák <maraeo@gmail.com>
Date:   Wed Feb 6 22:39:53 2013 +0100

    mesa: fix GetTexImage if mesa format and internal format don't match
    
    Tested with softpipe only exposing RGBA formats.
    
    NOTE: This is a candidate for the stable branches.
    
    Reviewed-by: Brian Paul <brianp@vmware.com>
    (cherry picked from commit cb6470775c0139323bf889d2df2facdbc06a2b09)

diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c
index e00ae63..d976e5a 100644
--- a/src/mesa/main/pack.c
+++ b/src/mesa/main/pack.c
@@ -6027,6 +6027,20 @@ _mesa_rebase_rgba_float(GLuint n, GLfloat rgba[][4], GLenum baseFormat)
          rgba[i][ACOMP] = 1.0F;
       }
       break;
+   case GL_RG:
+      for (i = 0; i < n; i++) {
+         rgba[i][BCOMP] = 0.0F;
+         rgba[i][ACOMP] = 1.0F;
+      }
+      break;
+   case GL_RED:
+      for (i = 0; i < n; i++) {
+         rgba[i][GCOMP] = 0.0F;
+         rgba[i][BCOMP] = 0.0F;
+         rgba[i][ACOMP] = 1.0F;
+      }
+      break;
+
    default:
       /* no-op */
       ;
@@ -6070,6 +6084,18 @@ _mesa_rebase_rgba_uint(GLuint n, GLuint rgba[][4], GLenum baseFormat)
          rgba[i][ACOMP] = 1;
       }
       break;
+   case GL_RG:
+      for (i = 0; i < n; i++) {
+         rgba[i][BCOMP] = 0;
+         rgba[i][ACOMP] = 1;
+      }
+      break;
+   case GL_RED:
+      for (i = 0; i < n; i++) {
+         rgba[i][GCOMP] = 0;
+         rgba[i][BCOMP] = 0;
+         rgba[i][ACOMP] = 1;
+      }
    default:
       /* no-op */
       ;
diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
index d1c00e8..7299a4b 100644
--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -367,6 +367,7 @@ get_tex_rgba_uncompressed(struct gl_context *ctx, GLuint dimensions,
    GLuint (*rgba_uint)[4];
    GLboolean tex_is_integer = _mesa_is_format_integer_color(texImage->TexFormat);
    GLboolean tex_is_uint = _mesa_is_format_unsigned(texImage->TexFormat);
+   GLenum texBaseFormat = _mesa_get_format_base_format(texImage->TexFormat);
 
    /* Allocate buffer for one row of texels */
    rgba = malloc(4 * width * sizeof(GLfloat));
@@ -403,6 +404,50 @@ get_tex_rgba_uncompressed(struct gl_context *ctx, GLuint dimensions,
        */
       rebaseFormat = GL_LUMINANCE_ALPHA; /* this covers GL_LUMINANCE too */
    }
+   else if (texImage->_BaseFormat != texBaseFormat) {
+      /* The internal format and the real format differ, so we can't rely
+       * on the unpack functions setting the correct constant values.
+       * (e.g. reading back GL_RGB8 which is actually RGBA won't set alpha=1)
+       */
+      switch (texImage->_BaseFormat) {
+      case GL_RED:
+         if ((texBaseFormat == GL_RGBA ||
+              texBaseFormat == GL_RGB ||
+              texBaseFormat == GL_RG) &&
+             (destBaseFormat == GL_RGBA ||
+              destBaseFormat == GL_RGB ||
+              destBaseFormat == GL_RG ||
+              destBaseFormat == GL_GREEN)) {
+            rebaseFormat = texImage->_BaseFormat;
+            break;
+         }
+         /* fall through */
+      case GL_RG:
+         if ((texBaseFormat == GL_RGBA ||
+              texBaseFormat == GL_RGB) &&
+             (destBaseFormat == GL_RGBA ||
+              destBaseFormat == GL_RGB ||
+              destBaseFormat == GL_BLUE)) {
+            rebaseFormat = texImage->_BaseFormat;
+            break;
+         }
+         /* fall through */
+      case GL_RGB:
+         if (texBaseFormat == GL_RGBA &&
+             (destBaseFormat == GL_RGBA ||
+              destBaseFormat == GL_ALPHA ||
+              destBaseFormat == GL_LUMINANCE_ALPHA)) {
+            rebaseFormat = texImage->_BaseFormat;
+         }
+         break;
+
+      case GL_ALPHA:
+         if (destBaseFormat != GL_ALPHA) {
+            rebaseFormat = texImage->_BaseFormat;
+         }
+         break;
+      }
+   }
 
    for (img = 0; img < depth; img++) {
       GLubyte *srcMap;

commit 2e4473d9e324550b6563ac20d6081028bf58cf82
Author: Marek Olšák <maraeo@gmail.com>
Date:   Wed Feb 6 22:33:55 2013 +0100

    mesa: don't use memcpy fast path for GetTexImage if base format is different
    
    The Mesa format can be RGBA8888_REV, the format/type can be
    GL_RGBA/GL_UNSIGNED_BYTE, but the actual texture internal format can be
    LUMINANCE_ALPHA, INTENSITY, etc. Therefore we should look at the base
    internal format as well.
    
    NOTE: This is a candidate for the stable branches.
    
    Reviewed-by: Brian Paul <brianp@vmware.com>
    (cherry picked from commit c8379204ab0af97558871fffccdd74c60a41776a)

diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
index 031e04d..d1c00e8 100644
--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -502,16 +502,18 @@ get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type,
 {
    const GLenum target = texImage->TexObject->Target;
    GLboolean memCopy = GL_FALSE;
+   GLenum texBaseFormat = _mesa_get_format_base_format(texImage->TexFormat);
 
    /*
     * Check if we can use memcpy to copy from the hardware texture
     * format to the user's format/type.
     * Note that GL's pixel transfer ops don't apply to glGetTexImage()
     */
-   if (target == GL_TEXTURE_1D ||
-       target == GL_TEXTURE_2D ||
-       target == GL_TEXTURE_RECTANGLE ||
-       _mesa_is_cube_face(target)) {
+   if ((target == GL_TEXTURE_1D ||
+        target == GL_TEXTURE_2D ||
+        target == GL_TEXTURE_RECTANGLE ||
+        _mesa_is_cube_face(target)) &&
+       texBaseFormat == texImage->_BaseFormat) {
       memCopy = _mesa_format_matches_format_and_type(texImage->TexFormat,
                                                      format, type,
                                                      ctx->Pack.SwapBytes);

commit 11eb644cc98803b0d04184c62cad6ea1653a42fe
Author: Marek Olšák <maraeo@gmail.com>
Date:   Wed Feb 6 22:31:44 2013 +0100

    mesa: don't use _mesa_base_tex_format for format parameter of GetTexImage
    
    _mesa_base_tex_format doesn't accept GL_BGR and GL_ABGR_EXT, etc.
    
    v2: add a (now hopefully complete) helper function to deal with this
    
    NOTE: This is a candidate for the stable branches.
    
    Reviewed-by: Brian Paul <brianp@vmware.com>
    (cherry picked from commit 09a99867abcc65e208959995c794457da6193967)

diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
index 3a550d9..031e04d 100644
--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -311,6 +311,41 @@ get_tex_rgba_compressed(struct gl_context *ctx, GLuint dimensions,
 
 
 /**
+ * Return a base GL format given the user-requested format
+ * for glGetTexImage().
+ */
+static GLenum
+_mesa_base_pack_format(GLenum format)
+{
+   switch (format) {
+   case GL_ABGR_EXT:
+   case GL_BGRA:
+   case GL_BGRA_INTEGER:
+   case GL_RGBA_INTEGER:
+      return GL_RGBA;
+   case GL_BGR:
+   case GL_BGR_INTEGER:
+   case GL_RGB_INTEGER:
+      return GL_RGB;
+   case GL_RED_INTEGER:
+      return GL_RED;
+   case GL_GREEN_INTEGER:
+      return GL_GREEN;
+   case GL_BLUE_INTEGER:
+      return GL_BLUE;
+   case GL_ALPHA_INTEGER:
+      return GL_ALPHA;
+   case GL_LUMINANCE_INTEGER_EXT:
+      return GL_LUMINANCE;
+   case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+      return GL_LUMINANCE_ALPHA;
+   default:
+      return format;
+   }
+}
+
+
+/**
  * Get an uncompressed color texture image.
  */
 static void
@@ -323,7 +358,7 @@ get_tex_rgba_uncompressed(struct gl_context *ctx, GLuint dimensions,
    const gl_format texFormat =
       _mesa_get_srgb_format_linear(texImage->TexFormat);
    const GLuint width = texImage->Width;
-   const GLenum destBaseFormat = _mesa_base_tex_format(ctx, format);
+   GLenum destBaseFormat = _mesa_base_pack_format(format);
    GLenum rebaseFormat = GL_NONE;
    GLuint height = texImage->Height;
    GLuint depth = texImage->Depth;

commit 60bad0ddc3481c4f33b836804a7c9df0b284d7e1
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Fri Feb 8 18:03:33 2013 -0800

    intel: Do not expose OES_compressed_ETC1_RGB8_texture or ARB_texture_rgb10_a2ui pre-GEN4
    
    Older hardware cannot do ARB_texture_rgb10_a2ui, and the translation
    code for OES_compressed_ETC1_RGB8_texture was never implemented in the
    i915 driver.
    
    NOTE: This is a candidate for all stable branches.
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    (cherry picked from commit 0e2f26d5ea26febd16173aa8bbf7427b090e320f)

diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c
index 6b5f678..4040ac6 100755
--- a/src/mesa/drivers/dri/intel/intel_extensions.c
+++ b/src/mesa/drivers/dri/intel/intel_extensions.c
@@ -86,8 +86,6 @@ intelInitExtensions(struct gl_context *ctx)
    ctx->Extensions.TDFX_texture_compression_FXT1 = true;
    ctx->Extensions.OES_EGL_image = true;
    ctx->Extensions.OES_draw_texture = true;
-   ctx->Extensions.OES_compressed_ETC1_RGB8_texture = true;
-   ctx->Extensions.ARB_texture_rgb10_a2ui = true;
 
    if (intel->gen >= 6)
       ctx->Const.GLSLVersion = 140;
@@ -144,6 +142,7 @@ intelInitExtensions(struct gl_context *ctx)
       ctx->Extensions.EXT_packed_float = true;
       ctx->Extensions.ARB_texture_compression_rgtc = true;
       ctx->Extensions.ARB_texture_rg = true;
+      ctx->Extensions.ARB_texture_rgb10_a2ui = true;
       ctx->Extensions.ARB_vertex_type_2_10_10_10_rev = true;
       ctx->Extensions.EXT_draw_buffers2 = true;
       ctx->Extensions.EXT_framebuffer_sRGB = true;
@@ -157,6 +156,7 @@ intelInitExtensions(struct gl_context *ctx)
       ctx->Extensions.ATI_envmap_bumpmap = true;
       ctx->Extensions.MESA_texture_array = true;
       ctx->Extensions.NV_conditional_render = true;
+      ctx->Extensions.OES_compressed_ETC1_RGB8_texture = true;
       ctx->Extensions.OES_standard_derivatives = true;
    }
 

commit d41e9b4d14dab2d1d6633bb461de4074e33fb130
Author: Roland Scheidegger <sroland@vmware.com>
Date:   Wed Feb 6 09:29:55 2013 -0800

    softpipe: fix using optimized filter function
    
    This optimized filter (when using repeat wrap modes,
    linear min/mag/mip filters, pot textures) only applies to 2d textures,
    but nothing prevented it from being used for other textures (likely
    leading to very bogus sample results).
    
    Note: This is a candidate for the 9.0 branch.
    
    Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
    (cherry picked from commit 66b6d5121475ecdd6b76ff660e28dfa6cc3f727c)

diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c
index ab03290..7f7e5aa 100644
--- a/src/gallium/drivers/softpipe/sp_tex_sample.c
+++ b/src/gallium/drivers/softpipe/sp_tex_sample.c
@@ -2963,6 +2963,7 @@ sp_create_sampler_variant( const struct pipe_sampler_state *sampler,
 
    case PIPE_TEX_MIPFILTER_LINEAR:
       if (key.bits.is_pot &&
+          key.bits.target == PIPE_TEXTURE_2D &&
           sampler->min_img_filter == sampler->mag_img_filter &&
           sampler->normalized_coords &&
           sampler->wrap_s == PIPE_TEX_WRAP_REPEAT &&

commit 60f05f0eef85b2d4cad96ab36e79d980dafcfafc
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Feb 6 15:41:54 2013 -0500

    egl-wayland: Make sure we allocate a back buffer even if nothing was rendered
    
    At eglSwapBuffer time, we blindly assume we have a back buffer, but the
    back buffer only gets allocated when somebody tries to render something.
    
    NOTE: This is a candidate for the 9.0 and 9.1 branches.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=60086
    (cherry picked from commit 1fe007399c1ed28b8cef9d4f040164480423f2c9)

diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c


Reply to: