Open NicolBolas opened 5 years ago
It should also be noted that the Vulkan definition does not include any mention of the rasterizer. So when it says "is processed", that can only refer to what gets read into the system.
This issue looks just like an issue that was reported internally: https://gitlab.khronos.org/opengl/API/issues/105.
I'm sure the "processed by the rasterizer" part is wrong. We're discussing internally and I'll report back when we have a conclusion.
The fragment shader definition for
gl_PrimitiveID
is as follows:GLSL 4.6:
OpenGL 4.6 is a bit more specific:
Let's assume that there is no GS present. The above says "the primitive ID counter is incremented after every individual point, line, or polygon primitive is processed". But "processed" by what exactly? The sentence starts by talking about the "drawing command" being the first primitive. But the previous sentence talked about primitives processed by the rasterizer. Which one is being looked at here? Tessellation generates more primitives than are being input, so it matters.
Also, there is a question of how this behaves with instancing and multi-draw. Does starting a new instance count as a "drawing command" for this purpose? In Vulkan, it explicitly says that it does (starting an instance resets the counter).