mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 01:20:17 +01:00
radv: fix computing the pervertex LDS size with NGG streamout
The NGG streamout lowering pass allocates space for all outputs which means we have to align our computation. Otherwise, the maximum number of vertices is incorrect and we end up by reaching the maximum allowed LDS size. This code could be shared instead of being duplicated but that's for later. Fixes some transform feedback tests with Zink and RADV_PERFTEST=ngg_streamout on GFX10.3. Cc: 22.3 mesa-stable Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19801>
This commit is contained in:
parent
499abeba60
commit
ba81dcf971
1 changed files with 7 additions and 2 deletions
|
|
@ -1048,8 +1048,13 @@ gfx10_get_ngg_info(const struct radv_device *device, struct radv_pipeline_stage
|
|||
/* LDS size for passing data from GS to ES. */
|
||||
struct radv_streamout_info *so_info = &es_info->so;
|
||||
|
||||
if (so_info->num_outputs)
|
||||
esvert_lds_size = 4 * so_info->num_outputs + 1;
|
||||
if (so_info->num_outputs) {
|
||||
/* Compute the same pervertex LDS size as the NGG streamout lowering pass which allocates
|
||||
* space for all outputs.
|
||||
* TODO: only alloc space for outputs that really need streamout.
|
||||
*/
|
||||
esvert_lds_size = 4 * es_stage->nir->num_outputs + 1;
|
||||
}
|
||||
|
||||
/* GS stores Primitive IDs (one DWORD) into LDS at the address
|
||||
* corresponding to the ES thread of the provoking vertex. All
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue