Mesa (master): anv/cmd_buffer: Use the null surface state for ATTACHMENT_UNUSED

Jason Ekstrand jekstrand at kemper.freedesktop.org
Fri Apr 14 21:20:54 UTC 2017


Module: Mesa
Branch: master
Commit: 21d2ca72d88e00ddf37c7e1030472e184a038195
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=21d2ca72d88e00ddf37c7e1030472e184a038195

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Fri Apr  7 10:33:25 2017 -0700

anv/cmd_buffer: Use the null surface state for ATTACHMENT_UNUSED

Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>
Cc: <mesa-stable at lists.freedesktop.org>

---

 src/intel/vulkan/genX_cmd_buffer.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index fcebd4d006..13baf76b7e 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -1122,8 +1122,20 @@ emit_binding_table(struct anv_cmd_buffer *cmd_buffer,
          assert(stage == MESA_SHADER_FRAGMENT);
          assert(binding->binding == 0);
          if (binding->index < subpass->color_count) {
-            const unsigned att = subpass->color_attachments[binding->index].attachment;
-            surface_state = cmd_buffer->state.attachments[att].color_rt_state;
+            const unsigned att =
+               subpass->color_attachments[binding->index].attachment;
+
+            /* From the Vulkan 1.0.46 spec:
+             *
+             *    "If any color or depth/stencil attachments are
+             *    VK_ATTACHMENT_UNUSED, then no writes occur for those
+             *    attachments."
+             */
+            if (att == VK_ATTACHMENT_UNUSED) {
+               surface_state = cmd_buffer->state.null_surface_state;
+            } else {
+               surface_state = cmd_buffer->state.attachments[att].color_rt_state;
+            }
          } else {
             surface_state = cmd_buffer->state.null_surface_state;
          }




More information about the mesa-commit mailing list