diff --git a/src/amd/compiler/aco_instruction_selection_setup.cpp b/src/amd/compiler/aco_instruction_selection_setup.cpp index 29b3845f02e..fb3e2659f5a 100644 --- a/src/amd/compiler/aco_instruction_selection_setup.cpp +++ b/src/amd/compiler/aco_instruction_selection_setup.cpp @@ -392,7 +392,7 @@ setup_vs_variables(isel_context *ctx, nir_shader *nir) assert(!ctx->args->shader_info->so.num_outputs); /* TODO: check if the shader writes edge flags (not in Vulkan) */ - ctx->ngg_nogs_early_prim_export = true; + ctx->ngg_nogs_early_prim_export = exec_list_is_singular(&nir_shader_get_entrypoint(nir)->body); } if (ctx->stage == vertex_ngg && ctx->args->options->key.vs_common_out.export_prim_id) { @@ -464,8 +464,7 @@ setup_tes_variables(isel_context *ctx, nir_shader *nir) if (ctx->stage.hw == HWStage::NGG) assert(!ctx->args->shader_info->so.num_outputs); - /* Tess eval shaders can't write edge flags, so this can be always true. */ - ctx->ngg_nogs_early_prim_export = true; + ctx->ngg_nogs_early_prim_export = exec_list_is_singular(&nir_shader_get_entrypoint(nir)->body); } }