diff options
author | Kenneth Graunke <[email protected]> | 2016-09-29 11:42:43 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2016-10-11 22:50:09 -0700 |
commit | ba38a9d3803cdd43573f1c68497c54d701e911b6 (patch) | |
tree | e060c7073dddab2b1af97ac5c5ec29709625da00 /src/intel | |
parent | 389d6dedbe75defe07216ad761569a9b94f44e58 (diff) |
anv: Fix anv_pipeline_validate_create_info assertions.
Many of these can be "NULL if the pipeline has rasterization disabled."
Also, we should assert that pMultisampleState exists.
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan/anv_pipeline.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index f96fe2298fc..6b393a67bfc 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -953,8 +953,7 @@ anv_pipeline_validate_create_info(const VkGraphicsPipelineCreateInfo *info) struct anv_subpass *subpass = NULL; /* Assert that all required members of VkGraphicsPipelineCreateInfo are - * present, as explained by the Vulkan (20 Oct 2015, git-aa308cb), Section - * 4.2 Graphics Pipeline. + * present. See the Vulkan 1.0.28 spec, Section 9.2 Graphics Pipelines. */ assert(info->sType == VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO); @@ -969,14 +968,17 @@ anv_pipeline_validate_create_info(const VkGraphicsPipelineCreateInfo *info) assert(info->stageCount >= 1); assert(info->pVertexInputState); assert(info->pInputAssemblyState); - assert(info->pViewportState); assert(info->pRasterizationState); + if (!info->pRasterizationState->rasterizerDiscardEnable) { + assert(info->pViewportState); + assert(info->pMultisampleState); - if (subpass && subpass->depth_stencil_attachment != VK_ATTACHMENT_UNUSED) - assert(info->pDepthStencilState); + if (subpass && subpass->depth_stencil_attachment != VK_ATTACHMENT_UNUSED) + assert(info->pDepthStencilState); - if (subpass && subpass->color_count > 0) - assert(info->pColorBlendState); + if (subpass && subpass->color_count > 0) + assert(info->pColorBlendState); + } for (uint32_t i = 0; i < info->stageCount; ++i) { switch (info->pStages[i].stage) { |