From: Timur Kristóf Date: Tue, 31 Mar 2020 08:41:01 +0000 (+0200) Subject: radv: Enable ACO for NGG VS/TES, but disable NGG for ACO GS. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c24d9522daefce112b7a9d03a6d1abdf60f02656;p=mesa.git radv: Enable ACO for NGG VS/TES, but disable NGG for ACO GS. Signed-off-by: Timur Kristóf Reviewed-by: Samuel Pitoiset Reviewed-by: Daniel Schürmann Part-of: --- diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index f45d86bd3f7..00e3a7ca947 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -411,10 +411,6 @@ radv_physical_device_init(struct radv_physical_device *device, device->use_ngg = device->rad_info.chip_class >= GFX10 && device->rad_info.family != CHIP_NAVI14 && !(device->instance->debug_flags & RADV_DEBUG_NO_NGG); - if (device->use_aco && device->use_ngg) { - fprintf(stderr, "WARNING: disabling NGG because ACO is used.\n"); - device->use_ngg = false; - } device->use_ngg_streamout = false; diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index c62d2a0d977..d1c7abef106 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -2461,6 +2461,19 @@ radv_fill_shader_keys(struct radv_device *device, keys[MESA_SHADER_TESS_EVAL].vs_common_out.as_ngg = false; } + if (device->physical_device->use_aco) { + /* Disable NGG GS when ACO is used */ + if (nir[MESA_SHADER_GEOMETRY]) { + if (nir[MESA_SHADER_TESS_CTRL]) + keys[MESA_SHADER_TESS_EVAL].vs_common_out.as_ngg = false; + else + keys[MESA_SHADER_VERTEX].vs_common_out.as_ngg = false; + } + + /* NGG streamout not yet supported by ACO */ + assert(!device->physical_device->use_ngg_streamout); + } + gl_shader_stage last_xfb_stage = MESA_SHADER_VERTEX; for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_GEOMETRY; i++) {