Geometry Pipeline (Vertex Shaders and Setup Engine)

The Geometry pipeline consists of the vertex shader engines, followed by the Backface Culling engine, Clipping, Perspective Divide, Viewport Transform, Geometry Assembly and finally the Triangle Setup engine.

Click for a bigger version
 

While R300 featured 4 Vertex Shader units, R420 extends this to 6 units which, coupled with the increased clock rates and a few extra changes, can double the vertex performance of X800 in comparison to 9800 XT. The throughput per clock is increased to a maximum of 1.5 triangles per clock.

The Vertex Shader engines themselves remain as they did with R300, which, as you'll note features no texture lookup capabilities limiting it to Vertex Shader 2.0 operation. The vertex shaders are co-issue capable with up to 5D operations in that the vector ALU is a full 4 component ALU with a separate Scalar ALU. The flow control unit is for constant based branching, as it was with R300, and program looping. The Vertex Shaders are 32-bit Floating Point precision.

The Vertex Shader isn't exactly the same as R300 in that SIN and COS instructions have been added for single cycle execution, as opposed to utilising a DirectX macro.

 

Once the vertex data has gone through the back of the Vertex Shader Pipeline it comes to the Setup Engine which assembles the vertices into actual triangles and assigns the actual polygon parameters such as texture co-ordinates, colour, Z and fragment shader details. The setup unit then is also responsible for dividing the triangles into the tiled regions such that they are then dispatched to the quad pipelines.