diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index a51e94f0db9..52a623203b4 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -2164,6 +2164,13 @@ radv_fill_shader_info_ngg(struct radv_device *device, struct radv_graphics_pipel else stages[MESA_SHADER_VERTEX].info.is_ngg = false; } + + if (stages[MESA_SHADER_GEOMETRY].nir) { + if (stages[MESA_SHADER_TESS_CTRL].nir) + stages[MESA_SHADER_GEOMETRY].info.is_ngg = stages[MESA_SHADER_TESS_EVAL].info.is_ngg; + else + stages[MESA_SHADER_GEOMETRY].info.is_ngg = stages[MESA_SHADER_VERTEX].info.is_ngg; + } } } diff --git a/src/amd/vulkan/radv_shader_info.c b/src/amd/vulkan/radv_shader_info.c index 2deb4496b0e..6c0cf9b3330 100644 --- a/src/amd/vulkan/radv_shader_info.c +++ b/src/amd/vulkan/radv_shader_info.c @@ -1596,10 +1596,8 @@ radv_nir_shader_info_merge(const struct radv_pipeline_stage *src, struct radv_pi dst_info->tes = src_info->tes; } - if (dst->stage == MESA_SHADER_GEOMETRY) { - dst_info->is_ngg = src_info->is_ngg; + if (dst->stage == MESA_SHADER_GEOMETRY) dst_info->gs.es_type = src->stage; - } } static const gl_shader_stage graphics_shader_order[] = {