ac,radeonsi: simplify checking for Navi1x chips
authorMarek Olšák <marek.olsak@amd.com>
Fri, 27 Mar 2020 01:48:48 +0000 (21:48 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 24 Apr 2020 10:38:54 +0000 (10:38 +0000)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4698>

src/amd/llvm/ac_llvm_build.c
src/gallium/drivers/radeonsi/si_shader_llvm_vs.c
src/gallium/drivers/radeonsi/si_state.c
src/gallium/drivers/radeonsi/si_state_shaders.c
src/gallium/drivers/radeonsi/si_texture.c

index 3d7589ee0930395be27ecf85d5f35668da67be09..eab1b7fb721a1b746db688238560c224f2764bb1 100644 (file)
@@ -4818,10 +4818,7 @@ void ac_build_sendmsg_gs_alloc_req(struct ac_llvm_context *ctx, LLVMValueRef wav
         * We always have to export at least 1 primitive.
         * Export a degenerate triangle using vertex 0 for all 3 vertices.
         */
-       if (prim_cnt == ctx->i32_0 &&
-           (ctx->family == CHIP_NAVI10 ||
-            ctx->family == CHIP_NAVI12 ||
-            ctx->family == CHIP_NAVI14)) {
+       if (prim_cnt == ctx->i32_0 && ctx->chip_class == GFX10) {
                assert(vtx_cnt == ctx->i32_0);
                prim_cnt = ctx->i32_1;
                vtx_cnt = ctx->i32_1;
index 8640150b18c206c5b691d4600a84f84669149532..081d7fb908766b71e6bd9574d8a40521e6b18b62 100644 (file)
@@ -664,11 +664,10 @@ void si_llvm_build_vs_exports(struct si_shader_context *ctx,
       if (pos_args[i].out[0])
          shader->info.nr_pos_exports++;
 
-   /* Navi10-14 skip POS0 exports if EXEC=0 and DONE=0, causing a hang.
+   /* GFX10 (Navi1x) skip POS0 exports if EXEC=0 and DONE=0, causing a hang.
     * Setting valid_mask=1 prevents it and has no other effect.
     */
-   if (ctx->screen->info.family == CHIP_NAVI10 || ctx->screen->info.family == CHIP_NAVI12 ||
-       ctx->screen->info.family == CHIP_NAVI14)
+   if (ctx->screen->info.chip_class == GFX10)
       pos_args[0].valid_mask = 1;
 
    pos_idx = 0;
index dbafa173e02f06177ff708e5d709b1a94f0d929f..5ce741e26d41a660b3f6afdc185de9beb880851b 100644 (file)
@@ -584,7 +584,7 @@ static void *si_create_blend_state_mode(struct pipe_context *ctx,
 
       blend->blend_enable_4bit |= 0xfu << (i * 4);
 
-      if (sctx->chip_class >= GFX8 && sctx->family <= CHIP_NAVI14)
+      if (sctx->chip_class >= GFX8 && sctx->chip_class <= GFX10)
          blend->dcc_msaa_corruption_4bit |= 0xfu << (i * 4);
 
       /* This is only important for formats without alpha. */
@@ -595,7 +595,7 @@ static void *si_create_blend_state_mode(struct pipe_context *ctx,
          blend->need_src_alpha_4bit |= 0xfu << (i * 4);
    }
 
-   if (sctx->chip_class >= GFX8 && sctx->family <= CHIP_NAVI14 && logicop_enable)
+   if (sctx->chip_class >= GFX8 && sctx->chip_class <= GFX10 && logicop_enable)
       blend->dcc_msaa_corruption_4bit |= blend->cb_target_enabled_4bit;
 
    if (blend->cb_target_mask) {
index 8aeba4b9ad1d8e6642346254b392fec3c3ba3eaa..ce09a34ddd80f438fb963482ce4e0c8e85b25113 100644 (file)
@@ -918,8 +918,7 @@ static void gfx10_emit_ge_pc_alloc(struct si_context *sctx, unsigned value)
        sctx->tracked_regs.reg_value[reg] != value) {
       struct radeon_cmdbuf *cs = sctx->gfx_cs;
 
-      if (sctx->family == CHIP_NAVI10 || sctx->family == CHIP_NAVI12 ||
-          sctx->family == CHIP_NAVI14) {
+      if (sctx->chip_class == GFX10) {
          /* SQ_NON_EVENT must be emitted before GE_PC_ALLOC is written. */
          radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0));
          radeon_emit(cs, EVENT_TYPE(V_028A90_SQ_NON_EVENT) | EVENT_INDEX(0));
@@ -1162,8 +1161,7 @@ static void gfx10_shader_ngg(struct si_screen *sscreen, struct si_shader *shader
       late_alloc_wave64 = (num_cu_per_sh - 2) * 4;
 
    /* Limit LATE_ALLOC_GS for prevent a hang (hw bug). */
-   if (sscreen->info.family == CHIP_NAVI10 || sscreen->info.family == CHIP_NAVI12 ||
-       sscreen->info.family == CHIP_NAVI14)
+   if (sscreen->info.chip_class == GFX10)
       late_alloc_wave64 = MIN2(late_alloc_wave64, 64);
 
    si_pm4_set_reg(
@@ -1255,8 +1253,7 @@ static void gfx10_shader_ngg(struct si_screen *sscreen, struct si_shader *shader
        *
        * Requirement: GE_CNTL.VERT_GRP_SIZE = VGT_GS_ONCHIP_CNTL.ES_VERTS_PER_SUBGRP - 5
        */
-      if ((sscreen->info.family == CHIP_NAVI10 || sscreen->info.family == CHIP_NAVI12 ||
-           sscreen->info.family == CHIP_NAVI14) &&
+      if ((sscreen->info.chip_class == GFX10) &&
           (es_type == PIPE_SHADER_VERTEX || gs_type == PIPE_SHADER_VERTEX) && /* = no tess */
           shader->ngg.hw_max_esverts != 256) {
          shader->ge_cntl &= C_03096C_VERT_GRP_SIZE;
@@ -2950,9 +2947,7 @@ bool si_update_ngg(struct si_context *sctx)
        * VGT_FLUSH is also emitted at the beginning of IBs when legacy GS ring
        * pointers are set.
        */
-      if ((sctx->family == CHIP_NAVI10 || sctx->family == CHIP_NAVI12 ||
-           sctx->family == CHIP_NAVI14) &&
-          !new_ngg)
+      if (sctx->chip_class == GFX10 && !new_ngg)
          sctx->flags |= SI_CONTEXT_VGT_FLUSH;
 
       sctx->ngg = new_ngg;
index 3b10fb0636b2f799a7f2fd62e8eb77c9797a795b..f67794c610e9a39515568e2c20481f193bf747bd 100644 (file)
@@ -1259,9 +1259,7 @@ static struct si_texture *si_texture_create_object(struct pipe_screen *screen,
 
          /* Stencil texturing with HTILE doesn't work
           * with mipmapping on Navi10-14. */
-         if ((sscreen->info.family == CHIP_NAVI10 || sscreen->info.family == CHIP_NAVI12 ||
-              sscreen->info.family == CHIP_NAVI14) &&
-             base->last_level > 0)
+         if (sscreen->info.chip_class == GFX10 && base->last_level > 0)
             tex->htile_stencil_disabled = true;
       } else {
          tex->can_sample_z = !tex->surface.u.legacy.depth_adjusted;