diff --git a/.pick_status.json b/.pick_status.json index cc3808b4ea3..54118b3c651 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1584,7 +1584,7 @@ "description": "radeonsi/gfx11: fix programming of PA_SC_BINNER_CNTL_1.MAX_ALLOC_COUNT", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "25a66477d0268181121c0436f62b2100b72df068", "notes": null diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index 47485a23feb..ad8906692c9 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -6445,8 +6445,10 @@ static void gfx10_init_gfx_preamble_state(struct si_context *sctx) S_028B50_DONUT_SPLIT_GFX9(24) | S_028B50_TRAP_SPLIT(6)); + /* GFX11+ shouldn't subtract 1 from pbb_max_alloc_count. */ + unsigned gfx10_one = sctx->gfx_level < GFX11; si_pm4_set_reg(pm4, R_028C48_PA_SC_BINNER_CNTL_1, - S_028C48_MAX_ALLOC_COUNT(sscreen->info.pbb_max_alloc_count - 1) | + S_028C48_MAX_ALLOC_COUNT(sscreen->info.pbb_max_alloc_count - gfx10_one) | S_028C48_MAX_PRIM_PER_BATCH(1023)); if (sctx->gfx_level >= GFX11_5)