From 57595cb0739d50a3fbd0841d7475bd775f3e24f3 Mon Sep 17 00:00:00 2001 From: "Xu,Randy" Date: Sat, 18 Mar 2017 19:20:17 +0800 Subject: [PATCH] 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 Reviewed-by: Jason Ekstrand Cc: "17.0 13.0" --- 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 cfc7c06fa4c..85a9e4fd290 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]; -- 2.30.2