modelview/projection matrix multiply order

I had a question regarding the order in which the projection and modelview matrices are multiplied with each other and then to the point itself. Most of the books, when talking about the general theory, talk about muliplying the point by the modelview matrix, then the projection matrix, then the viewport matrix. I imagine in practice these matrices might be multiplied together once and then applied to all the points in a scene. Can someone diagram the proper order for these, ex:

modelviewMatrix x projMatrix x point etc.

Thanks!

I don’t think it’s enforced whether the actual implementation does.

PMV

or

P(MV)

This is why there is a nice section in the ARB_vertex_program specification about invariance.