Pixel Processor

Zynq UltraScale+ Device Technical Reference Manual (UG1085)

Document ID
UG1085
Release Date
2022-09-15
Revision
2.3 English

The pixel processor uses a list of primitives generated by the geometry processor to produce a final image that is displayed on the screen. There are two pixel processors. This Figure is a top-level diagram of a pixel processor.

Figure 5-4:      Pixel Processor Block Diagram

X-Ref Target - Figure 5-4

X15302-pixel-proc-block.jpg

The pixel processor consists of the following.

A polygon list reader that reads the polygon lists from main memory and executes commands from the lists.

The render state words (RSWs) component is a data structure in main memory that contains the render state of polygons. The different pipeline stages in the renderer each reference the RSWs to determine how to process the primitives.

The vertex loader fetches the required vertices from memory for each primitive in the polygon list.

The triangle setup unit takes data from the vertex loader and polygon list reader and uses vertex data to compute coefficients for edge equations and varying interpolation equations.

The rasterizer takes coefficients and equations from the triangle setup unit and uses these to divide polygons into fragments.

The fragment shader is a programmable unit that calculates how each fragment of a primitive looks.

The blending unit blends the calculated fragment value into the current frame buffer value at that position.

The tile buffers take inputs from the fragment shader. The buffers perform various tests on the fragments, for example, Z tests and stencil tests. When the tile is fully rendered it is written to the frame buffer.

The writeback unit writes the content of the tile buffer to system memory after the tile is completely rendered.

The pixel processor performs the rendering tasks shown in Table: Pixel Processor Rendering Tasks.

Table 5-2:      Pixel Processor Rendering Tasks

Processing Task

Description

Triangle setup

To prepare the primitive for rendering by calculating various data that is required to rasterize and shade the primitive.

Rasterization

To divide the primitive into independent fragments. These are fragment-sized pieces of primitive that the shader pipeline processes. Fragments that could be visible proceed to the fragment shading stage, and fragments that are certain not to be visible are discarded.

Fragment shading

To determine how the fragment actually looks. In general, the pixel processor calculates a color for the fragment.

Blending

The fragment is blended into the frame buffer to produce the final image.

Producing the frame buffer content

After blending, the fragment becomes a fragment at a certain position in the tile buffer. If no other fragment overwrites that position, the fragment becomes a fragment in the final frame. Multi-sampling techniques to obtain better quality final images can be applied to the fragment at this stage. When the internal tile buffer is completely rendered, it is written to the frame buffer in main memory.