Yes, Relic is right somehow.
The exact info about that is:
OpenGL 2.0 introduces a new point sprite mode called
GL_POINT_SPRITE_COORD_ORIGIN that can be set to GL_UPPER_LEFT (the default) or
GL_LOWER_LEFT. The earlier ARB_point_sprite and NV_point_sprite extensions lack
this mode.
When rendering to windows, leave the GL_POINT_SPRITE_COORD_ORIGIN state set to its
default GL_UPPER_LEFT setting. Using GL_LOWER_LEFT with windowed rendering will
force points to be transformed on the CPU.
When rendering to pixel buffers (commonly called pbuffers) or frame buffer objects
(commonly called FBOs), change the GL_POINT_SPRITE_COORD_ORIGIN state set to
GL_LOWER_LEFT setting for fully hardware accelerated rendering. Using GL_UPPER_LEFT
with pbuffer and FBO rendering will force points to be transformed on the CPU.
NVIDIA supports (on all its GPUs) the NV_point_sprite extension that provides one
additional point sprite control beyond what OpenGL 2.0 provides. This extension
provides an additional GL_POINT_SPRITE_R_MODE_NV that controls how the R texture
coordinate is set for points. You have the choice to zero R (GL_ZERO, the default), use the
vertex’s S coordinate for R prior to S being overridden for the point sprite mode (GL_S),
or the vertex’s R coordinate (GL_R).