summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2019-08-29 09:18:54 +0200
committerSamuel Pitoiset <[email protected]>2019-08-29 16:08:37 +0200
commitb650ecfe31215c213876771134bf6685b7765601 (patch)
tree3e5546bcd0c3b3587809cc63238b2eb5aefc6a3d
parente64091ebd4187a383b122060d358780a376772a6 (diff)
radv/gfx10: compute the LDS size for exporting PrimID for VS
Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r--src/amd/vulkan/radv_pipeline.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index ecd4edf6500..3e448db1fd5 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -1751,6 +1751,15 @@ calculate_ngg_info(const VkGraphicsPipelineCreateInfo *pCreateInfo,
if (es_info->info.so.num_outputs)
esvert_lds_size = 4 * es_info->info.so.num_outputs + 1;
*/
+
+ /* LDS size for passing data from GS to ES.
+ * GS stores Primitive IDs (one DWORD) into LDS at the address
+ * corresponding to the ES thread of the provoking vertex. All
+ * ES threads load and export PrimitiveID for their thread.
+ */
+ if (!radv_pipeline_has_tess(pipeline) &&
+ pipeline->shaders[MESA_SHADER_VERTEX]->info.vs.export_prim_id)
+ esvert_lds_size = MAX2(esvert_lds_size, 1);
}
unsigned max_gsprims = max_gsprims_base;