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

mesa: Changes to 'upstream-unstable'



 Makefile.am                                     |    1 
 VERSION                                         |    2 
 bin/.cherry-ignore                              |    5 
 docs/relnotes/11.0.5.html                       |    3 
 docs/relnotes/11.0.6.html                       |  144 ++++++++++++++++++++++++
 src/gallium/drivers/llvmpipe/lp_bld_interp.c    |    7 +
 src/gallium/drivers/nouveau/nouveau_vp3_video.c |    1 
 src/gallium/drivers/r600/evergreen_state.c      |    4 
 src/gallium/drivers/r600/evergreend.h           |    2 
 src/gallium/drivers/radeon/radeon_uvd.c         |    6 +
 src/gallium/drivers/radeon/radeon_video.c       |    3 
 src/gallium/drivers/radeonsi/si_state.c         |   15 ++
 src/gallium/drivers/vc4/vc4_bufmgr.c            |    5 
 src/gallium/drivers/vc4/vc4_opt_algebraic.c     |    2 
 src/gallium/drivers/vc4/vc4_program.c           |    4 
 src/gallium/drivers/vc4/vc4_qir.c               |    8 +
 src/gallium/drivers/vc4/vc4_qir.h               |    8 +
 src/gallium/drivers/vc4/vc4_qpu_emit.c          |    4 
 src/gallium/drivers/vc4/vc4_resource.c          |   46 ++++---
 src/gallium/drivers/vc4/vc4_state.c             |    4 
 src/gallium/state_trackers/va/picture.c         |    2 
 src/gallium/winsys/radeon/drm/radeon_drm_bo.c   |   30 +++--
 src/glsl/ast_to_hir.cpp                         |   37 ++++--
 src/glsl/nir/nir_lower_vars_to_ssa.c            |    5 
 src/mesa/drivers/common/meta_generate_mipmap.c  |   10 +
 src/mesa/drivers/dri/i965/brw_device_info.c     |    9 +
 src/mesa/drivers/dri/r200/r200_tex.h            |    4 
 src/mesa/drivers/dri/radeon/radeon_tex.h        |    2 
 src/mesa/main/copyimage.c                       |   40 ++++++
 29 files changed, 357 insertions(+), 56 deletions(-)

New commits:
commit 04fd3a6f629b5098cc2a4da1f2392678349ecf56
Author: Emil Velikov <emil.velikov@collabora.com>
Date:   Sat Nov 21 11:38:20 2015 +0000

    docs: add release notes for 11.0.6
    
    Signed-off-by: Emil Velikov <emil.velikov@collabora.com>

diff --git a/docs/relnotes/11.0.6.html b/docs/relnotes/11.0.6.html
new file mode 100644
index 0000000..2da9e98
--- /dev/null
+++ b/docs/relnotes/11.0.6.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <title>Mesa Release Notes</title>
+  <link rel="stylesheet" type="text/css" href="../mesa.css">
+</head>
+<body>
+
+<div class="header">
+  <h1>The Mesa 3D Graphics Library</h1>
+</div>
+
+<iframe src="../contents.html"></iframe>
+<div class="content">
+
+<h1>Mesa 11.0.6 Release Notes / November 21, 2015</h1>
+
+<p>
+Mesa 11.0.6 is a bug fix release which fixes bugs found since the 11.0.5 release.
+</p>
+<p>
+Mesa 11.0.6 implements the OpenGL 4.1 API, but the version reported by
+glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
+glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 4.1.  OpenGL
+4.1 is <strong>only</strong> available if requested at context creation
+because compatibility contexts are not supported.
+</p>
+
+
+<h2>SHA256 checksums</h2>
+<pre>
+TBD
+</pre>
+
+
+<h2>New features</h2>
+<p>None</p>
+
+<h2>Bug fixes</h2>
+
+<p>This list is likely incomplete.</p>
+
+<ul>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=91780";>Bug 91780</a> - Rendering issues with geometry shader</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92588";>Bug 92588</a> - [HSW,BDW,BSW,SKL-Y][GLES 3.1 CTS] ES31-CTS.arrays_of_arrays.InteractionFunctionCalls2 - assert</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92738";>Bug 92738</a> - Randon R7 240 doesn't work on 16KiB page size platform</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92860";>Bug 92860</a> - [radeonsi][bisected] st/mesa: implement ARB_copy_image - Corruption in ARK Survival Evolved</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92900";>Bug 92900</a> - [regression bisected] About 700 piglit regressions is what could go wrong</li>
+
+</ul>
+
+
+<h2>Changes</h2>
+
+<p>Alex Deucher (1):</p>
+<ul>
+  <li>radeonsi: enable optimal raster config setting for fiji (v2)</li>
+</ul>
+
+<p>Ben Widawsky (1):</p>
+<ul>
+  <li>i965/skl/gt4: Fix URB programming restriction.</li>
+</ul>
+
+<p>Boyuan Zhang (2):</p>
+<ul>
+  <li>st/vaapi: fix vaapi VC-1 simple/main corruption v2</li>
+  <li>radeon/uvd: fix VC-1 simple/main profile decode v2</li>
+</ul>
+
+<p>Dave Airlie (1):</p>
+<ul>
+  <li>r600: initialised PGM_RESOURCES_2 for ES/GS</li>
+</ul>
+
+<p>Emil Velikov (4):</p>
+<ul>
+  <li>docs: add sha256 checksums for 11.0.5</li>
+  <li>cherry-ignore: add the swrast front buffer support</li>
+  <li>automake: use static llvm for make distcheck</li>
+  <li>Update version to 11.0.6</li>
+</ul>
+
+<p>Eric Anholt (3):</p>
+<ul>
+  <li>vc4: Return GL_OUT_OF_MEMORY when buffer allocation fails.</li>
+  <li>vc4: Return NULL when we can't make our shadow for a sampler view.</li>
+  <li>vc4: Add support for nir_op_uge, using the carry bit on QPU_A_SUB.</li>
+</ul>
+
+<p>Ian Romanick (2):</p>
+<ul>
+  <li>meta/generate_mipmap: Don't leak the sampler object</li>
+  <li>meta/generate_mipmap: Only modify the draw framebuffer binding in fallback_required</li>
+</ul>
+
+<p>Ilia Mirkin (2):</p>
+<ul>
+  <li>mesa/copyimage: allow width/height to not be multiples of block</li>
+  <li>nouveau: don't expose HEVC decoding support</li>
+</ul>
+
+<p>Jason Ekstrand (1):</p>
+<ul>
+  <li>nir/vars_to_ssa: Rework copy set handling in lower_copies_to_load_store</li>
+</ul>
+
+<p>Kenneth Graunke (1):</p>
+<ul>
+  <li>glsl: Allow implicit int -&gt; uint conversions for the % operator.</li>
+</ul>
+
+<p>Marek Olšák (1):</p>
+<ul>
+  <li>radeonsi: initialize SX_PS_DOWNCONVERT to 0 on Stoney</li>
+</ul>
+
+<p>Michel Dänzer (1):</p>
+<ul>
+  <li>winsys/radeon: Use CPU page size instead of hardcoding 4096 bytes v3</li>
+</ul>
+
+<p>Oded Gabbay (1):</p>
+<ul>
+  <li>llvmpipe: use simple coeffs calc for 128bit vectors</li>
+</ul>
+
+<p>Roland Scheidegger (2):</p>
+<ul>
+  <li>radeon: fix bgrx8/xrgb8 blits</li>
+  <li>r200: fix bgrx8/xrgb8 blits</li>
+</ul>
+
+
+</div>
+</body>
+</html>

commit 50184185739cd5319f802a2a39c1cf7a1aa445b0
Author: Emil Velikov <emil.velikov@collabora.com>
Date:   Sat Nov 21 11:29:18 2015 +0000

    Update version to 11.0.6
    
    Signed-off-by: Emil Velikov <emil.velikov@collabora.com>

diff --git a/VERSION b/VERSION
index bfd97fb..5326b8b 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-11.0.5
+11.0.6

commit 040785c08bac6703643893d4b7d6d0180c059efe
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Fri Nov 20 15:15:18 2015 +0000

    automake: use static llvm for make distcheck
    
    With llvm 3.7 semi-dropping the autoconf build, we rely on their cmake
    build. With the latter of which annoyingly using another (busted?)
    SONAME.
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    (cherry picked from commit c45b4257c26b93043508e55c6a1aeb3a8b14eee9)

diff --git a/Makefile.am b/Makefile.am
index 149610c..a9ed31e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -32,6 +32,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
 	--enable-vdpau \
 	--enable-xa \
 	--enable-xvmc \
+	--disable-llvm-shared-libs \
 	--with-egl-platforms=x11,wayland,drm \
 	--with-dri-drivers=i915,i965,nouveau,radeon,r200,swrast \
 	--with-gallium-drivers=i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast

commit 0c56517d16e4589f228a48f7e99c95b494ab80d6
Author: Oded Gabbay <oded.gabbay@gmail.com>
Date:   Tue Nov 3 10:36:01 2015 +0200

    llvmpipe: use simple coeffs calc for 128bit vectors
    
    There are currently two methods in llvmpipe code to calculate coeffs to
    be used as inputs for the fragment shader. The two methods use slightly
    different ways to do the floating point calculations and thus produce
    slightly different results.
    
    The decision which method to use is determined by the size of the vector
    that is used by the platform.
    
    For vectors with size of more than 128bit, a single-step method is used,
    in which coeffs_init_simple() + attribs_update_simple() are called.
    
    For vectors with size of 128bit or less, a two-step method is used, in
    which coeffs_init() + attribs_update() are called.
    
    This causes some piglit tests (clip-distance-bulk-copy,
    interface-vs-unnamed-to-fs-unnamed) to fail when using platforms with
    128bit vectors (such as ppc64le or x86-64 without AVX).
    
    This patch makes platforms with 128bit vectors use the single-step
    method (aka "simple" method) instead of the two-step method.
    This would make the resulting coeffs identical between more platforms,
    make sure the piglit tests passes, and make debugging and maintainability
    a bit easier as the generated LLVM IR will be the same for more platforms.
    
    The performance impact is negligible for x86-64 without AVX, and
    basically non-existent for ppc64le, as it can be seen from the following
    benchmarking results:
    
    - glxspheres, on ppc64le:
    
       - original code:  4.892745317 frames/sec 5.460303857 Mpixels/sec
       - with the patch: 4.932083873 frames/sec 5.504205571 Mpixels/sec
       - Additional 0.8% performance boost
    
    - glxspheres, on x86-64 without AVX:
    
       - original code:  20.16418809 frames/sec 22.50323395 Mpixels/sec
       - with the patch: 20.31328989 frames/sec 22.66963152 Mpixels/sec
       - Additional 0.74% performance boost
    
    - glmark2, on ppc64le:
    
      - original code:  score of 58
      - with my change: score of 57
    
    - glmark2, on x86-64 without AVX:
    
      - original code:  score of 175
      - with the patch: score of 167
      - Impact of of -4.5% on performance
    
    - OpenArena, on ppc64le:
    
      - original code:  3398 frames 1719.0 seconds 2.0 fps
                        255.0/505.9/2773.0/0.0 ms
    
      - with the patch: 3398 frames 1690.4 seconds 2.0 fps
                        241.0/497.5/2563.0/0.2 ms
    
      - 29 seconds faster with the patch, which is about 2%
    
    - OpenArena, on x86-64 without AVX:
    
      - original code:  3398 frames 239.6 seconds 14.2 fps
                        38.0/70.5/719.0/14.6 ms
    
      - with the patch: 3398 frames 244.4 seconds 13.9 fps
                        38.0/71.9/697.0/14.3 ms
    
      - 0.3 fps slower with the patch (about 2%)
    
    Additional details can be found at:
    http://lists.freedesktop.org/archives/mesa-dev/2015-October/098635.html
    
    Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
    Reviewed-by: Roland Scheidegger <sroland@vmware.com>
    (cherry picked from commit 39b4dfe6ab1003863778a25c091c080e098833ec)

diff --git a/src/gallium/drivers/llvmpipe/lp_bld_interp.c b/src/gallium/drivers/llvmpipe/lp_bld_interp.c
index df262fa..ceac86a 100644
--- a/src/gallium/drivers/llvmpipe/lp_bld_interp.c
+++ b/src/gallium/drivers/llvmpipe/lp_bld_interp.c
@@ -746,7 +746,12 @@ lp_build_interp_soa_init(struct lp_build_interp_soa_context *bld,
 
    pos_init(bld, x0, y0);
 
-   if (coeff_type.length > 4) {
+   /*
+    * Simple method (single step interpolation) may be slower if vector length
+    * is just 4, but the results are different (generally less accurate) with
+    * the other method, so always use more accurate version.
+    */
+   if (1) {
       bld->simple_interp = TRUE;
       {
          /* XXX this should use a global static table */

commit d425a2f26c15156cc60a1b48e59bb6fc1cdcebbf
Author: Eric Anholt <eric@anholt.net>
Date:   Tue Nov 10 15:37:47 2015 -0800

    vc4: Add support for nir_op_uge, using the carry bit on QPU_A_SUB.
    
    It looks like nir_lower_idiv is going to use it soon, so add support.
    With Ilia's change, this fixes one case in fs-op-div-large-uint-uint (with
    GL 3.0 forced on).
    
    Cc: "11.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit a4bf28178f064082d3b818d2cd48abf9075cc459)
    [Emil Velikov: Resolve trivial conflicts]
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    
    Conflicts:
    	src/gallium/drivers/vc4/vc4_qpu_emit.c

diff --git a/src/gallium/drivers/vc4/vc4_opt_algebraic.c b/src/gallium/drivers/vc4/vc4_opt_algebraic.c
index 5b43583..5b018e4 100644
--- a/src/gallium/drivers/vc4/vc4_opt_algebraic.c
+++ b/src/gallium/drivers/vc4/vc4_opt_algebraic.c
@@ -143,6 +143,8 @@ qir_opt_algebraic(struct vc4_compile *c)
                 case QOP_SEL_X_Y_ZC:
                 case QOP_SEL_X_Y_NS:
                 case QOP_SEL_X_Y_NC:
+                case QOP_SEL_X_Y_CS:
+                case QOP_SEL_X_Y_CC:
                         if (is_zero(c, inst->src[1])) {
                                 /* Replace references to a 0 uniform value
                                  * with the SEL_X_0 equivalent.
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index e002983..8476833 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -1055,6 +1055,10 @@ ntq_emit_alu(struct vc4_compile *c, nir_alu_instr *instr)
                 qir_SF(c, qir_SUB(c, src[0], src[1]));
                 *dest = qir_SEL_X_0_NC(c, qir_uniform_ui(c, ~0));
                 break;
+        case nir_op_uge:
+                qir_SF(c, qir_SUB(c, src[0], src[1]));
+                *dest = qir_SEL_X_0_CC(c, qir_uniform_ui(c, ~0));
+                break;
         case nir_op_ilt:
                 qir_SF(c, qir_SUB(c, src[0], src[1]));
                 *dest = qir_SEL_X_0_NS(c, qir_uniform_ui(c, ~0));
diff --git a/src/gallium/drivers/vc4/vc4_qir.c b/src/gallium/drivers/vc4/vc4_qir.c
index 073ba5f..50e37e8 100644
--- a/src/gallium/drivers/vc4/vc4_qir.c
+++ b/src/gallium/drivers/vc4/vc4_qir.c
@@ -62,10 +62,14 @@ static const struct qir_op_info qir_op_info[] = {
         [QOP_SEL_X_0_NC] = { "fsel_x_0_nc", 1, 1, false, true },
         [QOP_SEL_X_0_ZS] = { "fsel_x_0_zs", 1, 1, false, true },
         [QOP_SEL_X_0_ZC] = { "fsel_x_0_zc", 1, 1, false, true },
+        [QOP_SEL_X_0_CS] = { "fsel_x_0_cs", 1, 1, false, true },
+        [QOP_SEL_X_0_CC] = { "fsel_x_0_cc", 1, 1, false, true },
         [QOP_SEL_X_Y_NS] = { "fsel_x_y_ns", 1, 2, false, true },
         [QOP_SEL_X_Y_NC] = { "fsel_x_y_nc", 1, 2, false, true },
         [QOP_SEL_X_Y_ZS] = { "fsel_x_y_zs", 1, 2, false, true },
         [QOP_SEL_X_Y_ZC] = { "fsel_x_y_zc", 1, 2, false, true },
+        [QOP_SEL_X_Y_CS] = { "fsel_x_y_cs", 1, 2, false, true },
+        [QOP_SEL_X_Y_CC] = { "fsel_x_y_cc", 1, 2, false, true },
 
         [QOP_RCP] = { "rcp", 1, 1, false, true },
         [QOP_RSQ] = { "rsq", 1, 1, false, true },
@@ -193,10 +197,14 @@ qir_depends_on_flags(struct qinst *inst)
         case QOP_SEL_X_0_NC:
         case QOP_SEL_X_0_ZS:
         case QOP_SEL_X_0_ZC:
+        case QOP_SEL_X_0_CS:
+        case QOP_SEL_X_0_CC:
         case QOP_SEL_X_Y_NS:
         case QOP_SEL_X_Y_NC:
         case QOP_SEL_X_Y_ZS:
         case QOP_SEL_X_Y_ZC:
+        case QOP_SEL_X_Y_CS:
+        case QOP_SEL_X_Y_CC:
                 return true;
         default:
                 return false;
diff --git a/src/gallium/drivers/vc4/vc4_qir.h b/src/gallium/drivers/vc4/vc4_qir.h
index a2b21fa..fe8b582 100644
--- a/src/gallium/drivers/vc4/vc4_qir.h
+++ b/src/gallium/drivers/vc4/vc4_qir.h
@@ -91,11 +91,15 @@ enum qop {
         QOP_SEL_X_0_ZC,
         QOP_SEL_X_0_NS,
         QOP_SEL_X_0_NC,
+        QOP_SEL_X_0_CS,
+        QOP_SEL_X_0_CC,
         /* Selects the src[0] if the ns flag bit is set, otherwise src[1]. */
         QOP_SEL_X_Y_ZS,
         QOP_SEL_X_Y_ZC,
         QOP_SEL_X_Y_NS,
         QOP_SEL_X_Y_NC,
+        QOP_SEL_X_Y_CS,
+        QOP_SEL_X_Y_CC,
 
         QOP_FTOI,
         QOP_ITOF,
@@ -570,10 +574,14 @@ QIR_ALU1(SEL_X_0_ZS)
 QIR_ALU1(SEL_X_0_ZC)
 QIR_ALU1(SEL_X_0_NS)
 QIR_ALU1(SEL_X_0_NC)
+QIR_ALU1(SEL_X_0_CS)
+QIR_ALU1(SEL_X_0_CC)
 QIR_ALU2(SEL_X_Y_ZS)
 QIR_ALU2(SEL_X_Y_ZC)
 QIR_ALU2(SEL_X_Y_NS)
 QIR_ALU2(SEL_X_Y_NC)
+QIR_ALU2(SEL_X_Y_CS)
+QIR_ALU2(SEL_X_Y_CC)
 QIR_ALU2(FMIN)
 QIR_ALU2(FMAX)
 QIR_ALU2(FMINABS)
diff --git a/src/gallium/drivers/vc4/vc4_qpu_emit.c b/src/gallium/drivers/vc4/vc4_qpu_emit.c
index adf3a8b..6402d1a 100644
--- a/src/gallium/drivers/vc4/vc4_qpu_emit.c
+++ b/src/gallium/drivers/vc4/vc4_qpu_emit.c
@@ -271,6 +271,8 @@ vc4_generate_code(struct vc4_context *vc4, struct vc4_compile *c)
                 case QOP_SEL_X_0_ZC:
                 case QOP_SEL_X_0_NS:
                 case QOP_SEL_X_0_NC:
+                case QOP_SEL_X_0_CS:
+                case QOP_SEL_X_0_CC:
                         queue(c, qpu_a_MOV(dst, src[0]));
                         set_last_cond_add(c, qinst->op - QOP_SEL_X_0_ZS +
                                           QPU_COND_ZS);
@@ -284,6 +286,8 @@ vc4_generate_code(struct vc4_context *vc4, struct vc4_compile *c)
                 case QOP_SEL_X_Y_ZC:
                 case QOP_SEL_X_Y_NS:
                 case QOP_SEL_X_Y_NC:
+                case QOP_SEL_X_Y_CS:
+                case QOP_SEL_X_Y_CC:
                         queue(c, qpu_a_MOV(dst, src[0]));
                         set_last_cond_add(c, qinst->op - QOP_SEL_X_Y_ZS +
                                           QPU_COND_ZS);

commit c667a0d1d36ea72cfc0024ae4a33f1443be98362
Author: Roland Scheidegger <sroland@vmware.com>
Date:   Tue Nov 17 01:04:05 2015 +0100

    r200: fix bgrx8/xrgb8 blits
    
    Since 779cabfc7d022de8b7b9bc7fdac0caffa8646c51 the same txformat table entries
    are used for "normal" texturing as well as for blits. However, I forgot to put
    in an entry for the bgrx8 (le) and xrgb8 (be) formats - the normal texturing
    path can't hit them because the radeon tex format chooser will never chose
    them, but we get that format from the dri buffers (at least I assume we got
    it from there).
    This is untested but essentially addressing the same bug as for radeon.
    (I don't think that the second entry per le/be table is actually necessary,
    but shouldn't hurt...)
    
    Tested-by: Ian Romanick <ian.d.romanick@intel.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Marek Olšák <marek.olsak@amd.com>
    Cc: "11.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit a2611ffe4b5f1852c59301f086b988233a1c62f3)

diff --git a/src/mesa/drivers/dri/r200/r200_tex.h b/src/mesa/drivers/dri/r200/r200_tex.h
index a8c31b7..14f5e71 100644
--- a/src/mesa/drivers/dri/r200/r200_tex.h
+++ b/src/mesa/drivers/dri/r200/r200_tex.h
@@ -63,7 +63,9 @@ static const struct tx_table tx_table_be[] =
    [ MESA_FORMAT_A8B8G8R8_UNORM ] = { R200_TXFORMAT_ABGR8888 | R200_TXFORMAT_ALPHA_IN_MAP, 0 },
    [ MESA_FORMAT_R8G8B8A8_UNORM ] = { R200_TXFORMAT_RGBA8888 | R200_TXFORMAT_ALPHA_IN_MAP, 0 },
    [ MESA_FORMAT_B8G8R8A8_UNORM ] = { R200_TXFORMAT_ARGB8888 | R200_TXFORMAT_ALPHA_IN_MAP, 0 },
+   [ MESA_FORMAT_B8G8R8X8_UNORM ] = { R200_TXFORMAT_ARGB8888, 0 },
    [ MESA_FORMAT_A8R8G8B8_UNORM ] = { R200_TXFORMAT_ARGB8888 | R200_TXFORMAT_ALPHA_IN_MAP, 0 },
+   [ MESA_FORMAT_X8R8G8B8_UNORM ] = { R200_TXFORMAT_ARGB8888, 0 },
    [ MESA_FORMAT_BGR_UNORM8 ] = { 0xffffffff, 0 },
    [ MESA_FORMAT_B5G6R5_UNORM ] = { R200_TXFORMAT_RGB565, 0 },
    [ MESA_FORMAT_R5G6B5_UNORM ] = { R200_TXFORMAT_RGB565, 0 },
@@ -91,7 +93,9 @@ static const struct tx_table tx_table_le[] =
    [ MESA_FORMAT_A8B8G8R8_UNORM ] = { R200_TXFORMAT_RGBA8888 | R200_TXFORMAT_ALPHA_IN_MAP, 0 },
    [ MESA_FORMAT_R8G8B8A8_UNORM ] = { R200_TXFORMAT_ABGR8888 | R200_TXFORMAT_ALPHA_IN_MAP, 0 },
    [ MESA_FORMAT_B8G8R8A8_UNORM ] = { R200_TXFORMAT_ARGB8888 | R200_TXFORMAT_ALPHA_IN_MAP, 0 },
+   [ MESA_FORMAT_B8G8R8X8_UNORM ] = { R200_TXFORMAT_ARGB8888, 0 },
    [ MESA_FORMAT_A8R8G8B8_UNORM ] = { R200_TXFORMAT_ARGB8888 | R200_TXFORMAT_ALPHA_IN_MAP, 0 },
+   [ MESA_FORMAT_X8R8G8B8_UNORM ] = { R200_TXFORMAT_ARGB8888, 0 },
    [ MESA_FORMAT_BGR_UNORM8 ] = { R200_TXFORMAT_ARGB8888, 0 },
    [ MESA_FORMAT_B5G6R5_UNORM ] = { R200_TXFORMAT_RGB565, 0 },
    [ MESA_FORMAT_R5G6B5_UNORM ] = { R200_TXFORMAT_RGB565, 0 },

commit f112696f1531cdb658ada4290120781e30df2366
Author: Roland Scheidegger <sroland@vmware.com>
Date:   Thu Nov 12 19:33:14 2015 +0100

    radeon: fix bgrx8/xrgb8 blits
    
    Since d21320f6258b2e1780a15c1ca718963d8a15ca18 the same txformat table entries
    are used for "normal" texturing as well as for blits. However, I forgot to put
    in an entry for the bgrx8 (le) and xrgb8 (be) formats - the normal texturing
    path can't hit them because the radeon tex format chooser will never chose
    them, but we get that format from the dri buffers (at least I assume we got
    it from there). This caused lots of piglit regressions (and probably lots of
    trouble outside piglit too).
    This fixes bug https://bugs.freedesktop.org/show_bug.cgi?id=92900.
    
    Tested-by: Ian Romanick <ian.d.romanick@intel.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Marek Olšák <marek.olsak@amd.com>
    Cc: "11.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 983614dbede7b94cba1bad9f3e8627fc5e14bb91)

diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.h b/src/mesa/drivers/dri/radeon/radeon_tex.h
index f8ec432..37c2fa0 100644
--- a/src/mesa/drivers/dri/radeon/radeon_tex.h
+++ b/src/mesa/drivers/dri/radeon/radeon_tex.h
@@ -63,6 +63,8 @@ static const struct tx_table tx_table[] =
    [ MESA_FORMAT_R8G8B8A8_UNORM ] = { RADEON_TXFORMAT_RGBA8888 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
    [ MESA_FORMAT_B8G8R8A8_UNORM ] = { RADEON_TXFORMAT_ARGB8888 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
    [ MESA_FORMAT_A8R8G8B8_UNORM ] = { RADEON_TXFORMAT_ARGB8888 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
+   [ MESA_FORMAT_B8G8R8X8_UNORM ] = { RADEON_TXFORMAT_ARGB8888, 0 },
+   [ MESA_FORMAT_X8R8G8B8_UNORM ] = { RADEON_TXFORMAT_ARGB8888, 0 },
    [ MESA_FORMAT_BGR_UNORM8 ] = { RADEON_TXFORMAT_ARGB8888, 0 },
    [ MESA_FORMAT_B5G6R5_UNORM ] = { RADEON_TXFORMAT_RGB565, 0 },
    [ MESA_FORMAT_R5G6B5_UNORM ] = { RADEON_TXFORMAT_RGB565, 0 },

commit acbaa3d0fcd2a0d357a4c7539d12877f9838548a
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Fri Nov 13 11:58:41 2015 -0800

    meta/generate_mipmap: Only modify the draw framebuffer binding in fallback_required
    
    Previously GL_FRAMEBUFFER was used.  However, if GL_EXT_framebuffer_blit
    is supported (note: it is supported by every Mesa driver), this is
    *sometimes* an alias for GL_DRAW_FRAMEBUFFER (getters) and *sometimes*
    an alias for *both* GL_DRAW_FRAMEBUFFER and GL_READ_FRAMEBUFFER
    (setters).  As a result, the code saved one binding but modified both.
    If the bindings were different, the GL_READ_FRAMEBUFFER would be
    incorrect on exit.
    
    Fixes the piglit fbo-generatemipmap-versus-READ_FRAMEBUFFER test.
    
    Ideally this function would use DSA functions and not modify the binding
    at all.  However, that would be a much more intrusive change because
    _mesa_meta_bind_fbo_image would also need to be modified.
    _mesa_meta_bind_fbo_image has a lot of callers.  Much of this code is
    about to get a major rework due to bug #92363, so I don't think it
    matters too much.  In fact, I discovered this bug while working on the
    other bug.  Le bon temps!
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
    Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit c40a88b6c5a698e5297957e28cccf2ce23820caa)

diff --git a/src/mesa/drivers/common/meta_generate_mipmap.c b/src/mesa/drivers/common/meta_generate_mipmap.c
index ced4742..9d3b9b6 100644
--- a/src/mesa/drivers/common/meta_generate_mipmap.c
+++ b/src/mesa/drivers/common/meta_generate_mipmap.c
@@ -102,13 +102,13 @@ fallback_required(struct gl_context *ctx, GLenum target,
     */
    if (!mipmap->FBO)
       _mesa_GenFramebuffers(1, &mipmap->FBO);
-   _mesa_BindFramebuffer(GL_FRAMEBUFFER_EXT, mipmap->FBO);
+   _mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, mipmap->FBO);
 
-   _mesa_meta_bind_fbo_image(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, baseImage, 0);
+   _mesa_meta_bind_fbo_image(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, baseImage, 0);
 
-   status = _mesa_CheckFramebufferStatus(GL_FRAMEBUFFER_EXT);
+   status = _mesa_CheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);
 
-   _mesa_BindFramebuffer(GL_FRAMEBUFFER_EXT, fboSave);
+   _mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, fboSave);
 
    if (status != GL_FRAMEBUFFER_COMPLETE_EXT) {
       _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH,

commit 55325d06320dcd95f0152cb872b84fedc92fc5de
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Nov 13 13:00:30 2015 -0500

    radeonsi: enable optimal raster config setting for fiji (v2)
    
    Requires proper kernel tiling configuration so check the tiling
    config registers.
    
    v2: send the right version of the patch
    
    Reviewed-by: Marek Olšák <marek.olsak@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 00f554abba8c0f3b65af94365c15109c3b858486)

diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 1bca645..81e1382 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3176,6 +3176,7 @@ si_write_harvested_raster_configs(struct si_context *sctx,
 
 static void si_init_config(struct si_context *sctx)
 {
+	struct si_screen *sscreen = sctx->screen;
 	unsigned num_rb = MIN2(sctx->screen->b.info.r600_num_backends, 16);
 	unsigned rb_mask = sctx->screen->b.info.si_backend_enabled_mask;
 	unsigned raster_config, raster_config_1;
@@ -3243,9 +3244,14 @@ static void si_init_config(struct si_context *sctx)
 		raster_config_1 = 0x0000002e;
 		break;
 	case CHIP_FIJI:
-		/* Fiji should be same as Hawaii, but that causes corruption in some cases */
-		raster_config = 0x16000012; /* 0x3a00161a */
-		raster_config_1 = 0x0000002a; /* 0x0000002e */
+		if (sscreen->b.info.cik_macrotile_mode_array[0] == 0x000000e8) {
+			/* old kernels with old tiling config */
+			raster_config = 0x16000012;
+			raster_config_1 = 0x0000002a;
+		} else {
+			raster_config = 0x3a00161a;
+			raster_config_1 = 0x0000002e;
+		}
 		break;
 	case CHIP_TONGA:
 		raster_config = 0x16000012;

commit 09a7ee2782205b7b7177c8bc805be3c5929347dd
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Sat Nov 14 10:28:55 2015 -0500

    nouveau: don't expose HEVC decoding support
    
    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit f94e1d97381ec787c2abbbcd5265252596217e33)

diff --git a/src/gallium/drivers/nouveau/nouveau_vp3_video.c b/src/gallium/drivers/nouveau/nouveau_vp3_video.c
index f3a64b2..4652e56 100644
--- a/src/gallium/drivers/nouveau/nouveau_vp3_video.c
+++ b/src/gallium/drivers/nouveau/nouveau_vp3_video.c
@@ -437,6 +437,7 @@ nouveau_vp3_screen_get_video_param(struct pipe_screen *pscreen,
       /* VP3 does not support MPEG4, VP4+ do. */
       return entrypoint == PIPE_VIDEO_ENTRYPOINT_BITSTREAM &&
          profile >= PIPE_VIDEO_PROFILE_MPEG1 &&
+         profile < PIPE_VIDEO_PROFILE_HEVC_MAIN &&
          (!vp3 || codec != PIPE_VIDEO_FORMAT_MPEG4) &&
          firmware_present(pscreen, profile);
    case PIPE_VIDEO_CAP_NPOT_TEXTURES:

commit 120559bd3042b8ab0eab3f0b3c3ab10594043d41
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Thu Nov 12 13:02:05 2015 -0800

    glsl: Allow implicit int -> uint conversions for the % operator.
    
    GLSL 4.00 and GL_ARB_gpu_shader5 introduced a new int -> uint implicit
    conversion rule and updated the rules for modulus to use them.  (In
    earlier languages, none of the implicit conversion rules did anything
    relevant, so there was no point in applying them.)
    
    This allows expressions such as:
    
       int foo;
       uint bar;
       uint mod = foo % bar;
    
    Cc: mesa-stable@lists.freedesktop.org
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
    (cherry picked from commit 511de1a80cedc0add386dad79cce56dd68d2f611)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 9fdfd44..94bae57 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -482,18 +482,20 @@ bit_logic_result_type(const struct glsl_type *type_a,
 }
 
 static const struct glsl_type *
-modulus_result_type(const struct glsl_type *type_a,
-                    const struct glsl_type *type_b,
+modulus_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b,
                     struct _mesa_glsl_parse_state *state, YYLTYPE *loc)
 {
+   const glsl_type *type_a = value_a->type;
+   const glsl_type *type_b = value_b->type;
+
    if (!state->check_version(130, 300, loc, "operator '%%' is reserved")) {
       return glsl_type::error_type;
    }
 
-   /* From GLSL 1.50 spec, page 56:
+   /* Section 5.9 (Expressions) of the GLSL 4.00 specification says:
+    *
     *    "The operator modulus (%) operates on signed or unsigned integers or
-    *    integer vectors. The operand types must both be signed or both be
-    *    unsigned."
+    *    integer vectors."
     */
    if (!type_a->is_integer()) {
       _mesa_glsl_error(loc, state, "LHS of operator %% must be an integer");
@@ -503,11 +505,28 @@ modulus_result_type(const struct glsl_type *type_a,
       _mesa_glsl_error(loc, state, "RHS of operator %% must be an integer");
       return glsl_type::error_type;
    }
-   if (type_a->base_type != type_b->base_type) {
+
+   /*    "If the fundamental types in the operands do not match, then the
+    *    conversions from section 4.1.10 "Implicit Conversions" are applied
+    *    to create matching types."
+    *
+    * Note that GLSL 4.00 (and GL_ARB_gpu_shader5) introduced implicit
+    * int -> uint conversion rules.  Prior to that, there were no implicit
+    * conversions.  So it's harmless to apply them universally - no implicit
+    * conversions will exist.  If the types don't match, we'll receive false,
+    * and raise an error, satisfying the GLSL 1.50 spec, page 56:
+    *
+    *    "The operand types must both be signed or unsigned."
+    */
+   if (!apply_implicit_conversion(type_a, value_b, state) &&
+       !apply_implicit_conversion(type_b, value_a, state)) {
       _mesa_glsl_error(loc, state,
-                       "operands of %% must have the same base type");
+                       "could not implicitly convert operands to "
+                       "modulus (%%) operator");
       return glsl_type::error_type;
    }
+   type_a = value_a->type;
+   type_b = value_b->type;
 
    /*    "The operands cannot be vectors of differing size. If one operand is
     *    a scalar and the other vector, then the scalar is applied component-
@@ -1267,7 +1286,7 @@ ast_expression::do_hir(exec_list *instructions,
       op[0] = this->subexpressions[0]->hir(instructions, state);
       op[1] = this->subexpressions[1]->hir(instructions, state);
 
-      type = modulus_result_type(op[0]->type, op[1]->type, state, & loc);
+      type = modulus_result_type(op[0], op[1], state, &loc);
 
       assert(operations[this->oper] == ir_binop_mod);
 
@@ -1514,7 +1533,7 @@ ast_expression::do_hir(exec_list *instructions,
       op[0] = this->subexpressions[0]->hir(instructions, state);
       op[1] = this->subexpressions[1]->hir(instructions, state);
 
-      type = modulus_result_type(op[0]->type, op[1]->type, state, & loc);
+      type = modulus_result_type(op[0], op[1], state, &loc);
 
       assert(operations[this->oper] == ir_binop_mod);
 

commit 0b7bdb06687453cdb9755fd19215c24659846a3b
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Tue Nov 10 12:36:58 2015 -0800

    meta/generate_mipmap: Don't leak the sampler object
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
    (cherry picked from commit 758f12fd98dea9a9682becf2d496bd38ef3959e5)

diff --git a/src/mesa/drivers/common/meta_generate_mipmap.c b/src/mesa/drivers/common/meta_generate_mipmap.c
index 5dc40a2..ced4742 100644
--- a/src/mesa/drivers/common/meta_generate_mipmap.c
+++ b/src/mesa/drivers/common/meta_generate_mipmap.c
@@ -128,6 +128,8 @@ _mesa_meta_glsl_generate_mipmap_cleanup(struct gen_mipmap_state *mipmap)
    mipmap->VAO = 0;
    _mesa_DeleteBuffers(1, &mipmap->VBO);
    mipmap->VBO = 0;
+   _mesa_DeleteSamplers(1, &mipmap->Sampler);
+   mipmap->Sampler = 0;
 
    _mesa_meta_blit_shader_table_cleanup(&mipmap->shaders);
 }

commit f9325a97b31fdeca74f861315a9654e006d222d5
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Thu Nov 5 23:56:38 2015 +0100

    radeonsi: initialize SX_PS_DOWNCONVERT to 0 on Stoney
    
    otherwise the SX or CB blocks can go bananas
    
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 40912dd91e96376517fb41bb4dc228b45fd1a01c)
    [Emil Velikov: resolve trivial conflicts]
    Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
    
    Conflicts:
    	src/gallium/drivers/radeonsi/si_state.c

diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 6dde38c..1bca645 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3342,5 +3342,8 @@ static void si_init_config(struct si_context *sctx)
 		si_pm4_set_reg(pm4, R_028C5C_VGT_OUT_DEALLOC_CNTL, 32);
 	}
 
+	if (sctx->b.family == CHIP_STONEY)
+		si_pm4_set_reg(pm4, R_028754_SX_PS_DOWNCONVERT, 0);
+
 	sctx->init_config = pm4;
 }

commit 0dd0d6696fd7760f460af87f7155ce2ae6316945
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Thu Nov 12 18:10:22 2015 -0800

    nir/vars_to_ssa: Rework copy set handling in lower_copies_to_load_store
    
    Previously, we walked through a given deref_node's copies and, after
    lowering the copy away, removed it from both the source and destination
    copy sets.  This commit changes this to only remove it from the other
    node's copy set (not the one we're lowering).  At the end of the loop, we
    just throw away the copy set for the node we're lowering since that node no
    longer has any copies.  This has two advantages:
    
     1) It's more efficient because we're doing potentially half as many set
        search operations.
    
     2) It now properly handles copies from a node to itself.  Perviously, it
        would delete the copy from the set when processing the destinatioon and
        then assert-fail when we couldn't find it for the source.
    
    Cc: "11.0" <mesa-stable@lists.freedesktop.org>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92588
    Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
    Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
    (cherry picked from commit 226ba889a0f820b9f4b1132e379620d2688c96e7)

diff --git a/src/glsl/nir/nir_lower_vars_to_ssa.c b/src/glsl/nir/nir_lower_vars_to_ssa.c
index ccb8f99..1248926 100644
--- a/src/glsl/nir/nir_lower_vars_to_ssa.c
+++ b/src/glsl/nir/nir_lower_vars_to_ssa.c
@@ -455,7 +455,8 @@ lower_copies_to_load_store(struct deref_node *node,
          struct deref_node *arg_node =
             get_deref_node(copy->variables[i], state);
 
-         if (arg_node == NULL)
+         /* Only bother removing copy entries for other nodes */
+         if (arg_node == NULL || arg_node == node)
             continue;
 
          struct set_entry *arg_entry = _mesa_set_search(arg_node->copies, copy);
@@ -466,6 +467,8 @@ lower_copies_to_load_store(struct deref_node *node,
       nir_instr_remove(&copy->instr);
    }
 
+   node->copies = NULL;
+
    return true;
 }
 

commit 4b3d4ceaba7fff20938c76961075d2bce6469b8d
Author: Ben Widawsky <benjamin.widawsky@intel.com>
Date:   Fri Nov 6 18:12:27 2015 -0800

    i965/skl/gt4: Fix URB programming restriction.
    
    The comment in the code details the restriction. Thanks to Ken for having a very
    helpful conversation with me, and spotting the blurb in the link I sent him :P.
    
    There are still stability problems for me on GT4, but this definitely helps with
    some of the failures.
    
    v2: Comment fixes
    
    Cc: mesa-stable@lists.freedesktop.org
    Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    (cherry picked from commit 55314c5be4cbf933ab7fbd20f6aa49207e04c946)

diff --git a/src/mesa/drivers/dri/i965/brw_device_info.c b/src/mesa/drivers/dri/i965/brw_device_info.c
index 758d2f2..5a40ef0 100644
--- a/src/mesa/drivers/dri/i965/brw_device_info.c
+++ b/src/mesa/drivers/dri/i965/brw_device_info.c
@@ -336,6 +336,15 @@ static const struct brw_device_info brw_device_info_skl_gt3 = {
 
 static const struct brw_device_info brw_device_info_skl_gt4 = {
    GEN9_FEATURES, .gt = 4,
+   /* From the "L3 Allocation and Programming" documentation:
+    *
+    * "URB is limited to 1008KB due to programming restrictions.  This is not a
+    * restriction of the L3 implementation, but of the FF and other clients.
+    * Therefore, in a GT4 implementation it is possible for the programmed
+    * allocation of the L3 data array to provide 3*384KB=1152KB for URB, but
+    * only 1008KB of this will be used."
+    */
+   .urb.size = 1008 / 3,
 };
 
 static const struct brw_device_info brw_device_info_bxt = {

commit 20f0d8849597f8df016dbe99e6c7c18d5b8af0e8
Author: Dave Airlie <airlied@redhat.com>
Date:   Thu Nov 12 08:34:18 2015 +1000

    r600: initialised PGM_RESOURCES_2 for ES/GS
    
    This fixes the corruption on rendering that we are seeing in
    certain geometry shaders.
    
    Fixes:  https://bugs.freedesktop.org/show_bug.cgi?id=91780
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Tested / Reviewed-by: Glenn Kennard <glenn.kennard@gmail.com>
    Cc: "10.6" "11.0" <mesa-stable@lists.freedesktop.org>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    
    (cherry picked from commit df8af7d75155845d12d5a14a3a5ca644f07cb3b1)

diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
index 82530be..2dc3811 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -2342,6 +2342,8 @@ static void cayman_init_atom_start_cs(struct r600_context *rctx)
 
 	r600_store_context_reg(cb, R_028848_SQ_PGM_RESOURCES_2_PS, S_028848_SINGLE_ROUND(V_SQ_ROUND_NEAREST_EVEN));
 	r600_store_context_reg(cb, R_028864_SQ_PGM_RESOURCES_2_VS, S_028864_SINGLE_ROUND(V_SQ_ROUND_NEAREST_EVEN));
+	r600_store_context_reg(cb, R_02887C_SQ_PGM_RESOURCES_2_GS, S_028848_SINGLE_ROUND(V_SQ_ROUND_NEAREST_EVEN));
+	r600_store_context_reg(cb, R_028894_SQ_PGM_RESOURCES_2_ES, S_028848_SINGLE_ROUND(V_SQ_ROUND_NEAREST_EVEN));
 	r600_store_context_reg(cb, R_0288A8_SQ_PGM_RESOURCES_FS, 0);
 
 	/* to avoid GPU doing any preloading of constant from random address */
@@ -2781,6 +2783,8 @@ void evergreen_init_atom_start_cs(struct r600_context *rctx)
 
 	r600_store_context_reg(cb, R_028848_SQ_PGM_RESOURCES_2_PS, S_028848_SINGLE_ROUND(V_SQ_ROUND_NEAREST_EVEN));
 	r600_store_context_reg(cb, R_028864_SQ_PGM_RESOURCES_2_VS, S_028864_SINGLE_ROUND(V_SQ_ROUND_NEAREST_EVEN));
+	r600_store_context_reg(cb, R_02887C_SQ_PGM_RESOURCES_2_GS, S_028848_SINGLE_ROUND(V_SQ_ROUND_NEAREST_EVEN));
+	r600_store_context_reg(cb, R_028894_SQ_PGM_RESOURCES_2_ES, S_028848_SINGLE_ROUND(V_SQ_ROUND_NEAREST_EVEN));
 	r600_store_context_reg(cb, R_0288A8_SQ_PGM_RESOURCES_FS, 0);
 
 	/* to avoid GPU doing any preloading of constant from random address */
diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h
index ad6ad43..2b83892 100644
--- a/src/gallium/drivers/r600/evergreend.h
+++ b/src/gallium/drivers/r600/evergreend.h
@@ -1497,6 +1497,7 @@
 #define   S_028878_UNCACHED_FIRST_INST(x)              (((x) & 0x1) << 28)
 #define   G_028878_UNCACHED_FIRST_INST(x)              (((x) >> 28) & 0x1)
 #define   C_028878_UNCACHED_FIRST_INST                 0xEFFFFFFF
+#define R_02887C_SQ_PGM_RESOURCES_2_GS                 0x02887C
 
 #define R_028890_SQ_PGM_RESOURCES_ES                 0x028890
 #define   S_028890_NUM_GPRS(x)                         (((x) & 0xFF) << 0)
@@ -1511,6 +1512,7 @@
 #define   S_028890_UNCACHED_FIRST_INST(x)              (((x) & 0x1) << 28)
 #define   G_028890_UNCACHED_FIRST_INST(x)              (((x) >> 28) & 0x1)
 #define   C_028890_UNCACHED_FIRST_INST                 0xEFFFFFFF
+#define R_028894_SQ_PGM_RESOURCES_2_ES                 0x028894
 
 #define R_028864_SQ_PGM_RESOURCES_2_VS               0x028864
 #define   S_028864_SINGLE_ROUND(x)                     (((x) & 0x3) << 0)

commit fa527fce5c5c05cd41fee37862a2b886dc8c0380
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Sun Nov 8 04:46:38 2015 -0500

    mesa/copyimage: allow width/height to not be multiples of block
    
    For compressed textures, the image size is not necessarily a multiple of
    the block size (e.g. the last mip levels). Section 18.3.2 (Copying
    Between Images) of the OpenGL 4.5 Core Profile spec says:
    
        An INVALID_VALUE error is generated if the dimensions of either
        subregion exceeds the boundaries of the corresponding image
        object, or if the image format is compressed and the dimensions of
        the subregion fail to meet the alignment constraints of the


Reply to: