v3dv: improve asserts for VkPipelineColorBlendStateCreateInfo handling
authorIago Toral Quiroga <itoral@igalia.com>
Tue, 31 Mar 2020 10:56:16 +0000 (12:56 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 13 Oct 2020 21:21:29 +0000 (21:21 +0000)
According to the Vulkan 1.0 spec:

  "attachmentCount is the number of VkPipelineColorBlendAttachmentState
   elements in pAttachments. This value must equal the colorAttachmentCount
   for the subpass in which this pipeline is used."

so let's assert exactly that.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>

src/broadcom/vulkan/v3dv_pipeline.c

index 653a0e9..c0ce412 100644 (file)
@@ -1577,14 +1577,14 @@ pack_blend(struct v3dv_pipeline *pipeline,
    if (pipeline->subpass->color_count == 0)
       return;
 
+   assert(pipeline->subpass->color_count == cb_info->attachmentCount);
+
    pipeline->blend.needs_color_constants = false;
    uint32_t color_write_masks = 0;
-   for (uint32_t i = 0; i < cb_info->attachmentCount; i++) {
+   for (uint32_t i = 0; i < pipeline->subpass->color_count; i++) {
       const VkPipelineColorBlendAttachmentState *b_state =
          &cb_info->pAttachments[i];
 
-      assert(i < pipeline->subpass->color_count);
-
       uint32_t attachment_idx =
          pipeline->subpass->color_attachments[i].attachment;
       if (attachment_idx == VK_ATTACHMENT_UNUSED)