Mesa (master): anv/genX: Solve the vkCreateGraphicsPipelines crash

Tapani Pälli tpalli at kemper.freedesktop.org
Mon Mar 20 06:31:40 UTC 2017


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

Author: Xu,Randy <randy.xu at intel.com>
Date:   Sat Mar 18 19:20:17 2017 +0800

anv/genX: Solve the vkCreateGraphicsPipelines crash

The crash is due to NULL pColorBlendState, which is legal if the
pipeline has rasterization disabled or if the subpass of the render pass
the pipeline is created against does not use any color attachments.

Test: Sample subpasses from LunarG can run without crash

Signed-off-by: Xu,Randy <randy.xu at intel.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Cc: "17.0 13.0" <mesa-stable at lists.freedesktop.org>

---

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

diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c
index cfc7c06fa4..85a9e4fd29 100644
--- a/src/intel/vulkan/genX_pipeline.c
+++ b/src/intel/vulkan/genX_pipeline.c
@@ -902,7 +902,7 @@ emit_cb_state(struct anv_pipeline *pipeline,
       /* We can have at most 8 attachments */
       assert(i < 8);
 
-      if (binding->index >= info->attachmentCount)
+      if (info == NULL || binding->index >= info->attachmentCount)
          continue;
 
       assert(binding->binding == 0);
@@ -1423,7 +1423,7 @@ emit_3dstate_ps(struct anv_pipeline *pipeline,
     * source blend factors.
     */
    bool dual_src_blend = false;
-   if (wm_prog_data->dual_src_blend) {
+   if (wm_prog_data->dual_src_blend && blend) {
       for (uint32_t i = 0; i < blend->attachmentCount; i++) {
          const VkPipelineColorBlendAttachmentState *bstate =
             &blend->pAttachments[i];




More information about the mesa-commit mailing list