[Mesa-dev] [PATCH] Vulkan: Solve the vkCreateGraphicsPipelines crash

Randy Xu randy.xu at intel.com
Sat Mar 18 11:20:17 UTC 2017


From: "Xu,Randy" <randy.xu at intel.com>

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>
---
 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 cfc7c06..85a9e4f 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.7.4



More information about the mesa-dev mailing list