How is depth buffer computed by opengl ?

How is depth buffer computed by opengl ?

Is it a linear interpolation of Z Vertex coordinates ?
Is it a linear interpolation of Vertex-Origine distances ? (sqrt(X^2+Y^2+Z^2))
Is it a per-pixel Vertex-Origine distance computation ?
Or something else… ?

http://www.sgi.com/software/opengl/advanced98/notes/node25.html
http://www.cs.kuleuven.ac.be/cwis/research/graphics/INFOTEC/viewing-in-3d/node8.html

thanks