From 8e11be0ddb0920633c5fab8d6a6460b7591a2627 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 10 Aug 2015 00:52:21 +0200 Subject: [PATCH] radeonsi: move VGT_GS_MODE to the VS state MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The VS will want to select GS scenario A here (VS with PrimitiveID). Reviewed-by: Michel Dänzer --- src/gallium/drivers/radeonsi/si_state_shaders.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index 475aea1..a6480b3 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -314,6 +314,12 @@ static void si_shader_vs(struct si_shader *shader) if (pm4 == NULL) return; + /* If this is the GS copy shader, the GS state writes this register. + * Otherwise, the VS state writes it. + */ + if (!shader->is_gs_copy_shader) + si_pm4_set_reg(pm4, R_028A40_VGT_GS_MODE, 0); + va = shader->bo->gpu_address; si_pm4_add_bo(pm4, shader->bo, RADEON_USAGE_READ, RADEON_PRIO_SHADER_DATA); @@ -1287,8 +1293,6 @@ static void si_update_vgt_shader_config(struct si_context *sctx) } si_pm4_set_reg(*pm4, R_028B54_VGT_SHADER_STAGES_EN, stages); - if (!sctx->gs_shader) - si_pm4_set_reg(*pm4, R_028A40_VGT_GS_MODE, 0); } si_pm4_bind_state(sctx, vgt_shader_config, *pm4); } -- 2.7.4