From 27047e11fb4596873e6777175b68b9175438099c Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 31 May 2023 15:01:10 +0100 Subject: [PATCH] radv: allow wave32 for geometry shaders Because is_ngg wasn't set early enough, radv_get_wave_size() would always return 64. Signed-off-by: Rhys Perry Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_pipeline_graphics.c | 7 +++++++ src/amd/vulkan/radv_shader_info.c | 4 +--- 2 files changed, 8 insertions(+), 3 deletions(-) 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[] = {