Fixed Function Units of a GPU: How They Work

The fixed function units of a GPU are responsible for doing a series of specific jobs that stand out for being recurring and repetitive, these units are found in every graphic processor since the beginning of time and independently of any manufacturer, they are essential for graphical performance and take care of different specific tares in the graphical pipeline.

An accelerator or coprocessor is any processing unit that performs a specific task or series of tasks in less time than the main processor, apart from doing it occupying much less area and consumption than using a general purpose processor for it.

Fixed Function Units of a GPU

In GPUs, the closest thing to a general-purpose GPU are the Compute Units where the shader programs run, but there are certain graphical tasks that are performed by specialized units.

Fixed function units on a GPU

DX12 Ultimate

To understand how the graphics are rendered we have to understand that this works as a factory that produces in various stages, think of the different triangles that make up the scene in a bun that is molded and cooked until reaching the final packaging, but instead of a bun what we have is an image on the screen.

There are two kinds of stages in a GPU, some are executed through a shader program in Compute Units or SM, the others make use of fixed function units. The process is directed by the command processors that are the units that move the data through the GPU in the different stages of the graphical pipeline.

Each GPU unit, regardless of whether it is a fixed function or a Compute Unit, receives input data that is processed by a program. In the case of accelerators or fixed function units, what they do is apply a program that already has a microprogram that has been installed by the GPU manufacturer.

Fixed function units in a GPU

NVIDIA GPU

Here we make a list of the most common and most used fixed function units in a GPU.

Without them, it would be the Compute Units through shader programs that would have to carry out these tasks, requiring a larger chip and consuming a greater amount of energy.

Fixed function unit for rasterization

They are responsible for taking the triangles and turning them into fragments, which consists of projecting them onto the camera to turn them into a group of pixels that the GPU will then have to colorize.

It is one of the most complex stages of 3D graphics and its implementation in the form of a dedicated accelerator is what led to the birth of 3D graphics cards.

Fixed function unit for texture filtering

Texture Unit Función Fija

It is normally located within the Compute Unit, connected to the data cache, its job is none other than to apply the bilinear, trilinear anisotropic filter. It is based on taking several samples of pixels to do its work.

All contemporary GPUs make use of texture units grouped 4 by 4, with 16 connections to the data cache, allowing you to apply the bilinear filter at 100% texturing rate, the trilinear filter at 50%, and the anisotropic 25%.

They are also combined with the Compute Units to run the Pixel or Fragment Shaders programs, from where the values of the textures are manipulated.

Fixed unit of function for tessellation

Teselación

It is responsible for performing what we call subdivision of surfaces, which consists of dividing the vertices of a model into several different ones without losing its original shape.

The tessellation unit operates before the raster unit and is a double-edged sword as excessive tessellation is pointless on very distant objects and can cause a bottleneck with the raster unit.

On the other hand, more advanced tessellation units can apply displacement mapping, which is the generation of geometry in a model from a displacement map, and even generate particles.

Culling unit

It is responsible for eliminating the superfluous geometry of the stage, that is, the one that is too small, is hidden by another element that prevents its visualization or is outside the scene.

Your job is to remove the triangles that meet those three requirements from the screen list.

Raster Output

amd rbe función fija

The Raster OutPut or ROP is a unit in charge of generating the image buffers, it is therefore a unit that can write directly to the VRAM, although in more contemporary GPUs it can do so over the L2 Cache and in the case of the Tiles. Renderers does it in an internal memory of the GPU itself.

It works in two stages during the pipeline, the first in the rasterization stage where it generates the Z-Buffer, an image buffer that indicates how far each element of the scene is from the camera. The second after the texturing where it generates the color buffers in RGBA format.

Ray Intersection Unit for Ray Tracing

RayTracingBase

It is the unit in charge of calculating the intersection of the rays with the surfaces in Ray Tracing, we have a tutorial about its operation, you can find it as ” What is how and how do RT Cores for Ray Tracing work?