radeonsi: silence a Coverity warning
[mesa.git] / src / gallium / drivers / radeonsi / si_state_shaders.c
index 11e3dab2d7d6e30c6cf12331e92fb4b3d515dbdc..313af85a1cb8bd81933695b5992f732d662daad9 100644 (file)
@@ -1231,22 +1231,17 @@ static void si_shader_selector_key_hw_vs(struct si_context *sctx,
 
        /* Find out which VS outputs aren't used by the PS. */
        uint64_t outputs_written = vs->outputs_written;
-       uint32_t outputs_written2 = vs->outputs_written2;
        uint64_t inputs_read = 0;
-       uint32_t inputs_read2 = 0;
 
        outputs_written &= ~0x3; /* ignore POSITION, PSIZE */
 
        if (!ps_disabled) {
                inputs_read = ps->inputs_read;
-               inputs_read2 = ps->inputs_read2;
        }
 
        uint64_t linked = outputs_written & inputs_read;
-       uint32_t linked2 = outputs_written2 & inputs_read2;
 
        key->opt.hw_vs.kill_outputs = ~linked & outputs_written;
-       key->opt.hw_vs.kill_outputs2 = ~linked2 & outputs_written2;
 }
 
 /* Compute the key for the hw shader variant */
@@ -1843,10 +1838,10 @@ void si_init_shader_selector_async(void *job, int thread_index)
                                switch (name) {
                                case TGSI_SEMANTIC_GENERIC:
                                        /* don't process indices the function can't handle */
-                                       if (index >= 60)
+                                       if (index >= SI_MAX_IO_GENERIC)
                                                break;
                                        /* fall through */
-                               case TGSI_SEMANTIC_CLIPDIST:
+                               default:
                                        id = si_shader_io_get_unique_index(name, index);
                                        sel->outputs_written &= ~(1ull << id);
                                        break;
@@ -1855,9 +1850,6 @@ void si_init_shader_selector_async(void *job, int thread_index)
                                case TGSI_SEMANTIC_CLIPVERTEX:
                                case TGSI_SEMANTIC_EDGEFLAG:
                                        break;
-                               default:
-                                       id = si_shader_io_get_unique_index2(name, index);
-                                       sel->outputs_written2 &= ~(1u << id);
                                }
                        }
                }
@@ -2000,21 +1992,16 @@ static void *si_create_shader_selector(struct pipe_context *ctx,
 
                        case TGSI_SEMANTIC_GENERIC:
                                /* don't process indices the function can't handle */
-                               if (index >= 60)
+                               if (index >= SI_MAX_IO_GENERIC)
                                        break;
                                /* fall through */
-                       case TGSI_SEMANTIC_POSITION:
-                       case TGSI_SEMANTIC_PSIZE:
-                       case TGSI_SEMANTIC_CLIPDIST:
+                       default:
                                sel->outputs_written |=
                                        1llu << si_shader_io_get_unique_index(name, index);
                                break;
                        case TGSI_SEMANTIC_CLIPVERTEX: /* ignore these */
                        case TGSI_SEMANTIC_EDGEFLAG:
                                break;
-                       default:
-                               sel->outputs_written2 |=
-                                       1u << si_shader_io_get_unique_index2(name, index);
                        }
                }
                sel->esgs_itemsize = util_last_bit64(sel->outputs_written) * 16;
@@ -2032,16 +2019,17 @@ static void *si_create_shader_selector(struct pipe_context *ctx,
                        unsigned index = sel->info.input_semantic_index[i];
 
                        switch (name) {
-                       case TGSI_SEMANTIC_CLIPDIST:
                        case TGSI_SEMANTIC_GENERIC:
+                               /* don't process indices the function can't handle */
+                               if (index >= SI_MAX_IO_GENERIC)
+                                       break;
+                               /* fall through */
+                       default:
                                sel->inputs_read |=
                                        1llu << si_shader_io_get_unique_index(name, index);
                                break;
                        case TGSI_SEMANTIC_PCOORD: /* ignore this */
                                break;
-                       default:
-                               sel->inputs_read2 |=
-                                       1u << si_shader_io_get_unique_index2(name, index);
                        }
                }
 
@@ -2138,13 +2126,15 @@ static void si_bind_vs_shader(struct pipe_context *ctx, void *state)
        r600_update_vs_writes_viewport_index(&sctx->b, si_get_vs_info(sctx));
 }
 
-static void si_update_tcs_tes_uses_prim_id(struct si_context *sctx)
+static void si_update_tess_uses_prim_id(struct si_context *sctx)
 {
-       sctx->ia_multi_vgt_param_key.u.tcs_tes_uses_prim_id =
+       sctx->ia_multi_vgt_param_key.u.tess_uses_prim_id =
                (sctx->tes_shader.cso &&
                 sctx->tes_shader.cso->info.uses_primid) ||
                (sctx->tcs_shader.cso &&
                 sctx->tcs_shader.cso->info.uses_primid) ||
+               (sctx->gs_shader.cso &&
+                sctx->gs_shader.cso->info.uses_primid) ||
                (sctx->ps_shader.cso && !sctx->gs_shader.cso &&
                 sctx->ps_shader.cso->info.uses_primid);
 }
@@ -2168,7 +2158,7 @@ static void si_bind_gs_shader(struct pipe_context *ctx, void *state)
        if (enable_changed) {
                si_shader_change_notify(sctx);
                if (sctx->ia_multi_vgt_param_key.u.uses_tess)
-                       si_update_tcs_tes_uses_prim_id(sctx);
+                       si_update_tess_uses_prim_id(sctx);
        }
        r600_update_vs_writes_viewport_index(&sctx->b, si_get_vs_info(sctx));
 }
@@ -2184,7 +2174,7 @@ static void si_bind_tcs_shader(struct pipe_context *ctx, void *state)
 
        sctx->tcs_shader.cso = sel;
        sctx->tcs_shader.current = sel ? sel->first_variant : NULL;
-       si_update_tcs_tes_uses_prim_id(sctx);
+       si_update_tess_uses_prim_id(sctx);
        sctx->do_update_shaders = true;
 
        if (enable_changed)
@@ -2203,7 +2193,7 @@ static void si_bind_tes_shader(struct pipe_context *ctx, void *state)
        sctx->tes_shader.cso = sel;
        sctx->tes_shader.current = sel ? sel->first_variant : NULL;
        sctx->ia_multi_vgt_param_key.u.uses_tess = sel != NULL;
-       si_update_tcs_tes_uses_prim_id(sctx);
+       si_update_tess_uses_prim_id(sctx);
        sctx->do_update_shaders = true;
        si_mark_atom_dirty(sctx, &sctx->clip_regs);
        sctx->last_rast_prim = -1; /* reset this so that it gets updated */
@@ -2228,7 +2218,7 @@ static void si_bind_ps_shader(struct pipe_context *ctx, void *state)
        sctx->ps_shader.current = sel ? sel->first_variant : NULL;
        sctx->do_update_shaders = true;
        if (sel && sctx->ia_multi_vgt_param_key.u.uses_tess)
-               si_update_tcs_tes_uses_prim_id(sctx);
+               si_update_tess_uses_prim_id(sctx);
        si_mark_atom_dirty(sctx, &sctx->cb_render_state);
 }