diff --git a/.pick_status.json b/.pick_status.json index b3919964c66..d11c6d9c18f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -994,7 +994,7 @@ "description": "ir3: don't cache driver param instructions", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "8b0b81339b9c3806981ee2ec7c08501bbd8bb7a3", "notes": null diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c index 130c244a3aa..0fb4ff63ab6 100644 --- a/src/freedreno/ir3/ir3_compiler_nir.c +++ b/src/freedreno/ir3/ir3_compiler_nir.c @@ -2944,28 +2944,16 @@ emit_intrinsic(struct ir3_context *ctx, nir_intrinsic_instr *intr) break; case nir_intrinsic_load_base_vertex: case nir_intrinsic_load_first_vertex: - if (!ctx->basevertex) { - ctx->basevertex = create_driver_param(ctx, IR3_DP_VS(vtxid_base)); - } - dst[0] = ctx->basevertex; + dst[0] = create_driver_param(ctx, IR3_DP_VS(vtxid_base)); break; case nir_intrinsic_load_is_indexed_draw: - if (!ctx->is_indexed_draw) { - ctx->is_indexed_draw = create_driver_param(ctx, IR3_DP_VS(is_indexed_draw)); - } - dst[0] = ctx->is_indexed_draw; + dst[0] = create_driver_param(ctx, IR3_DP_VS(is_indexed_draw)); break; case nir_intrinsic_load_draw_id: - if (!ctx->draw_id) { - ctx->draw_id = create_driver_param(ctx, IR3_DP_VS(draw_id)); - } - dst[0] = ctx->draw_id; + dst[0] = create_driver_param(ctx, IR3_DP_VS(draw_id)); break; case nir_intrinsic_load_base_instance: - if (!ctx->base_instance) { - ctx->base_instance = create_driver_param(ctx, IR3_DP_VS(instid_base)); - } - dst[0] = ctx->base_instance; + dst[0] = create_driver_param(ctx, IR3_DP_VS(instid_base)); break; case nir_intrinsic_load_view_index: if (!ctx->view_index) { diff --git a/src/freedreno/ir3/ir3_context.h b/src/freedreno/ir3/ir3_context.h index 2aeed94a348..1ee8562d37b 100644 --- a/src/freedreno/ir3/ir3_context.h +++ b/src/freedreno/ir3/ir3_context.h @@ -67,8 +67,7 @@ struct ir3_context { struct ir3_instruction *frag_face, *frag_coord; /* For vertex shaders, keep track of the system values sources */ - struct ir3_instruction *vertex_id, *basevertex, *instance_id, *base_instance, - *draw_id, *view_index, *is_indexed_draw; + struct ir3_instruction *vertex_id, *instance_id, *view_index; /* For fragment shaders: */ struct ir3_instruction *samp_id, *samp_mask_in;