How to assign global IDs to primitives in CPU and read back in Geometry shader

I need to assign global IDs to each primitive in my scene so that I can do individual rendering on them in Shaders. I already found that geometry shader provides primitive IDs however they are per render call. Is there a way to ensure, primitive IDs will stay the same within the same mesh across different render calls? So that I could assign a global ID offset value per mesh and combine it with the local id (primitiveID in Geometry shader).

Does unity ever culls some primitives from a mesh in case they are outside the FOV of camera? I suppose then the primitiveIDs would naturally change between draw calls.

Have you found the primitive ids are changing between calls?

Unity won’t partially cull primitives within a mesh.