From 1af71bee734da7d87e0ef1b71a64e12fa81ed92e Mon Sep 17 00:00:00 2001 From: Brian Ho Date: Wed, 1 Apr 2020 09:01:52 -0700 Subject: [PATCH] turnip: Set has_gs in ir3_shader_key The ir3 compiler only lowers the VS and GS for geometry shading if the corresponding has_gs key is set in the shader key. Without it, GS-specific intrinsics like load_per_vertex_input won't get lowered and the GS header will be initialized with invalid values. Part-of: --- src/freedreno/vulkan/tu_shader.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/freedreno/vulkan/tu_shader.c b/src/freedreno/vulkan/tu_shader.c index 1deb19d45ee..51e1c65177c 100644 --- a/src/freedreno/vulkan/tu_shader.c +++ b/src/freedreno/vulkan/tu_shader.c @@ -573,9 +573,19 @@ tu_shader_compile_options_init( struct tu_shader_compile_options *options, const VkGraphicsPipelineCreateInfo *pipeline_info) { - *options = (struct tu_shader_compile_options) { - /* TODO ir3_key */ + bool has_gs = false; + for (uint32_t i = 0; i < pipeline_info->stageCount; i++) { + if (pipeline_info->pStages[i].stage == VK_SHADER_STAGE_GEOMETRY_BIT) { + has_gs = true; + break; + } + } + *options = (struct tu_shader_compile_options) { + /* TODO: Populate the remaining fields of ir3_shader_key. */ + .key = { + .has_gs = has_gs, + }, /* TODO: VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT * some optimizations need to happen otherwise shader might not compile */ -- 2.30.2