summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2016-09-29 11:42:43 -0700
committerKenneth Graunke <[email protected]>2016-10-11 22:50:09 -0700
commitba38a9d3803cdd43573f1c68497c54d701e911b6 (patch)
treee060c7073dddab2b1af97ac5c5ec29709625da00
parent389d6dedbe75defe07216ad761569a9b94f44e58 (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]>
-rw-r--r--src/intel/vulkan/anv_pipeline.c16
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) {