R600: Finally DX10 Hardware from ATI

Setup Engine

The Setup Engine is located between the command processor and the ultra-threaded dispatch processor. Notice the programmable tessellator as part of the setup engine?

Characteristically, ATI has had a typical primitive assembly setup / scan converter

because it had a separate vertex shader. You could consider the area before the vertex shader as the setup engine. ATI now only has one shader waiting for all of the different data streams coming in. For this reason, everything between the command processor and the shader core is the shader setup engine.

This engine will do at least three kinds of processing in order to get everything ready for the shaders. Once finished, it will send it into the shader.

Vertex:
It will do all of the vertex assembly, tessellation, addresses of the vertices to be fetched, gets the indices and does some math associated with it. The shader fetches vertices with the data that was computed by the setup unit and then send it down for all of the vertex processing.

Geometry:
It is the same way with geometry. It will fetch all of the near-neighbor information and primitive information. There is a lot of addressing computation done before sending it down to the shader for data computation.

Pixel:
This still does the classic pixel setup. That means getting ready for and the actual acts of scan conversion (rasterization), generating the pixel data which will be sent to the shading through the interpolators. After that the shaders (programs) will execute on the pixel shader.