tu: Ignore pTessellationState if there is no tesselation shaders

According to the spec:

"pTessellationState [...] is ignored if the pipeline does not
 include a tessellation control shader stage and tessellation
 evaluation shader stage."

Fixes crash in RenderDoc when inspecting draw call with
geometry shader but without tesselation shaders.

Fixes: eefdca2e "turnip: Parse tess state and support PATCH primtype"
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8140>
This commit is contained in:
Danylo Piliaiev 2020-12-17 13:50:04 +02:00 committed by Marge Bot
parent 4d47b22bf0
commit 6aec3c9a23
1 changed files with 4 additions and 3 deletions

View File

@ -2431,12 +2431,13 @@ static void
tu_pipeline_builder_parse_tessellation(struct tu_pipeline_builder *builder,
struct tu_pipeline *pipeline)
{
if (!(pipeline->active_stages & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) ||
!(pipeline->active_stages & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT))
return;
const VkPipelineTessellationStateCreateInfo *tess_info =
builder->create_info->pTessellationState;
if (!tess_info)
return;
assert(!(pipeline->dynamic_state_mask & BIT(TU_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY)));
assert(pipeline->ia.primtype == DI_PT_PATCHES0);