Quote Originally Posted by GClements View Post
If a draw call renders multiple primitives which modify a given pixel, the pixel's value at the end of the draw call must be that resulting from the last primitive which included that pixel.

If depth tests are enabled, the rendering order still matters in cases where both primitives have the same depth value for the pixel (if the depth comparison is GL_LESS or GL_GREATER, the second primitive will fail the test and the value from the first primitive will be used; if the comparison is GL_LEQUAL or GL_GEQUAL, the second primitive will pass the depth test and the value from the second primitive will be used).

Additionally, depth tests and blending involve a read-modify-write operation on the framebuffer. For each primitive, the value read must be that written by the preceding primitive.

But if two primitives can easily be determined not to overlap, then none of this matters. The two primitives can be rendered in either order or in parallel, which may allow for higher utilisation of the GPU.
Really interesting. And since the OP uses point size, this happens even more often (square of the pixel size).