From 3bdb3db5fa74626355d35f2a9994cda33f5ffc29 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 27 Jul 2021 13:40:28 +0200 Subject: [PATCH] radeonsi/gfx11: add assert in legacy vs path Only ngg should be used. Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/amd/common/ac_shader_util.c | 2 ++ src/gallium/drivers/radeonsi/si_shader_llvm_gs.c | 3 +++ src/gallium/drivers/radeonsi/si_state_draw.cpp | 1 + src/gallium/drivers/radeonsi/si_state_shaders.cpp | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/src/amd/common/ac_shader_util.c b/src/amd/common/ac_shader_util.c index c40bd4770d7..89a745f8e18 100644 --- a/src/amd/common/ac_shader_util.c +++ b/src/amd/common/ac_shader_util.c @@ -89,6 +89,8 @@ uint32_t ac_vgt_gs_mode(unsigned gs_max_vert_out, enum chip_class chip_class) { unsigned cut_mode; + assert (chip_class < GFX11); + if (gs_max_vert_out <= 128) { cut_mode = V_028A40_GS_CUT_128; } else if (gs_max_vert_out <= 256) { diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_gs.c b/src/gallium/drivers/radeonsi/si_shader_llvm_gs.c index 90e48dca498..57f7523a038 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm_gs.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm_gs.c @@ -356,6 +356,9 @@ void si_preload_esgs_ring(struct si_shader_context *ctx) void si_preload_gs_rings(struct si_shader_context *ctx) { + if (ctx->ac.chip_class >= GFX11) + return; + const struct si_shader_selector *sel = ctx->shader->selector; LLVMBuilderRef builder = ctx->ac.builder; LLVMValueRef offset = LLVMConstInt(ctx->ac.i32, SI_RING_GSVS, 0); diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp b/src/gallium/drivers/radeonsi/si_state_draw.cpp index 9b76577881f..b821cfff2bb 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.cpp +++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp @@ -1245,6 +1245,7 @@ static void gfx10_emit_ge_cntl(struct si_context *sctx, unsigned num_patches) } else { unsigned primgroup_size; unsigned vertgroup_size; + assert(GFX_VERSION < GFX11); if (HAS_TESS) { primgroup_size = num_patches; /* must be a multiple of NUM_PATCHES */ diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.cpp b/src/gallium/drivers/radeonsi/si_state_shaders.cpp index 47fe5f3aa0d..791ce6715d8 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.cpp +++ b/src/gallium/drivers/radeonsi/si_state_shaders.cpp @@ -1619,6 +1619,8 @@ static void si_shader_vs(struct si_screen *sscreen, struct si_shader *shader, info->base.vs.window_space_position : 0; bool enable_prim_id = shader->key.ge.mono.u.vs_export_prim_id || info->uses_primid; + assert(sscreen->info.chip_class < GFX11); + pm4 = si_get_shader_pm4_state(shader); if (!pm4) return; @@ -3676,6 +3678,8 @@ static void si_emit_vgt_flush(struct radeon_cmdbuf *cs) /* Initialize state related to ESGS / GSVS ring buffers */ bool si_update_gs_ring_buffers(struct si_context *sctx) { + assert(sctx->chip_class < GFX11); + struct si_shader_selector *es = sctx->shader.tes.cso ? sctx->shader.tes.cso : sctx->shader.vs.cso; struct si_shader_selector *gs = sctx->shader.gs.cso;