radv/gfx10: compute the LDS size for exporting PrimID for VS
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 29 Aug 2019 07:18:54 +0000 (09:18 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 29 Aug 2019 14:08:37 +0000 (16:08 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_pipeline.c

index ecd4edf6500c13017cf0c7d29ecbb602e70a7780..3e448db1fd532351deafd25ddcd38651cb31799e 100644 (file)
@@ -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;