Mesa (master): anv/pipeline: Don't look at blend state unless we have an attachment

Jason Ekstrand jekstrand at kemper.freedesktop.org
Fri Jan 26 10:32:34 UTC 2018


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

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Jan 17 17:10:34 2018 -0800

anv/pipeline: Don't look at blend state unless we have an attachment

Without this, we may end up dereferencing blend before we check for
binding->index != UINT32_MAX.  However, Vulkan allows the blend state to
be NULL so long as you don't have any color attachments.  This fixes a
segfault when running The Talos Principal.

Fixes: 12f4e00b69e724a23504b7bd3958fb75dc462950
Cc: mesa-stable at lists.freedesktop.org
Reviewed-by: Alex Smith <asmith at feralinteractive.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

---

 src/intel/vulkan/genX_pipeline.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c
index 82fdf206a9..10efe54210 100644
--- a/src/intel/vulkan/genX_pipeline.c
+++ b/src/intel/vulkan/genX_pipeline.c
@@ -1351,10 +1351,10 @@ has_color_buffer_write_enabled(const struct anv_pipeline *pipeline,
       if (binding->set != ANV_DESCRIPTOR_SET_COLOR_ATTACHMENTS)
          continue;
 
-      const VkPipelineColorBlendAttachmentState *a =
-         &blend->pAttachments[binding->index];
+      if (binding->index == UINT32_MAX)
+         continue;
 
-      if (binding->index != UINT32_MAX && a->colorWriteMask != 0)
+      if (blend->pAttachments[binding->index].colorWriteMask != 0)
          return true;
    }
 




More information about the mesa-commit mailing list