diff --git a/.pick_status.json b/.pick_status.json index 6aae7e452ac..3fa2b1cff81 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -391,7 +391,7 @@ "description": "radv: fix computing the pervertex LDS size with NGG streamout", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/amd/vulkan/radv_shader_info.c b/src/amd/vulkan/radv_shader_info.c index 979dd28ba44..e40570ddeee 100644 --- a/src/amd/vulkan/radv_shader_info.c +++ b/src/amd/vulkan/radv_shader_info.c @@ -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