Not quite. In both cases you need to buffer the data at the output of the unit, so that data order can be restored before being presented to the next unit in the pipeline. There are two differences that make the geometry shader much harder to parallellize in practice:
- The vertex shader outputs a fixed-size data set, while the geometry shader outputs a variable-size data set. This introduces problems with parallelizing processing of output from the geometry shader in a way that has no equivalent with vertex shaders.
- The vertex shader dumps all data at once at the end of the program, whereas the geometry shader can dump data continuously during the entire program invocation. (You can maintain vertex order out of the a vertex shader array extremely cheaply by simply not completing a shader program if such completion would cause out-of-order vertices; a geometry shader array doesn't permit you to do that.)