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

mesa: Changes to 'upstream-unstable'



 .travis.yml                                                   |   28 +
 Makefile.am                                                   |    1 
 VERSION                                                       |    2 
 bin/.cherry-ignore                                            |   20 +
 bin/get-pick-list.sh                                          |    2 
 configure.ac                                                  |   10 
 docs/relnotes/12.0.3.html                                     |    3 
 include/GL/mesa_glinterop.h                                   |   12 
 install-gallium-links.mk                                      |    4 
 src/Makefile.am                                               |   27 +
 src/compiler/glsl/ir_hv_accept.cpp                            |    2 
 src/compiler/nir/nir_intrinsics.h                             |    2 
 src/compiler/nir/nir_lower_alu_to_scalar.c                    |    3 
 src/compiler/nir/nir_opcodes.py                               |    2 
 src/compiler/spirv/spirv_to_nir.c                             |    8 
 src/compiler/spirv/vtn_cfg.c                                  |   23 +
 src/compiler/spirv/vtn_private.h                              |    4 
 src/compiler/spirv/vtn_variables.c                            |  169 +++++-----
 src/egl/drivers/dri2/egl_dri2.c                               |   18 +
 src/egl/drivers/dri2/egl_dri2.h                               |    2 
 src/egl/drivers/dri2/platform_android.c                       |    3 
 src/egl/drivers/dri2/platform_wayland.c                       |   15 
 src/egl/drivers/dri2/platform_x11.c                           |   14 
 src/egl/drivers/dri2/platform_x11_dri3.c                      |   12 
 src/egl/main/eglapi.c                                         |    8 
 src/egl/main/egldefines.h                                     |    3 
 src/egl/main/eglglobals.c                                     |    8 
 src/egl/main/eglsurface.c                                     |    6 
 src/egl/main/eglsync.c                                        |    7 
 src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c            |    9 
 src/gallium/auxiliary/util/u_box.h                            |   31 +
 src/gallium/auxiliary/vl/vl_winsys_drm.c                      |    3 
 src/gallium/drivers/freedreno/a3xx/a3xx.xml.h                 |    2 
 src/gallium/drivers/freedreno/a3xx/fd3_draw.c                 |    3 
 src/gallium/drivers/freedreno/a3xx/fd3_emit.c                 |   78 +++-
 src/gallium/drivers/freedreno/a3xx/fd3_program.c              |   15 
 src/gallium/drivers/freedreno/a3xx/fd3_program.h              |    3 
 src/gallium/drivers/freedreno/ir3/ir3_shader.c                |    6 
 src/gallium/drivers/freedreno/ir3/ir3_shader.h                |    1 
 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp    |    4 
 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp    |    3 
 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp     |   10 
 src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp     |  147 +++++---
 src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp |   12 
 src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp            |    4 
 src/gallium/drivers/nouveau/nv30/nv30_transfer.c              |    3 
 src/gallium/drivers/nouveau/nv50/nv50_program.c               |    3 
 src/gallium/drivers/nouveau/nvc0/nvc0_program.c               |    7 
 src/gallium/drivers/nouveau/nvc0/nvc0_tex.c                   |    2 
 src/gallium/drivers/r300/r300_context.c                       |   10 
 src/gallium/drivers/radeon/r600_texture.c                     |    5 
 src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c           |   51 ---
 src/gallium/drivers/radeonsi/si_compute.c                     |   26 +
 src/gallium/drivers/radeonsi/si_shader.c                      |   10 
 src/gallium/drivers/radeonsi/si_state.c                       |    4 
 src/gallium/drivers/radeonsi/si_state_draw.c                  |   14 
 src/gallium/drivers/radeonsi/si_state_shaders.c               |   11 
 src/gallium/state_trackers/clover/llvm/invocation.cpp         |    2 
 src/gallium/state_trackers/dri/dri2.c                         |   11 
 src/gallium/state_trackers/nine/nine_shader.c                 |    2 
 src/gallium/state_trackers/nine/surface9.c                    |    1 
 src/gallium/state_trackers/nine/volume9.c                     |    2 
 src/gallium/state_trackers/va/surface.c                       |   36 +-
 src/gallium/state_trackers/vdpau/output.c                     |    2 
 src/gallium/state_trackers/xa/xa_tracker.c                    |    3 
 src/gallium/winsys/amdgpu/drm/amdgpu_surface.c                |   17 +
 src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c           |    3 
 src/gallium/winsys/radeon/drm/radeon_drm_winsys.c             |    3 
 src/gallium/winsys/svga/drm/vmw_screen.c                      |    3 
 src/gallium/winsys/vc4/drm/vc4_drm_winsys.c                   |    3 
 src/gallium/winsys/virgl/drm/virgl_drm_winsys.c               |    2 
 src/gbm/backends/dri/gbm_dri.c                                |    8 
 src/gbm/main/gbm.c                                            |    3 
 src/glx/dri3_glx.c                                            |   11 
 src/glx/glxcmds.c                                             |    7 
 src/intel/genxml/Makefile.am                                  |    1 
 src/intel/isl/isl_gen6.c                                      |    2 
 src/intel/vulkan/anv_wsi_wayland.c                            |    1 
 src/intel/vulkan/anv_wsi_x11.c                                |    3 
 src/loader/loader_dri3_helper.c                               |   25 -
 src/loader/loader_dri3_helper.h                               |    1 
 src/mapi/Makefile.am                                          |    3 
 src/mesa/Makefile.am                                          |   10 
 src/mesa/drivers/dri/i965/brw_blorp.c                         |   10 
 src/mesa/drivers/dri/i965/brw_blorp.h                         |    3 
 src/mesa/drivers/dri/i965/brw_blorp_blit.cpp                  |   12 
 src/mesa/drivers/dri/i965/brw_blorp_clear.cpp                 |    5 
 src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp             |    5 
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c              |    7 
 src/mesa/drivers/dri/i965/gen6_clip_state.c                   |    2 
 src/mesa/drivers/dri/i965/gen7_cs_state.c                     |    3 
 src/mesa/drivers/dri/i965/gen8_ds_state.c                     |    3 
 src/mesa/drivers/dri/i965/gen8_ps_state.c                     |    2 
 src/mesa/drivers/dri/i965/intel_syncobj.c                     |   14 
 src/mesa/main/buffers.c                                       |   71 ++--
 src/mesa/main/fbobject.c                                      |   16 
 src/mesa/main/formatquery.c                                   |   15 
 src/mesa/main/get.c                                           |    7 
 src/mesa/main/get_hash_params.py                              |    6 
 src/mesa/main/glformats.c                                     |    8 
 src/mesa/state_tracker/st_atom_array.c                        |   98 ++---
 src/mesa/state_tracker/st_atom_texture.c                      |   10 
 src/mesa/state_tracker/st_cb_clear.c                          |   10 
 src/mesa/state_tracker/st_draw.c                              |   15 
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp                    |  102 ++----
 105 files changed, 953 insertions(+), 531 deletions(-)

New commits:
commit 20370d4f1b3522ba32c01b52d1fb19909de4ac89
Author: Jonathan Gray <jsg@jsg.id.au>
Date:   Sun Oct 16 23:16:19 2016 +1100

    mesa: automake: include mesa_glinterop.h in distfile
    
    Add mesa_glinterop.h to the list of headers that will get included
    in the distfile as it is required to build Mesa itself.
    
    Corrects a regression introduced in a89faa2022fd995af2019c886b152b49a01f9392.
    
    Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
    Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
    (cherry picked from commit 23392abf506c71a6a1c5bfb04db64756e39315cb)

diff --git a/src/Makefile.am b/src/Makefile.am
index a519e8a..c0aa115 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -117,7 +117,8 @@ SUBDIRS += gallium
 endif
 
 EXTRA_DIST = \
-	getopt hgl SConscript
+	getopt hgl SConscript \
+	$(top_srcdir)/include/GL/mesa_glinterop.h
 
 AM_CFLAGS = $(VISIBILITY_CFLAGS)
 AM_CXXFLAGS = $(VISIBILITY_CXXFLAGS)

commit 72539c5e38e307c30c2408b1fa6813a4a7db5d41
Author: Emil Velikov <emil.velikov@collabora.com>
Date:   Thu Nov 10 21:03:41 2016 +0000

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

diff --git a/VERSION b/VERSION
index 470ce40..f0ad792 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-12.0.3
+12.0.4

commit e7c14088707d0bd4dd8fceaec5d3fc529917a7df
Author: Dave Airlie <airlied@redhat.com>
Date:   Thu Sep 15 13:58:33 2016 +1000

    Revert "st/vdpau: use linear layout for output surfaces"
    
    This reverts commit d180de35320eafa3df3d76f0e82b332656530126.
    
    This is a radeon specific hack that causes problems on nouveau
    when combined with the SHARED flag later. If radeonsi needs a fix
    for this, please fix it in the driver.
    
    [chk]
    Using linear surfaces for this makes sense because tilling isn't
    beneficial and the surfaces can potentially be shared with other GPUs
    using the VDPAU OpenGL interop.
    
    [airlied]
    I think we need a flag that isn't SHARED/LINEAR that is more
    SHARED_OTHER_GPU.
    
    [mareko]
    Does radeonsi need PIPE_BIND_VIDEO_DECODE_OUTPUT that it would translate
    into linear ?
    
    [mareko]
    My only concern is decoding performance. If the decoder works in 64x1
    blocks, tiling will hurt. That's the theory. I don't know how the
    decoder works.
    
    Cc: 12.0 13.0 <mesa-stable@lists.freedesktop.org>
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Tested-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Tested-by: Nayan Deshmukh <nayan26deshmukh@gmail.com> (I+A)
    (cherry picked from commit d0d5f7600c2e8ab8d0c153787185f7a534753edd)

diff --git a/src/gallium/state_trackers/vdpau/output.c b/src/gallium/state_trackers/vdpau/output.c
index c644cc8..b278288 100644
--- a/src/gallium/state_trackers/vdpau/output.c
+++ b/src/gallium/state_trackers/vdpau/output.c
@@ -82,7 +82,7 @@ vlVdpOutputSurfaceCreate(VdpDevice device,
    res_tmpl.depth0 = 1;
    res_tmpl.array_size = 1;
    res_tmpl.bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET |
-                   PIPE_BIND_LINEAR | PIPE_BIND_SHARED;
+                   PIPE_BIND_SHARED;
    res_tmpl.usage = PIPE_USAGE_DEFAULT;
 
    pipe_mutex_lock(dev->mutex);

commit 422e4da25c07605dd1d6bca99140a34790fd2d65
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Wed Nov 2 18:59:22 2016 +0100

    glx: make interop ABI visible again
    
    This was broken when the GLAPI use was removed from mesa_glinterop.h.
    
    Cc: 12.0 13.0 <mesa-stable@lists.freedesktop.org>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
    (cherry picked from commit 64c2593a5c33a98d880d141793360b44d07d1366)

diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index 6f76473..5ff4dd3 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -2717,7 +2717,7 @@ __glXGetUST(int64_t * ust)
 
 #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 
-int
+PUBLIC int
 MesaGLInteropGLXQueryDeviceInfo(Display *dpy, GLXContext context,
                                 struct mesa_glinterop_device_info *out)
 {
@@ -2741,7 +2741,7 @@ MesaGLInteropGLXQueryDeviceInfo(Display *dpy, GLXContext context,
    return ret;
 }
 
-int
+PUBLIC int
 MesaGLInteropGLXExportObject(Display *dpy, GLXContext context,
                              struct mesa_glinterop_export_in *in,
                              struct mesa_glinterop_export_out *out)

commit 1040360e9f494c5233979595ce19178c46e23942
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Wed Nov 2 18:59:22 2016 +0100

    egl: make interop ABI visible again
    
    This was broken when the GLAPI use was removed from mesa_glinterop.h.
    
    Cc: 12.0 13.0 <mesa-stable@lists.freedesktop.org>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
    (cherry picked from commit ee39d4456e7551b257343551d59e7c6a3388fdc0)

diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
index 55243ec..127ca1e 100644
--- a/src/egl/main/eglapi.c
+++ b/src/egl/main/eglapi.c
@@ -1939,7 +1939,7 @@ _eglLockDisplayInterop(EGLDisplay dpy, EGLContext context,
    return MESA_GLINTEROP_SUCCESS;
 }
 
-int
+PUBLIC int
 MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context,
                                 struct mesa_glinterop_device_info *out)
 {
@@ -1961,7 +1961,7 @@ MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context,
    return ret;
 }
 
-int
+PUBLIC int
 MesaGLInteropEGLExportObject(EGLDisplay dpy, EGLContext context,
                              struct mesa_glinterop_export_in *in,
                              struct mesa_glinterop_export_out *out)

commit ad7d21bc3a01dd2d4fa4b129d8373047d097a71a
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Wed Nov 2 18:56:39 2016 +0100

    egl: use util/macros.h
    
    I need the definition of PUBLIC.
    
    Cc: 12.0 13.0 <mesa-stable@lists.freedesktop.org>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
    (cherry picked from commit bf51b45313c7cc5ca792401f0cc29574aa9122cf)
    [Emil Velikov: Keep the MIN2 macro]
    Signed-off-by: Emil Velikov <emil.velikov@collabora.com>

diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
index 02f9604..6099bc2 100644
--- a/src/egl/drivers/dri2/egl_dri2.h
+++ b/src/egl/drivers/dri2/egl_dri2.h
@@ -80,8 +80,6 @@
 #include "eglimage.h"
 #include "eglsync.h"
 
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
-
 struct wl_buffer;
 
 struct dri2_egl_driver
diff --git a/src/egl/main/egldefines.h b/src/egl/main/egldefines.h
index 13a7563..6090fc3 100644
--- a/src/egl/main/egldefines.h
+++ b/src/egl/main/egldefines.h
@@ -34,6 +34,8 @@
 #ifndef EGLDEFINES_INCLUDED
 #define EGLDEFINES_INCLUDED
 
+#include "util/macros.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -48,7 +50,6 @@ extern "C" {
 
 #define _EGL_VENDOR_STRING "Mesa Project"
 
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
 #define MIN2(A, B)  (((A) < (B)) ? (A) : (B))
 
 #ifdef __cplusplus

commit 3d4a219dd86eaab549e49c48ed1c8a0c922b5221
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Fri Oct 21 12:09:38 2016 -0700

    intel/blorp: Rework our usage of ralloc when compiling shaders
    
    Previously, we were creating the shader with a NULL ralloc context and then
    trusting in blorp_compile_fs to clean it up.  The only problem was that
    blorp_compile_fs didn't clean up its context properly so we were leaking.
    When I went to fix that, I realized that it couldn't because it has to
    return the shader binary which is allocated off of that context and used by
    the caller.  The solution is to make blorp_compile_fs take a ralloc
    context, allocate the nir_shaders directly off that context, and clean it
    all up in whatever function creates the shader and calls blorp_compile_fs.
    
    Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
    Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
    Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
    Cc: "12.0, 13.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 43dadb6edd5e3e3e10b1198184a9f75556edad49)
    [Emil Velikov: attribute src/intel/blorp file movement]
    Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
    
    Conflicts:
    	src/intel/blorp/blorp.c
    	src/intel/blorp/blorp_clear.c
    	src/intel/blorp/blorp_priv.h
    	src/mesa/drivers/dri/i965/brw_blorp_blit.cpp

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c
index 9590968..6be82c5 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.c
+++ b/src/mesa/drivers/dri/i965/brw_blorp.c
@@ -167,7 +167,8 @@ nir_uniform_type_size(const struct glsl_type *type)
 }
 
 const unsigned *
-brw_blorp_compile_nir_shader(struct brw_context *brw, struct nir_shader *nir,
+brw_blorp_compile_nir_shader(struct brw_context *brw, void *mem_ctx,
+                             struct nir_shader *nir,
                              const struct brw_wm_prog_key *wm_key,
                              bool use_repclear,
                              struct brw_blorp_prog_data *prog_data,
@@ -175,13 +176,6 @@ brw_blorp_compile_nir_shader(struct brw_context *brw, struct nir_shader *nir,
 {
    const struct brw_compiler *compiler = brw->intelScreen->compiler;
 
-   void *mem_ctx = ralloc_context(NULL);
-
-   /* Calling brw_preprocess_nir and friends is destructive and, if cloning is
-    * enabled, may end up completely replacing the nir_shader.  Therefore, we
-    * own it and might as well put it in our context for easy cleanup.
-    */
-   ralloc_steal(mem_ctx, nir);
    nir->options =
       compiler->glsl_compiler_options[MESA_SHADER_FRAGMENT].NirOptions;
 
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h
index 7ec5875..133a8ac 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -366,7 +366,8 @@ struct brw_blorp_blit_prog_key
 void brw_blorp_init_wm_prog_key(struct brw_wm_prog_key *wm_key);
 
 const unsigned *
-brw_blorp_compile_nir_shader(struct brw_context *brw, struct nir_shader *nir,
+brw_blorp_compile_nir_shader(struct brw_context *brw, void *mem_ctx,
+                             struct nir_shader *nir,
                              const struct brw_wm_prog_key *wm_key,
                              bool use_repclear,
                              struct brw_blorp_prog_data *prog_data,
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index 782d285..db94f33 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -1296,7 +1296,7 @@ blorp_nir_manual_blend_bilinear(nir_builder *b, nir_ssa_def *pos,
  * of samples).
  */
 static nir_shader *
-brw_blorp_build_nir_shader(struct brw_context *brw,
+brw_blorp_build_nir_shader(struct brw_context *brw, void *mem_ctx,
                            const brw_blorp_blit_prog_key *key)
 {
    nir_ssa_def *src_pos, *dst_pos, *color;
@@ -1342,7 +1342,7 @@ brw_blorp_build_nir_shader(struct brw_context *brw,
           (key->dst_samples == 0));
 
    nir_builder b;
-   nir_builder_init_simple_shader(&b, NULL, MESA_SHADER_FRAGMENT, NULL);
+   nir_builder_init_simple_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT, NULL);
 
    struct brw_blorp_blit_vars v;
    brw_blorp_blit_vars_init(&b, &v, key);
@@ -1505,6 +1505,8 @@ brw_blorp_get_blit_kernel(struct brw_context *brw,
                         &params->wm_prog_kernel, &params->wm_prog_data))
       return;
 
+   void *mem_ctx = ralloc_context(NULL);
+
    const unsigned *program;
    unsigned program_size;
    struct brw_blorp_prog_data prog_data;
@@ -1512,7 +1514,7 @@ brw_blorp_get_blit_kernel(struct brw_context *brw,
    /* Try and compile with NIR first.  If that fails, fall back to the old
     * method of building shaders manually.
     */
-   nir_shader *nir = brw_blorp_build_nir_shader(brw, prog_key);
+   nir_shader *nir = brw_blorp_build_nir_shader(brw, mem_ctx, prog_key);
    struct brw_wm_prog_key wm_key;
    brw_blorp_init_wm_prog_key(&wm_key);
    wm_key.tex.compressed_multisample_layout_mask =
@@ -1520,7 +1522,7 @@ brw_blorp_get_blit_kernel(struct brw_context *brw,
    wm_key.tex.msaa_16 = prog_key->tex_samples == 16;
    wm_key.multisample_fbo = prog_key->rt_samples > 1;
 
-   program = brw_blorp_compile_nir_shader(brw, nir, &wm_key, false,
+   program = brw_blorp_compile_nir_shader(brw, mem_ctx, nir, &wm_key, false,
                                           &prog_data, &program_size);
 
    brw_upload_cache(&brw->cache, BRW_CACHE_BLORP_PROG,
@@ -1528,6 +1530,8 @@ brw_blorp_get_blit_kernel(struct brw_context *brw,
                     program, program_size,
                     &prog_data, sizeof(prog_data),
                     &params->wm_prog_kernel, &params->wm_prog_data);
+
+   ralloc_free(mem_ctx);
 }
 
 static void
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_clear.cpp b/src/mesa/drivers/dri/i965/brw_blorp_clear.cpp
index 2515a04..6400218 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_clear.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_clear.cpp
@@ -64,7 +64,7 @@ brw_blorp_params_get_clear_kernel(struct brw_context *brw,
    void *mem_ctx = ralloc_context(NULL);
 
    nir_builder b;
-   nir_builder_init_simple_shader(&b, NULL, MESA_SHADER_FRAGMENT, NULL);
+   nir_builder_init_simple_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT, NULL);
    b.shader->info.name = ralloc_strdup(b.shader, "BLORP-clear");
 
    nir_variable *u_color = nir_variable_create(b.shader, nir_var_uniform,
@@ -84,7 +84,8 @@ brw_blorp_params_get_clear_kernel(struct brw_context *brw,
    struct brw_blorp_prog_data prog_data;
    unsigned program_size;
    const unsigned *program =
-      brw_blorp_compile_nir_shader(brw, b.shader, &wm_key, use_replicated_data,
+      brw_blorp_compile_nir_shader(brw, mem_ctx,
+                                   b.shader, &wm_key, use_replicated_data,
                                    &prog_data, &program_size);
 
    brw_upload_cache(&brw->cache, BRW_CACHE_BLORP_PROG,

commit 76a77249ed5a0bae8b4b8c693159f8a8a1481be6
Author: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Date:   Wed Oct 26 23:10:53 2016 +0200

    nvc0/ir: fix emission of IMAD with NEG modifiers
    
    The emitter tried to emit sub instead of subr when src0 has
    actually a NEG modifier.
    
    Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
    Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Cc: "11.0 12.0 13.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 84e946380b2d5ddc62a107b667be39abf1932704)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
index 54115d6..3a23a9a 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -726,7 +726,7 @@ void
 CodeEmitterGK110::emitIMAD(const Instruction *i)
 {
    uint8_t addOp =
-      (i->src(2).mod.neg() << 1) | (i->src(0).mod.neg() ^ i->src(1).mod.neg());
+      i->src(2).mod.neg() | ((i->src(0).mod.neg() ^ i->src(1).mod.neg()) << 1);
 
    emitForm_21(i, 0x100, 0xa00);
 
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
index b3cfe08..be5ee4f 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
@@ -737,7 +737,7 @@ void
 CodeEmitterNVC0::emitIMAD(const Instruction *i)
 {
    uint8_t addOp =
-      (i->src(2).mod.neg() << 1) | (i->src(0).mod.neg() ^ i->src(1).mod.neg());
+      i->src(2).mod.neg() | ((i->src(0).mod.neg() ^ i->src(1).mod.neg()) << 1);
 
    assert(i->encSize == 8);
    emitForm_A(i, HEX64(20000000, 00000003));

commit c1f138149edfbf4b586d7a8fa4f3e92ad5ee7dbf
Author: Tapani Pälli <tapani.palli@intel.com>
Date:   Wed Oct 26 13:54:51 2016 +0300

    egl: set preserved behavior for surface only if config supports it
    
    Otherwise we can end up with mismatching behavior between config and
    surface when client queries surface attributes. As example, configs
    for DRI3 do not support preserved behavior but here we were setting
    preserved behavior for pixmap and pbuffer.
    
    Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98326
    Cc: "12.0 13.0" <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
    Reviewed-by: Chad Versace <chadversary@chromium.org>
    Tested-by: Mark Janes <mark.a.janes@intel.com>
    (cherry picked from commit 2035930966b05a7c4dd1f6559d66b5a3b41e01a5)

diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c
index 17d7907..e8ee49c 100644
--- a/src/egl/main/eglsurface.c
+++ b/src/egl/main/eglsurface.c
@@ -262,9 +262,13 @@ _eglInitSurface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type,
 {
    const char *func;
    EGLint renderBuffer = EGL_BACK_BUFFER;
-   EGLint swapBehavior = EGL_BUFFER_PRESERVED;
+   EGLint swapBehavior = EGL_BUFFER_DESTROYED;
    EGLint err;
 
+   /* Swap behavior can be preserved only if config supports this. */
+   if (conf->SurfaceType & EGL_SWAP_BEHAVIOR_PRESERVED_BIT)
+      swapBehavior = EGL_BUFFER_PRESERVED;
+
    switch (type) {
    case EGL_WINDOW_BIT:
       func = "eglCreateWindowSurface";

commit 3a27b813b449eb6ec2e41a9b646af1953f002783
Author: Emil Velikov <emil.velikov@collabora.com>
Date:   Mon Oct 31 18:47:21 2016 +0000

    cherry-ignore: add ClientWaitSync fixes
    
    Patches (and extension overall) depends on gallium API and driver work
    which hasn't landed in branch.
    
    Signed-off-by: Emil Velikov <emil.velikov@collabora.com>

diff --git a/bin/.cherry-ignore b/bin/.cherry-ignore
index 227b21d..005e1e3 100644
--- a/bin/.cherry-ignore
+++ b/bin/.cherry-ignore
@@ -20,3 +20,6 @@ f2b9b0c730e345bcffa9eadabb25af3ab02642f2 i965: Add missing BRW_NEW_FS_PROG_DATA
 # The commit in question hasn't landed in branch
 1ef787339774bc7f1cc9c1615722f944005e070c Revert "egl/android: Set EGL_MAX_PBUFFER_WIDTH and EGL_MAX_PBUFFER_HEIGHT"
 
+# Patches depend on the fence_finish() gallium API change and corresponding driver work
+f240ad98bc05281ea7013d91973cb5f932ae9434 st/mesa: unduplicate st_check_sync code
+b687f766fddb7b39479cd9ee0427984029ea3559 st/mesa: allow multiple concurrent waiters in ClientWaitSync

commit ac3abe534bb9986ce7ee1286854a3bb2a83568bc
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Mon Oct 24 19:05:10 2016 +0200

    winsys/amdgpu: fix radeon_surf::macro_tile_index for imported textures
    
    Maybe this is why SDMA has been broken for many amdgpu users?
    
    SDMA is the only block which is used with imported textures and relies
    on this variable. DB also uses it, but it doesn't get imported textures,
    so it's unaffected.
    
    I do get SDMA failures on Tonga before this patch if R600_DEBUG=testdma
    is changed to use imported textures.
    
    Cc: 11.2 12.0 13.0 <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    (cherry picked from commit 6ec3b2a4b1d41b83a4721d06b42c49f55e695cbf)
    [Emil Velikov: resolve trivial conflicts - SI support does not exist in
    branch]
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    
    Conflicts:
    	src/gallium/winsys/amdgpu/drm/amdgpu_surface.c

diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c b/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c
index 8b776b7..3f6e280 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c
@@ -253,6 +253,20 @@ static int compute_level(struct amdgpu_winsys *ws,
    return 0;
 }
 
+static unsigned cik_get_macro_tile_index(struct radeon_surf *surf)
+{
+	unsigned index, tileb;
+
+	tileb = 8 * 8 * surf->bpe;
+	tileb = MIN2(surf->tile_split, tileb);
+
+	for (index = 0; tileb > 64; index++)
+		tileb >>= 1;
+
+	assert(index < 16);
+	return index;
+}
+
 static int amdgpu_surface_init(struct radeon_winsys *rws,
                                struct radeon_surf *surf)
 {
@@ -381,6 +395,9 @@ static int amdgpu_surface_init(struct radeon_winsys *rws,
          AddrSurfInfoIn.tileIndex = 10; /* 2D displayable */
       else
          AddrSurfInfoIn.tileIndex = 14; /* 2D non-displayable */
+
+      /* Addrlib doesn't set this if tileIndex is forced like above. */
+      AddrSurfInfoOut.macroModeIndex = cik_get_macro_tile_index(surf);
    }
 
    surf->bo_size = 0;

commit 20008a9fb82a573f15e9c6b02b68a90f31889efb
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Mon Oct 24 21:16:11 2016 +0200

    gallium/radeon: make sure the address of separate CMASK is aligned properly
    
    This should fix random GPU hangs on Hawaii and Fiji.
    
    Cc: 11.2 12.0 13.0 <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    (cherry picked from commit dce05b342355eac9296ee7110385b16d6edb059d)

diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c
index 23ddff4..8de3b18 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -703,8 +703,9 @@ static void r600_texture_alloc_cmask_separate(struct r600_common_screen *rscreen
 	}
 
 	rtex->cmask_buffer = (struct r600_resource *)
-		pipe_buffer_create(&rscreen->b, PIPE_BIND_CUSTOM,
-				   PIPE_USAGE_DEFAULT, rtex->cmask.size);
+		r600_aligned_buffer_create(&rscreen->b, 0, PIPE_USAGE_DEFAULT,
+					   rtex->cmask.size,
+					   rtex->cmask.alignment);
 	if (rtex->cmask_buffer == NULL) {
 		rtex->cmask.size = 0;
 		return;

commit 79a1cc2364b7894617a8c70f0810d6879876f1e1
Author: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Date:   Tue Oct 25 13:24:16 2016 +0200

    nvc0: use correct bufctx when invalidating CP textures
    
    Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
    Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Cc: "12.0 13.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 7b2712c367891e96384226a1fa94679a814235d0)

diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c b/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c
index 716048d..efd90de 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c
@@ -591,7 +591,7 @@ void nvc0_validate_textures(struct nvc0_context *nvc0)
 
    /* Invalidate all CP textures because they are aliased. */
    for (int i = 0; i < nvc0->num_textures[5]; i++)
-      nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_CP_TEX(i));
+      nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_TEX(i));
    nvc0->textures_dirty[5] = ~0;
    nvc0->dirty_cp |= NVC0_NEW_CP_TEXTURES;
 }

commit cac5e31b0f7f17d1213288b5e7b2bd73ceccf401
Author: Tapani Pälli <tapani.palli@intel.com>
Date:   Fri Oct 7 10:08:21 2016 +0300

    mesa: fix error handling in DrawBuffers
    
    Patch rearranges error checking so that enum checking provided via
    destmask happens before other checks. It needs to be done in this
    order because other error checks do not work properly if there were
    invalid enums passed.
    
    Patch also refines one existing check and it's documentation to match
    GLES 3.0 spec (also in later specs). This was somewhat mysteriously
    referring to desktop GL but had a check for gles3.
    
    Fixes following dEQP tests:
    
       dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.draw_buffers
    
    no CI regressions observed.
    
    Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98134
    Cc: "12.0 13.0" <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
    (cherry picked from commit a1652a059edc5a5f0f4b0836ba310a22e094bd85)

diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c
index a28c583..d8815af 100644
--- a/src/mesa/main/buffers.c
+++ b/src/mesa/main/buffers.c
@@ -378,17 +378,48 @@ draw_buffers(struct gl_context *ctx, struct gl_framebuffer *fb,
 
    /* complicated error checking... */
    for (output = 0; output < n; output++) {
-      /* Section 4.2 (Whole Framebuffer Operations) of the OpenGL 3.0
+      destMask[output] = draw_buffer_enum_to_bitmask(ctx, buffers[output]);
+
+      /* From the OpenGL 3.0 specification, page 258:
+       * "Each buffer listed in bufs must be one of the values from tables
+       *  4.5 or 4.6.  Otherwise, an INVALID_ENUM error is generated.
+       */
+      if (destMask[output] == BAD_MASK) {
+         _mesa_error(ctx, GL_INVALID_ENUM, "%s(invalid buffer %s)",
+                     caller, _mesa_enum_to_string(buffers[output]));
+         return;
+      }
+
+      /* From the OpenGL 4.0 specification, page 256:
+       * "For both the default framebuffer and framebuffer objects, the
+       *  constants FRONT, BACK, LEFT, RIGHT, and FRONT_AND_BACK are not
+       *  valid in the bufs array passed to DrawBuffers, and will result in
+       *  the error INVALID_ENUM. This restriction is because these
+       *  constants may themselves refer to multiple buffers, as shown in
+       *  table 4.4."
+       *  Previous versions of the OpenGL specification say INVALID_OPERATION,
+       *  but the Khronos conformance tests expect INVALID_ENUM.
+       */
+      if (_mesa_bitcount(destMask[output]) > 1) {
+         _mesa_error(ctx, GL_INVALID_ENUM, "%s(invalid buffer %s)",
+                     caller, _mesa_enum_to_string(buffers[output]));
+         return;
+      }
+
+      /* Section 4.2 (Whole Framebuffer Operations) of the OpenGL ES 3.0
        * specification says:
        *
-       *     "Each buffer listed in bufs must be BACK, NONE, or one of the values
-       *      from table 4.3 (NONE, COLOR_ATTACHMENTi)"
+       *     "If the GL is bound to a draw framebuffer object, the ith buffer
+       *     listed in bufs must be COLOR_ATTACHMENTi or NONE . Specifying a
+       *     buffer out of order, BACK , or COLOR_ATTACHMENTm where m is greater
+       *     than or equal to the value of MAX_- COLOR_ATTACHMENTS , will
+       *     generate the error INVALID_OPERATION .
        */
-      if (_mesa_is_gles3(ctx) && buffers[output] != GL_NONE &&
-          buffers[output] != GL_BACK &&
+      if (_mesa_is_gles3(ctx) && _mesa_is_user_fbo(fb) &&
+          buffers[output] != GL_NONE &&
           (buffers[output] < GL_COLOR_ATTACHMENT0 ||
            buffers[output] >= GL_COLOR_ATTACHMENT0 + ctx->Const.MaxColorAttachments)) {
-         _mesa_error(ctx, GL_INVALID_ENUM, "glDrawBuffers(buffer)");
+         _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffers(buffer)");
          return;
       }
 
@@ -412,34 +443,6 @@ draw_buffers(struct gl_context *ctx, struct gl_framebuffer *fb,
             return;
          }
 
-         destMask[output] = draw_buffer_enum_to_bitmask(ctx, buffers[output]);
-
-         /* From the OpenGL 3.0 specification, page 258:
-          * "Each buffer listed in bufs must be one of the values from tables
-          *  4.5 or 4.6.  Otherwise, an INVALID_ENUM error is generated.
-          */
-         if (destMask[output] == BAD_MASK) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "%s(invalid buffer %s)",
-                        caller, _mesa_enum_to_string(buffers[output]));
-            return;
-         }
-
-         /* From the OpenGL 4.0 specification, page 256:
-          * "For both the default framebuffer and framebuffer objects, the
-          *  constants FRONT, BACK, LEFT, RIGHT, and FRONT_AND_BACK are not
-          *  valid in the bufs array passed to DrawBuffers, and will result in
-          *  the error INVALID_ENUM. This restriction is because these
-          *  constants may themselves refer to multiple buffers, as shown in
-          *  table 4.4."
-          *  Previous versions of the OpenGL specification say INVALID_OPERATION,
-          *  but the Khronos conformance tests expect INVALID_ENUM.
-          */
-         if (_mesa_bitcount(destMask[output]) > 1) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "%s(invalid buffer %s)",
-                        caller, _mesa_enum_to_string(buffers[output]));
-            return;
-         }
-
          /* From the OpenGL 3.0 specification, page 259:
           * "If the GL is bound to the default framebuffer and DrawBuffers is
           *  supplied with a constant (other than NONE) that does not indicate

commit 979e4b9c3f5b1272df807c0195a85d980c45ea29
Author: Tapani Pälli <tapani.palli@intel.com>
Date:   Thu Oct 20 14:11:16 2016 +0300

    egl: add check that eglCreateContext gets a valid config
    
    Fixes following dEQP test:
    
       dEQP-EGL.functional.negative_api.create_context
    
    v2: don't break EGL_KHR_no_config_context (Eric Engestrom)
    
    Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
    Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
    Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
    Cc: "12.0 13.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 5876f3c85a61d73bb4863331bd641152a40a7b0c)
    [Emil Velikov: drop EGL_NO_CONFIG_KHR, use MESA_configless_context]
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    
    Conflicts:
    	src/egl/main/eglapi.c

diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
index 4700dbe..55243ec 100644
--- a/src/egl/main/eglapi.c
+++ b/src/egl/main/eglapi.c
@@ -627,7 +627,9 @@ eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_list,
 
    _EGL_CHECK_DISPLAY(disp, EGL_NO_CONTEXT, drv);
 
-   if (!config && !disp->Extensions.MESA_configless_context)
+   if (config)
+      _EGL_CHECK_CONFIG(disp, conf, EGL_NO_CONTEXT, drv);
+   else if (!disp->Extensions.MESA_configless_context)
       RETURN_EGL_ERROR(disp, EGL_BAD_CONFIG, EGL_NO_CONTEXT);
 
    if (!share && share_list != EGL_NO_CONTEXT)

commit 71d0b5f7c77a66e29cd80a0c339378795e8b9d0e
Author: Emil Velikov <emil.velikov@collabora.com>
Date:   Mon Oct 31 18:38:50 2016 +0000

    cherry-ignore: add N/A EGL revert
    
    Signed-off-by: Emil Velikov <emil.velikov@collabora.com>

diff --git a/bin/.cherry-ignore b/bin/.cherry-ignore
index 29cc745..227b21d 100644
--- a/bin/.cherry-ignore
+++ b/bin/.cherry-ignore
@@ -16,3 +16,7 @@ a5993022275c20061ac025d9adc26c5f9d02afee st/va Avoid VBR bitrate calculation ove
 
 # Depends on update_renderbuffer_read_surfaces at least
 f2b9b0c730e345bcffa9eadabb25af3ab02642f2 i965: Add missing BRW_NEW_FS_PROG_DATA to render target reads.
+
+# The commit in question hasn't landed in branch
+1ef787339774bc7f1cc9c1615722f944005e070c Revert "egl/android: Set EGL_MAX_PBUFFER_WIDTH and EGL_MAX_PBUFFER_HEIGHT"
+

commit 8fbad647322860af4a96be903b7ae561af80013c
Author: Tapani Pälli <tapani.palli@intel.com>
Date:   Thu Oct 20 10:33:33 2016 +0300

    egl/dri2: set max values for pbuffer width and height
    
    While these max values were previously fixed for pbuffer creation, this
    change makes also eglGetConfigAttrib() return correct values.
    
    Fixes following dEQP tests:
    
       dEQP-EGL.functional.create_surface.pbuffer.rgb888_no_depth_no_stencil
       dEQP-EGL.functional.create_surface.pbuffer.rgb888_depth_stencil
       dEQP-EGL.functional.create_surface.pbuffer.rgba8888_no_depth_no_stencil
       dEQP-EGL.functional.create_surface.pbuffer.rgba8888_depth_stencil
    
    Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98326
    Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
    Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
    Cc: "12.0 13.0" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit b91e1e38e87b372d409469dfe00ace76c8febd34)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 7ab639c..7454312 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -242,6 +242,15 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
             return NULL;
          break;
 
+      case __DRI_ATTRIB_MAX_PBUFFER_WIDTH:
+         _eglSetConfigKey(&base, EGL_MAX_PBUFFER_WIDTH,
+                          _EGL_MAX_PBUFFER_WIDTH);
+         break;
+      case __DRI_ATTRIB_MAX_PBUFFER_HEIGHT:
+         _eglSetConfigKey(&base, EGL_MAX_PBUFFER_HEIGHT,
+                          _EGL_MAX_PBUFFER_HEIGHT);
+         break;
+
       default:
 	 key = dri2_to_egl_attribute_map[attrib];
 	 if (key != 0)

commit a106d8c8726f05bd25427a8a6877ccf1d9645add
Author: Axel Davy <axel.davy@ens.fr>
Date:   Sat Oct 22 12:00:40 2016 +0200

    st/nine: Fix locking CubeTexture surfaces.
    
    Only one face of Cubetextures was locked when in DEFAULT Pool.
    Fixes:
    https://github.com/iXit/Mesa-3D/issues/129
    
    CC: "12.0 13.0" <mesa-stable@lists.freedesktop.org>
    
    Signed-off-by: Axel Davy <axel.davy@ens.fr>
    (cherry picked from commit eed605a473554575305e1bf10c3641761a85feb9)

diff --git a/src/gallium/state_trackers/nine/surface9.c b/src/gallium/state_trackers/nine/surface9.c
index 2606dbf..aff4d4c 100644
--- a/src/gallium/state_trackers/nine/surface9.c
+++ b/src/gallium/state_trackers/nine/surface9.c
@@ -405,6 +405,7 @@ NineSurface9_LockRect( struct NineSurface9 *This,
     } else {
         u_box_origin_2d(This->desc.Width, This->desc.Height, &box);
     }
+    box.z = This->layer;
 
     user_warn(This->desc.Format == D3DFMT_NULL);
 

commit 5abbe8467124bb45dcc0918b645111f77321e0d2
Author: Axel Davy <axel.davy@ens.fr>
Date:   Sat Oct 22 11:59:11 2016 +0200

    st/nine: Fix mistake in Volume9 UnlockBox
    
    In the format fallback path,
    the height was used instead of the depth.
    
    CC: "12.0 13.0" <mesa-stable@lists.freedesktop.org>
    
    Signed-off-by: Axel Davy <axel.davy@ens.fr>
    (cherry picked from commit fe7bb46134162c9a9a18832f1746991aa78121e8)

diff --git a/src/gallium/state_trackers/nine/volume9.c b/src/gallium/state_trackers/nine/volume9.c
index 1fdc638..faeeec1 100644
--- a/src/gallium/state_trackers/nine/volume9.c
+++ b/src/gallium/state_trackers/nine/volume9.c
@@ -374,7 +374,7 @@ NineVolume9_UnlockBox( struct NineVolume9 *This )
                                         This->layer_stride_conversion,
                                         0, 0, 0,
                                         This->desc.Width, This->desc.Height,
-                                        This->desc.Height);
+                                        This->desc.Depth);
 
         if (!This->data)
             pipe_transfer_unmap(This->pipe, transfer);

commit 7133f0054d5cb39a1e3b40d2ca13ad5f8e662902
Author: Jonathan Gray <jsg@jsg.id.au>
Date:   Sat Oct 22 18:19:53 2016 +1100

    mapi: automake: set VISIBILITY_CFLAGS for shared glapi
    
    shared glapi was previously built without setting CFLAGS for
    AM_CFLAGS and VISIBILITY_CFLAGS.
    
    This resulted in symbols being exported that shouldn't be.
    
    The x86 and sparc assembly versions of the dispatch table partially
    mitigated this by using .hidden.  Otherwise shared_dispatch_stub_*
    were being exported.
    


Reply to: