summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2018-01-17 17:10:34 -0800
committerJason Ekstrand <jason.ekstrand@intel.com>2018-01-26 01:44:45 -0800
commitc8949e24984266cca3593291c30ea199baef5358 (patch)
tree08839de478d8eb9515c42f58e75924bf67c29a2a
parent8116b9170bc36bb15512f97a7680ad97bddd56a8 (diff)
downloadmesa-c8949e24984266cca3593291c30ea199baef5358.tar.gz
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@lists.freedesktop.org Reviewed-by: Alex Smith <asmith@feralinteractive.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
-rw-r--r--src/intel/vulkan/genX_pipeline.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c
index 82fdf206a95..10efe542106 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;
}