radv/gfx10: set BREAK_WAVE_AT_EOI if TES or GS enable the primitive ID
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 18 Jul 2019 08:14:09 +0000 (10:14 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 18 Jul 2019 08:37:10 +0000 (10:37 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_pipeline.c

index b11d79f481172955a5e0dcc8a5698de000cc66b7..a7ff0e2d1397fd01c95291a6a15fcec88570320f 100644 (file)
@@ -3445,6 +3445,14 @@ radv_pipeline_generate_hw_ngg(struct radeon_cmdbuf *ctx_cs,
        bool break_wave_at_eoi = false;
        unsigned nparams;
 
+       if (es_type == MESA_SHADER_TESS_EVAL) {
+               struct radv_shader_variant *gs =
+                       pipeline->shaders[MESA_SHADER_GEOMETRY];
+
+               if (es_enable_prim_id || (gs && gs->info.info.uses_prim_id))
+                       break_wave_at_eoi = true;
+       }
+
        nparams = MAX2(outinfo->param_exports, 1);
        radeon_set_context_reg(ctx_cs, R_0286C4_SPI_VS_OUT_CONFIG,
                               S_0286C4_VS_EXPORT_COUNT(nparams - 1) |