VERSION                                           |    2 
 bin/.cherry-ignore                                |   16 
 configure.ac                                      |   21 
 docs/egl.html                                     |   21 
 docs/relnotes/17.2.0.html                         |    3 
 docs/relnotes/17.2.1.html                         |  199 +++++++++
 scons/gallium.py                                  |   16 
 src/amd/common/ac_nir_to_llvm.c                   |   82 +++
 src/amd/common/ac_surface.c                       |   53 ++
 src/amd/vulkan/radv_cmd_buffer.c                  |   39 +
 src/amd/vulkan/radv_device.c                      |    6 
 src/amd/vulkan/radv_image.c                       |   54 +-
 src/amd/vulkan/radv_meta_blit.c                   |   19 
 src/amd/vulkan/radv_meta_blit2d.c                 |  206 ++++-----
 src/amd/vulkan/radv_meta_clear.c                  |   15 
 src/amd/vulkan/radv_pipeline_cache.c              |    3 
 src/amd/vulkan/radv_radeon_winsys.h               |    3 
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c     |   35 +
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c |    5 
 src/compiler/glsl/shader_cache.cpp                |  174 ++++++-
 src/compiler/shader_info.h                        |    6 
 src/compiler/spirv/vtn_variables.c                |    5 
 src/egl/drivers/dri2/egl_dri2.c                   |    9 
 src/egl/drivers/dri2/platform_x11.c               |    1 
 src/gallium/auxiliary/gallivm/lp_bld_format_soa.c |    8 
 src/gallium/auxiliary/gallivm/lp_bld_gather.c     |   30 +
 src/gallium/drivers/freedreno/freedreno_draw.c    |    8 
 src/gallium/drivers/llvmpipe/lp_context.c         |    6 
 src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c  |    1 
 src/gallium/drivers/radeon/r600_pipe_common.h     |    1 
 src/gallium/drivers/radeonsi/si_compute.c         |    5 
 src/gallium/drivers/radeonsi/si_pipe.h            |    3 
 src/gallium/drivers/radeonsi/si_shader.c          |   70 +++
 src/gallium/drivers/radeonsi/si_shader.h          |    5 
 src/gallium/drivers/radeonsi/si_state.c           |    8 
 src/gallium/drivers/radeonsi/si_state_draw.c      |    3 
 src/gallium/drivers/radeonsi/si_state_shaders.c   |    6 
 src/intel/vulkan/anv_formats.c                    |   19 
 src/mesa/drivers/dri/i965/brw_bufmgr.c            |    6 
 src/mesa/drivers/dri/i965/brw_defines.h           |    7 
 src/mesa/drivers/dri/i965/brw_state_upload.c      |    9 
 src/mesa/state_tracker/st_cb_readpixels.c         |    2 
 src/mesa/state_tracker/st_draw.c                  |    7 
 src/mesa/state_tracker/st_glsl_to_nir.cpp.orig    |  479 ----------------------
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp        |    2 
 src/mesa/vbo/vbo_minmax_index.c                   |    8 
 src/util/strtod.c                                 |   12 
 47 files changed, 937 insertions(+), 761 deletions(-)

New commits:
commit d6d2b6b5ec9b1638c0827582872670c7da79bb53
Author: Emil Velikov <emil.veli...@collabora.com>
Date:   Sun Sep 17 23:57:32 2017 +0100

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

diff --git a/docs/relnotes/17.2.1.html b/docs/relnotes/17.2.1.html
new file mode 100644
index 0000000..b33315c
--- /dev/null
+++ b/docs/relnotes/17.2.1.html
@@ -0,0 +1,199 @@
+<!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 17.2.1 Release Notes / September 17, 2017</h1>
+
+<p>
+Mesa 17.2.1 is a bug fix release which fixes bugs found since the 17.2.0 
release.
+</p>
+<p>
+Mesa 17.2.1 implements the OpenGL 4.5 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.5.  OpenGL
+4.5 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>
+
+<ul>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=100613";>Bug 
100613</a> - Regression in Mesa 17 on s390x (zSystems)</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101709";>Bug 
101709</a> - [llvmpipe] piglit gl-1.0-scissor-offscreen regression</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102454";>Bug 
102454</a> - glibc 2.26 doesn't provide anymore xlocale.h</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102467";>Bug 
102467</a> - src/mesa/state_tracker/st_cb_readpixels.c:178]: (warning) 
Redundant assignment</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102502";>Bug 
102502</a> - [bisected] Kodi crashes since commit 707d2e8b - gallium: fold 
u_trim_pipe_prim call from st/mesa to drivers</li>
+
+</ul>
+
+
+<h2>Changes</h2>
+
+<p>Bas Nieuwenhuizen (4):</p>
+<ul>
+  <li>radv: Actually set the cmd_buffer usage_flags.</li>
+  <li>radv: Fix vkCopyImage with both depth and stencil aspects.</li>
+  <li>radv: Disable multilayer &amp; multilevel DCC.</li>
+  <li>radv: Don't allocate CMASK for linear images.</li>
+</ul>
+
+<p>Ben Crocker (1):</p>
+<ul>
+  <li>llvmpipe: lp_build_gather_elem_vec BE fix for 3x16 load</li>
+</ul>
+
+<p>Brian Paul (1):</p>
+<ul>
+  <li>llvmpipe: initialize llvmpipe-&gt;dirty with LP_NEW_SCISSOR</li>
+</ul>
+
+<p>Charmaine Lee (1):</p>
+<ul>
+  <li>vbo: fix offset in minmax cache key</li>
+</ul>
+
+<p>Dave Airlie (12):</p>
+<ul>
+  <li>radv: disable 1d/2d linear optimisation on gfx9.</li>
+  <li>radv/gfx9: set descriptor up for base_mip to level range.</li>
+  <li>Revert "radv: disable support for VEGA for now."</li>
+  <li>radv/winsys: use amdgpu_bo_va_op_raw.</li>
+  <li>radv/gfx9: allocate events from uncached VA space</li>
+  <li>radv: use simpler indirect packet 3 if possible.</li>
+  <li>radv: don't use iview for meta image width/height.</li>
+  <li>radv: handle GFX9 1D textures</li>
+  <li>radv/gfx9: set mip0-depth correctly for 2d arrays/3d images</li>
+  <li>radv/ac: bump params array for image atomic comp swap</li>
+  <li>radv/gfx9: fix image resource handling.</li>
+  <li>radv/winsys: fix flags vs va_flags thinko.</li>
+</ul>
+
+<p>Emil Velikov (7):</p>
+<ul>
+  <li>docs: add sha256 checksums for 17.2.0</li>
+  <li>cherry-ignore: add getCapability patches</li>
+  <li>cherry-ignore: ignore gfx9 tile swizzle fix</li>
+  <li>cherry-ignore: add execution_type() fix to the list</li>
+  <li>cherry-ignore: add EGL+gbm swast patches</li>
+  <li>egl/x11/dri3: adding missing __DRI_BACKGROUND_CALLABLE extension</li>
+  <li>Update version to 17.2.1</li>
+</ul>
+
+<p>Eric Engestrom (3):</p>
+<ul>
+  <li>util: improve compiler guard</li>
+  <li>mesa/st: remove unwanted backup file</li>
+  <li>docs/egl: remove reference to EGL_DRIVERS_PATH</li>
+</ul>
+
+<p>Grazvydas Ignotas (1):</p>
+<ul>
+  <li>radv: don't assert on empty hash table</li>
+</ul>
+
+<p>Jason Ekstrand (2):</p>
+<ul>
+  <li>anv/formats: Nicely handle unknown VkFormat enums</li>
+  <li>spirv: Add support for the HelperInvocation builtin</li>
+</ul>
+
+<p>Karol Herbst (1):</p>
+<ul>
+  <li>nvc0: write 0 to pipeline_statistics.cs_invocations</li>
+</ul>
+
+<p>Kenneth Graunke (2):</p>
+<ul>
+  <li>i965: Fix crash in fallback GTT mapping.</li>
+  <li>i965: Set "Subslice Hashing Mode" to 16x16 on Apollolake.</li>
+</ul>
+
+<p>Marek Olšák (1):</p>
+<ul>
+  <li>st/mesa: skip draw calls with pipe_draw_info::count == 0</li>
+</ul>
+
+<p>Michael Olbrich (1):</p>
+<ul>
+  <li>egl/dri2: only destroy created objects</li>
+</ul>
+
+<p>Nicolai Hähnle (1):</p>
+<ul>
+  <li>radeonsi: apply a mask to gl_SampleMaskIn in the PS prolog</li>
+</ul>
+
+<p>Nicolai Hähnle (4):</p>
+<ul>
+  <li>radeonsi/gfx9: always flush DB metadata on framebuffer changes</li>
+  <li>st/glsl_to_tgsi: only the first (inner-most) array reference can be a 2D 
index</li>
+  <li>ac/surface: match Z and stencil tile config</li>
+  <li>glsl: fix glsl_struct_field size calculations for shader cache</li>
+</ul>
+
+<p>Ray Strode (1):</p>
+<ul>
+  <li>gallivm: correct channel shift logic on big endian</li>
+</ul>
+
+<p>Rob Clark (1):</p>
+<ul>
+  <li>freedreno: skip batch-cache for compute shaders</li>
+</ul>
+
+<p>Roland Scheidegger (1):</p>
+<ul>
+  <li>st/mesa: fix view template initialization in try_pbo_readpixels</li>
+</ul>
+
+<p>Samuel Pitoiset (1):</p>
+<ul>
+  <li>radeonsi: update dirty_level_mask before dispatching</li>
+</ul>
+
+<p>Timothy Arceri (9):</p>
+<ul>
+  <li>glsl: allow NULL to be passed to encode_type_to_blob()</li>
+  <li>glsl: stop adding pointers from gl_shader_variable to the cache</li>
+  <li>glsl: stop adding pointers from glsl_struct_field to the cache</li>
+  <li>glsl: add has_uniform_storage() helper to shader cache</li>
+  <li>glsl: don't write uniform storage offset if there isn't one</li>
+  <li>glsl: always write a name/label string to the cache</li>
+  <li>compiler: move pointers to the start of shader_info</li>
+  <li>glsl: stop adding pointers from shader_info to the cache</li>
+  <li>glsl: stop adding pointers from bindless structs to the cache</li>
+</ul>
+
+
+</div>
+</body>
+</html>

commit cb778d563fbfa2e244a56a441be07b85e2ade7e6
Author: Emil Velikov <emil.veli...@collabora.com>
Date:   Sun Sep 17 23:53:08 2017 +0100

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

diff --git a/VERSION b/VERSION
index 290a3f3..7c95a07 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-17.2.0
+17.2.1

commit 7c3bd519e70c4497079437330430a8c486991158
Author: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
Date:   Mon Aug 28 00:18:44 2017 +0200

    radv: Don't allocate CMASK for linear images.
    
    We can't use it anyway in fast clears, and on GFX9 it seems to
    actually hange the card if we specify it.
    
    Fixes: f4e499ec791 "radv: add initial non-conformant radv vulkan driver"
    (cherry picked from commit 1a172fb113554fa03053052b161d5e22fc2fcb1f)

diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
index cd7ed55..6cc4540 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -838,8 +838,10 @@ radv_image_create(VkDevice _device,
 
        if ((pCreateInfo->usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) &&
            pCreateInfo->mipLevels == 1 &&
-           !image->surface.dcc_size && image->info.depth == 1 && can_cmask_dcc)
+           !image->surface.dcc_size && image->info.depth == 1 && can_cmask_dcc 
&&
+           !image->surface.is_linear)
                radv_image_alloc_cmask(device, image);
+
        if (image->info.samples > 1 && vk_format_is_color(pCreateInfo->format)) 
{
                radv_image_alloc_fmask(device, image);
        } else if (vk_format_is_depth(pCreateInfo->format)) {

commit c6b3732967bc886430a6c00c353b0bba90dd117b
Author: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
Date:   Wed Aug 30 00:58:03 2017 +0200

    radv: Disable multilayer & multilevel DCC.
    
    The current DCC init routine doesn't account for initializing a
    single layer or level. Multilayer seems hard for small textures on
    pre-GFX9 as tre metadata for the layers can be interleaved. For
    GFX9 multilevel textures are a problem for similar reasons.
    
    So just disable this for now, until we handle the texture modes
    correctly.
    
    Fixes: f4e499ec791 "radv: add initial non-conformant radv vulkan driver"
    (cherry picked from commit bee83b26611c0a4a554aa37c59187351242e82fd)

diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
index f113c96..cd7ed55 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -120,6 +120,7 @@ radv_init_surface(struct radv_device *device,
                                   VK_IMAGE_USAGE_STORAGE_BIT)) ||
            (pCreateInfo->flags & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT) ||
             (pCreateInfo->tiling == VK_IMAGE_TILING_LINEAR) ||
+            pCreateInfo->mipLevels > 1 || pCreateInfo->arrayLayers > 1 ||
             device->physical_device->rad_info.chip_class < VI ||
             create_info->scanout || (device->debug_flags & RADV_DEBUG_NO_DCC) 
||
             !radv_is_colorbuffer_format_supported(pCreateInfo->format, 
&blendable))

commit e012ade1cfa6df420d60502b1acee557b3df7617
Author: Eric Engestrom <eric.engest...@imgtec.com>
Date:   Tue Sep 12 15:35:54 2017 +0100

    docs/egl: remove reference to EGL_DRIVERS_PATH
    
    Support for external egl drivers was dropped a few years ago.
    
    Fixes: 209360bbb91bb10346eb "egl/main: drop support for external egl 
drivers"
    Signed-off-by: Eric Engestrom <eric.engest...@imgtec.com>
    Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
    (cherry picked from commit 85b66d20969685c26d3f7d22b6fc7b988872fa88)

diff --git a/docs/egl.html b/docs/egl.html
index f072ce1..e752a70 100644
--- a/docs/egl.html
+++ b/docs/egl.html
@@ -130,27 +130,6 @@ mesa/demos repository.</p>
 runtime</p>
 
 <dl>
-<dt><code>EGL_DRIVERS_PATH</code></dt>
-<dd>
-
-<p>By default, the main library will look for drivers in the directory where
-the drivers are installed to.  This variable specifies a list of
-colon-separated directories where the main library will look for drivers, in
-addition to the default directory.  This variable is ignored for setuid/setgid
-binaries.</p>
-
-<p>This variable is usually set to test an uninstalled build.  For example, one
-may set</p>
-
-<pre>
-  $ export LD_LIBRARY_PATH=$mesa/lib
-  $ export EGL_DRIVERS_PATH=$mesa/lib/egl
-</pre>
-
-<p>to test a build without installation</p>
-
-</dd>
-
 <dt><code>EGL_DRIVER</code></dt>
 <dd>
 

commit 41e691d60518791d6676f526858b37a9f31c08d8
Author: Dave Airlie <airl...@redhat.com>
Date:   Fri Sep 8 12:30:23 2017 +1000

    radv/winsys: fix flags vs va_flags thinko.
    
    Fixes: e8d57802f (radv/gfx9: allocate events from uncached VA space)
    Signed-off-by: Dave Airlie <airl...@redhat.com>
    (cherry picked from commit a5add6fb30e24c4e0177a98758888682d7e6ea36)

diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c 
b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
index 325f875..1c56c55 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
@@ -344,7 +344,7 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys *_ws,
        uint32_t va_flags = 0;
        if (flags & RADEON_FLAG_VA_UNCACHED)
                va_flags |= AMDGPU_VM_MTYPE_UC;
-       r = radv_amdgpu_bo_va_op(ws->dev, buf_handle, 0, size, va, flags, 
AMDGPU_VA_OP_MAP);
+       r = radv_amdgpu_bo_va_op(ws->dev, buf_handle, 0, size, va, va_flags, 
AMDGPU_VA_OP_MAP);
        if (r)
                goto error_va_map;
 

commit b6ae4400fc520736b0810f723ff4b5efba9ad004
Author: Emil Velikov <emil.veli...@collabora.com>
Date:   Thu Aug 3 19:29:27 2017 +0100

    egl/x11/dri3: adding missing __DRI_BACKGROUND_CALLABLE extension
    
    Fixes: 3b7b6adf3ac ("egl: Implement __DRI_BACKGROUND_CALLABLE")
    Cc: Timothy Arceri <tarc...@itsqueeze.com>
    Signed-off-by: Emil Velikov <emil.veli...@collabora.com>
    Reviewed-by: Marek Olšák <marek.ol...@amd.com>
    (cherry picked from commit f24bc1816242895d0bc0711a50bd2dfd3cb8b21a)

diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index d6199c8..2db8153 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -1319,6 +1319,7 @@ static const __DRIextension 
*dri3_image_loader_extensions[] = {
    &dri3_image_loader_extension.base,
    &image_lookup_extension.base,
    &use_invalidate.base,
+   &background_callable_extension.base,
    NULL,
 };
 

commit c47914276eab768fe40021b4459630a372f3becb
Author: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
Date:   Wed Sep 6 00:28:22 2017 +0200

    radv: Fix vkCopyImage with both depth and stencil aspects.
    
    Fixes: f4e499ec791 "radv: add initial non-conformant radv vulkan driver"
    Reviewed-by: Dave Airlie <airl...@redhat.com>
    (cherry picked from commit ff23e03d60d264a64fce340c132404c6070050a0)

diff --git a/src/amd/vulkan/radv_meta_blit2d.c 
b/src/amd/vulkan/radv_meta_blit2d.c
index 79e76be..724a88f 100644
--- a/src/amd/vulkan/radv_meta_blit2d.c
+++ b/src/amd/vulkan/radv_meta_blit2d.c
@@ -53,7 +53,8 @@ enum blit2d_src_type {
 static void
 create_iview(struct radv_cmd_buffer *cmd_buffer,
              struct radv_meta_blit2d_surf *surf,
-             struct radv_image_view *iview, VkFormat depth_format)
+             struct radv_image_view *iview, VkFormat depth_format,
+              VkImageAspectFlagBits aspects)
 {
        VkFormat format;
 
@@ -69,7 +70,7 @@ create_iview(struct radv_cmd_buffer *cmd_buffer,
                                             .viewType = VK_IMAGE_VIEW_TYPE_2D,
                                             .format = format,
                                             .subresourceRange = {
-                                            .aspectMask = surf->aspect_mask,
+                                            .aspectMask = aspects,
                                             .baseMipLevel = surf->level,
                                             .levelCount = 1,
                                             .baseArrayLayer = surf->layer,
@@ -111,7 +112,8 @@ blit2d_bind_src(struct radv_cmd_buffer *cmd_buffer,
                 struct radv_meta_blit2d_surf *src_img,
                 struct radv_meta_blit2d_buffer *src_buf,
                 struct blit2d_src_temps *tmp,
-                enum blit2d_src_type src_type, VkFormat depth_format)
+                enum blit2d_src_type src_type, VkFormat depth_format,
+                VkImageAspectFlagBits aspects)
 {
        struct radv_device *device = cmd_buffer->device;
 
@@ -138,7 +140,7 @@ blit2d_bind_src(struct radv_cmd_buffer *cmd_buffer,
                                      VK_SHADER_STAGE_FRAGMENT_BIT, 16, 4,
                                      &src_buf->pitch);
        } else {
-               create_iview(cmd_buffer, src_img, &tmp->iview, depth_format);
+               create_iview(cmd_buffer, src_img, &tmp->iview, depth_format, 
aspects);
 
                radv_meta_push_descriptor_set(cmd_buffer, 
VK_PIPELINE_BIND_POINT_GRAPHICS,
                                              
device->meta_state.blit2d.p_layouts[src_type],
@@ -175,9 +177,10 @@ blit2d_bind_dst(struct radv_cmd_buffer *cmd_buffer,
                 uint32_t width,
                 uint32_t height,
                VkFormat depth_format,
-                struct blit2d_dst_temps *tmp)
+                struct blit2d_dst_temps *tmp,
+                VkImageAspectFlagBits aspects)
 {
-       create_iview(cmd_buffer, dst, &tmp->iview, depth_format);
+       create_iview(cmd_buffer, dst, &tmp->iview, depth_format, aspects);
 
        radv_CreateFramebuffer(radv_device_to_handle(cmd_buffer->device),
                               &(VkFramebufferCreateInfo) {
@@ -250,106 +253,111 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer 
*cmd_buffer,
        struct radv_device *device = cmd_buffer->device;
 
        for (unsigned r = 0; r < num_rects; ++r) {
-               VkFormat depth_format = 0;
-               if (dst->aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT)
-                       depth_format = 
vk_format_stencil_only(dst->image->vk_format);
-               else if (dst->aspect_mask == VK_IMAGE_ASPECT_DEPTH_BIT)
-                       depth_format = 
vk_format_depth_only(dst->image->vk_format);
-               struct blit2d_src_temps src_temps;
-               blit2d_bind_src(cmd_buffer, src_img, src_buf, &src_temps, 
src_type, depth_format);
-
-               struct blit2d_dst_temps dst_temps;
-               blit2d_bind_dst(cmd_buffer, dst, rects[r].dst_x + 
rects[r].width,
-                               rects[r].dst_y + rects[r].height, depth_format, 
&dst_temps);
-
-               float vertex_push_constants[4] = {
-                       rects[r].src_x,
-                       rects[r].src_y,
-                       rects[r].src_x + rects[r].width,
-                       rects[r].src_y + rects[r].height,
-               };
+               unsigned i;
+               for_each_bit(i, dst->aspect_mask) {
+                       unsigned aspect_mask = 1u << i;
+                       VkFormat depth_format = 0;
+                       if (aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT)
+                               depth_format = 
vk_format_stencil_only(dst->image->vk_format);
+                       else if (aspect_mask == VK_IMAGE_ASPECT_DEPTH_BIT)
+                               depth_format = 
vk_format_depth_only(dst->image->vk_format);
+                       struct blit2d_src_temps src_temps;
+                       blit2d_bind_src(cmd_buffer, src_img, src_buf, 
&src_temps, src_type, depth_format, aspect_mask);
+
+                       struct blit2d_dst_temps dst_temps;
+                       blit2d_bind_dst(cmd_buffer, dst, rects[r].dst_x + 
rects[r].width,
+                                       rects[r].dst_y + rects[r].height, 
depth_format, &dst_temps, aspect_mask);
+
+                       float vertex_push_constants[4] = {
+                               rects[r].src_x,
+                               rects[r].src_y,
+                               rects[r].src_x + rects[r].width,
+                               rects[r].src_y + rects[r].height,
+                       };
+
+                       
radv_CmdPushConstants(radv_cmd_buffer_to_handle(cmd_buffer),
+                                       
device->meta_state.blit2d.p_layouts[src_type],
+                                       VK_SHADER_STAGE_VERTEX_BIT, 0, 16,
+                                       vertex_push_constants);
+
+                       if (aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT) {
+                               unsigned fs_key = 
radv_format_meta_fs_key(dst_temps.iview.vk_format);
+
+                               
radv_CmdBeginRenderPass(radv_cmd_buffer_to_handle(cmd_buffer),
+                                                       
&(VkRenderPassBeginInfo) {
+                                                               .sType = 
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
+                                                                       
.renderPass = device->meta_state.blit2d.render_passes[fs_key],
+                                                                       
.framebuffer = dst_temps.fb,
+                                                                       
.renderArea = {
+                                                                       .offset 
= { rects[r].dst_x, rects[r].dst_y, },
+                                                                       .extent 
= { rects[r].width, rects[r].height },
+                                                               },
+                                                                       
.clearValueCount = 0,
+                                                                               
.pClearValues = NULL,
+                                                                               
}, VK_SUBPASS_CONTENTS_INLINE);
+
+
+                               bind_pipeline(cmd_buffer, src_type, fs_key);
+                       } else if (aspect_mask == VK_IMAGE_ASPECT_DEPTH_BIT) {
+                               
radv_CmdBeginRenderPass(radv_cmd_buffer_to_handle(cmd_buffer),
+                                                       
&(VkRenderPassBeginInfo) {
+                                                               .sType = 
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
+                                                                       
.renderPass = device->meta_state.blit2d.depth_only_rp,
+                                                                       
.framebuffer = dst_temps.fb,
+                                                                       
.renderArea = {
+                                                                       .offset 
= { rects[r].dst_x, rects[r].dst_y, },
+                                                                       .extent 
= { rects[r].width, rects[r].height },
+                                                               },
+                                                                       
.clearValueCount = 0,
+                                                                               
.pClearValues = NULL,
+                                                                               
}, VK_SUBPASS_CONTENTS_INLINE);
+
+
+                               bind_depth_pipeline(cmd_buffer, src_type);
+
+                       } else if (aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT) {
+                               
radv_CmdBeginRenderPass(radv_cmd_buffer_to_handle(cmd_buffer),
+                                                       
&(VkRenderPassBeginInfo) {
+                                                               .sType = 
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
+                                                                       
.renderPass = device->meta_state.blit2d.stencil_only_rp,
+                                                                       
.framebuffer = dst_temps.fb,
+                                                                       
.renderArea = {
+                                                                       .offset 
= { rects[r].dst_x, rects[r].dst_y, },
+                                                                       .extent 
= { rects[r].width, rects[r].height },
+                                                               },
+                                                                       
.clearValueCount = 0,
+                                                                               
.pClearValues = NULL,
+                                                                               
}, VK_SUBPASS_CONTENTS_INLINE);
 
-               radv_CmdPushConstants(radv_cmd_buffer_to_handle(cmd_buffer),
-                                     
device->meta_state.blit2d.p_layouts[src_type],
-                                     VK_SHADER_STAGE_VERTEX_BIT, 0, 16,
-                                     vertex_push_constants);
-
-               if (dst->aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT) {
-                       unsigned fs_key = 
radv_format_meta_fs_key(dst_temps.iview.vk_format);
-
-                       
radv_CmdBeginRenderPass(radv_cmd_buffer_to_handle(cmd_buffer),
-                                                     &(VkRenderPassBeginInfo) {
-                                                             .sType = 
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
-                                                                     
.renderPass = device->meta_state.blit2d.render_passes[fs_key],
-                                                                     
.framebuffer = dst_temps.fb,
-                                                                     
.renderArea = {
-                                                                     .offset = 
{ rects[r].dst_x, rects[r].dst_y, },
-                                                                     .extent = 
{ rects[r].width, rects[r].height },
-                                                             },
-                                                                     
.clearValueCount = 0,
-                                                                              
.pClearValues = NULL,
-                                                                              
}, VK_SUBPASS_CONTENTS_INLINE);
-
-
-                       bind_pipeline(cmd_buffer, src_type, fs_key);
-               } else if (dst->aspect_mask == VK_IMAGE_ASPECT_DEPTH_BIT) {
-                       
radv_CmdBeginRenderPass(radv_cmd_buffer_to_handle(cmd_buffer),
-                                                     &(VkRenderPassBeginInfo) {
-                                                             .sType = 
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
-                                                                     
.renderPass = device->meta_state.blit2d.depth_only_rp,
-                                                                     
.framebuffer = dst_temps.fb,
-                                                                     
.renderArea = {
-                                                                     .offset = 
{ rects[r].dst_x, rects[r].dst_y, },
-                                                                     .extent = 
{ rects[r].width, rects[r].height },
-                                                             },
-                                                                     
.clearValueCount = 0,
-                                                                              
.pClearValues = NULL,
-                                                                              
}, VK_SUBPASS_CONTENTS_INLINE);
-
-
-                       bind_depth_pipeline(cmd_buffer, src_type);
-
-               } else if (dst->aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT) {
-                       
radv_CmdBeginRenderPass(radv_cmd_buffer_to_handle(cmd_buffer),
-                                                     &(VkRenderPassBeginInfo) {
-                                                             .sType = 
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
-                                                                     
.renderPass = device->meta_state.blit2d.stencil_only_rp,
-                                                                     
.framebuffer = dst_temps.fb,
-                                                                     
.renderArea = {
-                                                                     .offset = 
{ rects[r].dst_x, rects[r].dst_y, },
-                                                                     .extent = 
{ rects[r].width, rects[r].height },
-                                                             },
-                                                                     
.clearValueCount = 0,
-                                                                              
.pClearValues = NULL,
-                                                                              
}, VK_SUBPASS_CONTENTS_INLINE);
-
-
-                       bind_stencil_pipeline(cmd_buffer, src_type);
-               }
 
-               radv_CmdSetViewport(radv_cmd_buffer_to_handle(cmd_buffer), 0, 
1, &(VkViewport) {
-                       .x = rects[r].dst_x,
-                       .y = rects[r].dst_y,
-                       .width = rects[r].width,
-                       .height = rects[r].height,
-                       .minDepth = 0.0f,
-                       .maxDepth = 1.0f
-               });
+                               bind_stencil_pipeline(cmd_buffer, src_type);
+                       } else
+                               unreachable("Processing blit2d with multiple 
aspects.");
 
-               radv_CmdSetScissor(radv_cmd_buffer_to_handle(cmd_buffer), 0, 1, 
&(VkRect2D) {
-                       .offset = (VkOffset2D) { rects[r].dst_x, rects[r].dst_y 
},
-                       .extent = (VkExtent2D) { rects[r].width, 
rects[r].height },
-               });
+                       
radv_CmdSetViewport(radv_cmd_buffer_to_handle(cmd_buffer), 0, 1, &(VkViewport) {
+                               .x = rects[r].dst_x,
+                               .y = rects[r].dst_y,
+                               .width = rects[r].width,
+                               .height = rects[r].height,
+                               .minDepth = 0.0f,
+                               .maxDepth = 1.0f
+                       });
 
+                       
radv_CmdSetScissor(radv_cmd_buffer_to_handle(cmd_buffer), 0, 1, &(VkRect2D) {
+                               .offset = (VkOffset2D) { rects[r].dst_x, 
rects[r].dst_y },
+                               .extent = (VkExtent2D) { rects[r].width, 
rects[r].height },
+                       });
 
 
-               radv_CmdDraw(radv_cmd_buffer_to_handle(cmd_buffer), 3, 1, 0, 0);
-               radv_CmdEndRenderPass(radv_cmd_buffer_to_handle(cmd_buffer));
 
-               /* At the point where we emit the draw call, all data from the
-                * descriptor sets, etc. has been used.  We are free to delete 
it.
-                */
-               blit2d_unbind_dst(cmd_buffer, &dst_temps);
+                       radv_CmdDraw(radv_cmd_buffer_to_handle(cmd_buffer), 3, 
1, 0, 0);
+                       
radv_CmdEndRenderPass(radv_cmd_buffer_to_handle(cmd_buffer));
+
+                       /* At the point where we emit the draw call, all data 
from the
+                       * descriptor sets, etc. has been used.  We are free to 
delete it.
+                       */
+                       blit2d_unbind_dst(cmd_buffer, &dst_temps);
+               }
        }
 }
 

commit 536f852d42184217e80b879a50b5450827eeed34
Author: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
Date:   Sun Sep 3 23:35:37 2017 +0200

    radv: Actually set the cmd_buffer usage_flags.
    
    Otherwise, the simultaneous uage bit doesn't get set from the begin
    info, which we need for batchchaining.
    
    Fixes: f4e499ec791 "radv: add initial non-conformant radv vulkan driver"
    Reviewed-by: Dave Airlie <airl...@redhat.com>
    (cherry picked from commit dec7b38fe62a1db46c5150a7368d3bb3c5e45305)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 645b48f..9ca58fd 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -1984,6 +1984,7 @@ VkResult radv_BeginCommandBuffer(
 
        memset(&cmd_buffer->state, 0, sizeof(cmd_buffer->state));
        cmd_buffer->state.last_primitive_reset_en = -1;
+       cmd_buffer->usage_flags = pBeginInfo->flags;
 
        /* setup initial configuration into command buffer */
        if (cmd_buffer->level == VK_COMMAND_BUFFER_LEVEL_PRIMARY) {

commit fdc4f6e6849e40d891347483c00acdd64c9e0f84
Author: Grazvydas Ignotas <nota...@gmail.com>
Date:   Mon Aug 28 00:29:36 2017 +0300

    radv: don't assert on empty hash table
    
    Currently if table_size is 0, it's falling through to:
    
    unreachable("hash table should never be full");
    
    But table_size can be 0 when RADV_DEBUG=nocache is set, or when the
    table allocation fails (which is not considered an error).
    
    Fixes: f4e499ec791 "radv: add initial non-conformant radv vulkan driver"
    Signed-off-by: Grazvydas Ignotas <nota...@gmail.com>
    Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
    (cherry picked from commit b8dd69e1b49a5c4c5c82e34f804a97f7448ff6c3)

diff --git a/src/amd/vulkan/radv_pipeline_cache.c 
b/src/amd/vulkan/radv_pipeline_cache.c
index e57c99b..9a82426 100644
--- a/src/amd/vulkan/radv_pipeline_cache.c
+++ b/src/amd/vulkan/radv_pipeline_cache.c
@@ -118,6 +118,9 @@ radv_pipeline_cache_search_unlocked(struct 
radv_pipeline_cache *cache,
        const uint32_t mask = cache->table_size - 1;
        const uint32_t start = (*(uint32_t *) sha1);
 
+       if (cache->table_size == 0)
+               return NULL;
+
        for (uint32_t i = 0; i < cache->table_size; i++) {
                const uint32_t index = (start + i) & mask;
                struct cache_entry *entry = cache->hash_table[index];

commit 8cf9e5ab56f67ffc5698923a2e163ee3618afff0
Author: Eric Engestrom <e...@engestrom.ch>
Date:   Wed Aug 30 14:10:06 2017 +0100

    mesa/st: remove unwanted backup file
    
    Fixes: 0ac78dc92582a59d4319 "util: move string_to_uint_map to glsl"
    Cc: Emil Velikov <emil.veli...@collabora.com>
    Signed-off-by: Eric Engestrom <e...@engestrom.ch>
    Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
    (cherry picked from commit ac0d8dc3fa3b294104d0c8ba54262e7b07389cb9)

diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp.orig 
b/src/mesa/state_tracker/st_glsl_to_nir.cpp.orig
deleted file mode 100644
index 38d6c70..0000000
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp.orig
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- * Copyright © 2015 Red Hat
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
THE
- * SOFTWARE.
- */
-
-#include "st_nir.h"
-
-#include "pipe/p_defines.h"
-#include "pipe/p_screen.h"
-#include "pipe/p_context.h"
-
-#include "program/program.h"
-#include "program/prog_statevars.h"
-#include "program/prog_parameter.h"
-#include "program/ir_to_mesa.h"
-#include "main/mtypes.h"
-#include "main/errors.h"
-#include "main/shaderapi.h"
-#include "main/uniforms.h"
-#include "util/string_to_uint_map.h"
-
-#include "st_context.h"
-#include "st_program.h"
-
-#include "compiler/nir/nir.h"
-#include "compiler/glsl_types.h"
-#include "compiler/glsl/glsl_to_nir.h"
-#include "compiler/glsl/ir.h"
-
-
-static int
-type_size(const struct glsl_type *type)
-{
-   return type->count_attribute_slots(false);
-}
-
-/* Depending on PIPE_CAP_TGSI_TEXCOORD (st->needs_texcoord_semantic) we
- * may need to fix up varying slots so the glsl->nir path is aligned
- * with the anything->tgsi->nir path.
- */
-static void
-st_nir_fixup_varying_slots(struct st_context *st, struct exec_list *var_list)
-{
-   if (st->needs_texcoord_semantic)
-      return;
-
-   nir_foreach_variable(var, var_list) {
-      if (var->data.location >= VARYING_SLOT_VAR0) {
-         var->data.location += 9;
-      } else if ((var->data.location >= VARYING_SLOT_TEX0) &&
-               (var->data.location <= VARYING_SLOT_TEX7)) {
-         var->data.location += VARYING_SLOT_VAR0 - VARYING_SLOT_TEX0;
-      }
-   }
-}
-
-/* input location assignment for VS inputs must be handled specially, so
- * that it is aligned w/ st's vbo state.
- * (This isn't the case with, for ex, FS inputs, which only need to agree
- * on varying-slot w/ the VS outputs)
- */
-static void
-st_nir_assign_vs_in_locations(struct gl_program *prog, nir_shader *nir)
-{
-   unsigned attr, num_inputs = 0;
-   unsigned input_to_index[VERT_ATTRIB_MAX] = {0};
-
-   /* TODO de-duplicate w/ similar code in st_translate_vertex_program()? */
-   for (attr = 0; attr < VERT_ATTRIB_MAX; attr++) {
-      if ((prog->info.inputs_read & BITFIELD64_BIT(attr)) != 0) {
-         input_to_index[attr] = num_inputs;
-         num_inputs++;
-         if ((prog->info.double_inputs_read & BITFIELD64_BIT(attr)) != 0) {
-            /* add placeholder for second part of a double attribute */
-            num_inputs++;
-         }
-      } else {
-         input_to_index[attr] = ~0;
-      }
-   }
-
-   /* bit of a hack, mirroring st_translate_vertex_program */
-   input_to_index[VERT_ATTRIB_EDGEFLAG] = num_inputs;
-
-   nir->num_inputs = 0;
-   nir_foreach_variable_safe(var, &nir->inputs) {
-      attr = var->data.location;
-      assert(attr < ARRAY_SIZE(input_to_index));
-
-      if (input_to_index[attr] != ~0u) {
-         var->data.driver_location = input_to_index[attr];
-         nir->num_inputs++;
-      } else {
-         /* Move unused input variables to the globals list (with no
-          * initialization), to avoid confusing drivers looking through the
-          * inputs array and expecting to find inputs with a driver_location
-          * set.
-          */
-         exec_node_remove(&var->node);
-         var->data.mode = nir_var_global;
-         exec_list_push_tail(&nir->globals, &var->node);
-      }
-   }
-}
-
-static int
-st_nir_lookup_parameter_index(const struct gl_program_parameter_list *params,
-                              const char *name)
-{
-   int loc = _mesa_lookup_parameter_index(params, name);
-
-   /* is there a better way to do this?  If we have something like:
-    *
-    *    struct S {
-    *           float f;
-    *           vec4 v;
-    *    };
-    *    uniform S color;
-    *
-    * Then what we get in prog->Parameters looks like:
-    *
-    *    0: Name=color.f, Type=6, DataType=1406, Size=1
-    *    1: Name=color.v, Type=6, DataType=8b52, Size=4
-    *
-    * So the name doesn't match up and _mesa_lookup_parameter_index()
-    * fails.  In this case just find the first matching "color.*"..
-    *
-    * Note for arrays you could end up w/ color[n].f, for example.
-    *
-    * glsl_to_tgsi works slightly differently in this regard.  It is
-    * emitting something more low level, so it just translates the
-    * params list 1:1 to CONST[] regs.  Going from GLSL IR to TGSI,
-    * it just calculates the additional offset of struct field members
-    * in glsl_to_tgsi_visitor::visit(ir_dereference_record *ir) or
-    * glsl_to_tgsi_visitor::visit(ir_dereference_array *ir).  It never
-    * needs to work backwards to get base var loc from the param-list
-    * which already has them separated out.
-    */
-   if (loc < 0) {
-      int namelen = strlen(name);
-      for (unsigned i = 0; i < params->NumParameters; i++) {
-         struct gl_program_parameter *p = &params->Parameters[i];
-         if ((strncmp(p->Name, name, namelen) == 0) &&
-             ((p->Name[namelen] == '.') || (p->Name[namelen] == '['))) {
-            loc = i;
-            break;
-         }
-      }
-   }
-
-   return loc;
-}
-
-static void
-st_nir_assign_uniform_locations(struct gl_program *prog,
-                                struct gl_shader_program *shader_program,
-                                struct exec_list *uniform_list, unsigned *size)
-{
-   int max = 0;
-   int shaderidx = 0;
-
-   nir_foreach_variable(uniform, uniform_list) {
-      int loc;
-
-      /*
-       * UBO's have their own address spaces, so don't count them towards the
-       * number of global uniforms
-       */
-      if ((uniform->data.mode == nir_var_uniform || uniform->data.mode == 
nir_var_shader_storage) &&
-          uniform->interface_type != NULL)
-         continue;
-
-      if (uniform->type->is_sampler()) {
-         unsigned val = 0;
-         bool found = shader_program->UniformHash->get(val, uniform->name);
-         loc = shaderidx++;
-         assert(found);
-         (void) found; /* silence unused var warning */
-         /* this ensure that nir_lower_samplers looks at the correct
-          * shader_program->UniformStorage[location]:
-          */
-         uniform->data.location = val;
-      } else if (strncmp(uniform->name, "gl_", 3) == 0) {
-         const gl_state_index *const stateTokens = (gl_state_index 
*)uniform->state_slots[0].tokens;
-         /* This state reference has already been setup by ir_to_mesa, but 
we'll
-          * get the same index back here.
-          */
-         loc = _mesa_add_state_reference(prog->Parameters, stateTokens);
-      } else {
-         loc = st_nir_lookup_parameter_index(prog->Parameters, uniform->name);
-      }
-
-      uniform->data.driver_location = loc;
-
-      max = MAX2(max, loc + type_size(uniform->type));
-   }
-   *size = max;
-}
-
-extern "C" {

Reply via email to