[Mesa-dev] [PATCH 3/6] radv: emit the geometry shader as NGG if enabled on GFX10

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue Jul 9 06:43:58 UTC 2019


Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/amd/vulkan/radv_pipeline.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index bb6f877a6ee..703dbe54507 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -3613,7 +3613,8 @@ static void
 radv_pipeline_generate_geometry_shader(struct radeon_cmdbuf *ctx_cs,
 				       struct radeon_cmdbuf *cs,
 				       struct radv_pipeline *pipeline,
-				       const struct radv_gs_state *gs_state)
+				       const struct radv_gs_state *gs_state,
+				       const struct radv_ngg_state *ngg_state)
 {
 	struct radv_shader_variant *gs;
 
@@ -3621,7 +3622,10 @@ radv_pipeline_generate_geometry_shader(struct radeon_cmdbuf *ctx_cs,
 	if (!gs)
 		return;
 
-	radv_pipeline_generate_hw_gs(ctx_cs, cs, pipeline, gs, gs_state);
+	if (gs->info.is_ngg)
+		radv_pipeline_generate_hw_ngg(ctx_cs, cs, pipeline, gs, ngg_state);
+	else
+		radv_pipeline_generate_hw_gs(ctx_cs, cs, pipeline, gs, gs_state);
 }
 
 static uint32_t offset_to_ps_input(uint32_t offset, bool flat_shade, bool float16)
@@ -3944,7 +3948,7 @@ radv_pipeline_generate_pm4(struct radv_pipeline *pipeline,
 	radv_pipeline_generate_vgt_gs_mode(ctx_cs, pipeline);
 	radv_pipeline_generate_vertex_shader(ctx_cs, cs, pipeline, tess, ngg);
 	radv_pipeline_generate_tess_shaders(ctx_cs, cs, pipeline, tess, ngg);
-	radv_pipeline_generate_geometry_shader(ctx_cs, cs, pipeline, gs);
+	radv_pipeline_generate_geometry_shader(ctx_cs, cs, pipeline, gs, ngg);
 	radv_pipeline_generate_fragment_shader(ctx_cs, cs, pipeline);
 	radv_pipeline_generate_ps_inputs(ctx_cs, pipeline);
 	radv_pipeline_generate_vgt_vertex_reuse(ctx_cs, pipeline);
-- 
2.22.0



More information about the mesa-dev mailing list