radv/gfx10: fix VGT_SHADER_STAGES_EN for GS as NGG
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 11 Jul 2019 06:44:13 +0000 (08:44 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 11 Jul 2019 13:45:43 +0000 (15:45 +0200)
The driver shouldn't set the copy shader bit.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_pipeline.c

index 2ea984c832888d45ac010240e1e79eb6daf32639..bb434f81325720d1045978482919adee429bdbf2 100644 (file)
@@ -3865,22 +3865,23 @@ radv_compute_vgt_shader_stages_en(const struct radv_pipeline *pipeline)
                        S_028B54_HS_EN(1) | S_028B54_DYNAMIC_HS(1);
 
                if (radv_pipeline_has_gs(pipeline))
-                       stages |=  S_028B54_ES_EN(V_028B54_ES_STAGE_DS) |
-                               S_028B54_GS_EN(1) |
-                               S_028B54_VS_EN(V_028B54_VS_STAGE_COPY_SHADER);
-               else if (radv_pipeline_has_ngg(pipeline))
                        stages |= S_028B54_ES_EN(V_028B54_ES_STAGE_DS) |
-                                 S_028B54_PRIMGEN_EN(1);
+                                 S_028B54_GS_EN(1);
+               else if (radv_pipeline_has_ngg(pipeline))
+                       stages |= S_028B54_ES_EN(V_028B54_ES_STAGE_DS);
                else
                        stages |= S_028B54_VS_EN(V_028B54_VS_STAGE_DS);
-
        } else if (radv_pipeline_has_gs(pipeline)) {
                stages |= S_028B54_ES_EN(V_028B54_ES_STAGE_REAL) |
-                       S_028B54_GS_EN(1) |
-                       S_028B54_VS_EN(V_028B54_VS_STAGE_COPY_SHADER);
+                       S_028B54_GS_EN(1);
        } else if (radv_pipeline_has_ngg(pipeline)) {
-               stages |= S_028B54_ES_EN(V_028B54_ES_STAGE_REAL) |
-                         S_028B54_PRIMGEN_EN(1);
+               stages |= S_028B54_ES_EN(V_028B54_ES_STAGE_REAL);
+       }
+
+       if (radv_pipeline_has_ngg(pipeline)) {
+               stages |= S_028B54_PRIMGEN_EN(1);
+       } else {
+               stages |= S_028B54_VS_EN(V_028B54_VS_STAGE_COPY_SHADER);
        }
 
        if (pipeline->device->physical_device->rad_info.chip_class >= GFX9)