Different GL implementations buffer commands in several different
locations, including network buffers and the graphics accelerator itself.
glFlush empties all of these buffers, causing all issued commands to be
executed as quickly as they are accepted by the actual rendering engine.
Though this execution may not be completed in any particular time period,
it does complete in finite time.

Because any GL program might be executed
over a network, or on an accelerator that buffers commands, all programs
should call glFlush whenever they count on having all of their previously
issued commands completed. For example, call glFlush before waiting for
user input that depends on the generated image.