From 17ad2ade82fded0dc19e92b64b96082379ec9daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Mon, 5 Oct 2020 19:35:14 +0200 Subject: [PATCH] radv/aco: Use new GS lowering options for ACO with NGG GS. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes it easier for ACO to implement NGG GS: 1. No need to keep track of vertex and primitive counts. 2. No need to discard incomplete primitives. Signed-off-by: Timur Kristóf Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_shader.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 5e4d16bfb19..54ce9109157 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -553,8 +553,18 @@ radv_shader_compile_to_nir(struct radv_device *device, nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir)); - if (nir->info.stage == MESA_SHADER_GEOMETRY) - nir_lower_gs_intrinsics(nir, nir_lower_gs_intrinsics_per_stream); + if (nir->info.stage == MESA_SHADER_GEOMETRY) { + unsigned nir_gs_flags = nir_lower_gs_intrinsics_per_stream; + + if (device->physical_device->use_ngg && !radv_use_llvm_for_stage(device, stage)) { + /* ACO needs NIR to do some of the hard lifting */ + nir_gs_flags |= nir_lower_gs_intrinsics_count_primitives | + nir_lower_gs_intrinsics_count_vertices_per_primitive | + nir_lower_gs_intrinsics_overwrite_incomplete; + } + + nir_lower_gs_intrinsics(nir, nir_gs_flags); + } static const nir_lower_tex_options tex_options = { .lower_txp = ~0,