From 6aec3c9a2340474d4c8a9243b5c7732f0aeb7149 Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Thu, 17 Dec 2020 13:50:04 +0200 Subject: [PATCH] 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 Part-of: --- src/freedreno/vulkan/tu_pipeline.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c index 9e56b14..883d549 100644 --- a/src/freedreno/vulkan/tu_pipeline.c +++ b/src/freedreno/vulkan/tu_pipeline.c @@ -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); -- 2.7.4