[Mesa-dev] [PATCH 5/5] radeonsi: calculate optimal GS ring sizes to fix GS hangs on Tonga
Michel Dänzer
michel at daenzer.net
Mon Nov 9 01:50:03 PST 2015
On 09.11.2015 07:00, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> I discovered that increasing the ESGS ring size fixes GS hangs on Tonga,
> so let's do it properly.
>
> There is now a separate init_config_gs_rings state that is not immutable,
> because GS rings are resized when needed.
>
> This also saves some memory. Most apps won't need more than 1MB
> per ring per shader engine.
[...]
> - /* Flush the context to re-emit the init_config state.
> - * This is done only once in a lifetime of a context.
> - */
> - si_pm4_upload_indirect_buffer(sctx, sctx->init_config);
> + /* Set the state. */
> + if (sctx->init_config_gs_rings)
> + si_pm4_free_state(sctx, sctx->init_config_gs_rings, ~0);
> + sctx->init_config_gs_rings = pm4;
> +
> + if (!sctx->init_config_has_vgt_flush) {
> + si_init_config_add_vgt_flush(sctx);
> + si_pm4_upload_indirect_buffer(sctx, sctx->init_config);
> + }
> +
> + /* Flush the context to re-emit the state. */
> sctx->b.initial_gfx_cs_size = 0; /* force flush */
> si_context_gfx_flush(sctx, RADEON_FLUSH_ASYNC, NULL);
Maybe the comment should still say "re-emit the init_config state".
Either way,
Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the mesa-dev
mailing list