GPU Bandwidth Saving, Delta Color Compression

Delta Color Compression

The marriage between GPUs and very high bandwidth RAM is a tradition, but there are times when the bandwidth of this type of memory is not enough to feed the needs of the graphics to which they are connected. This is where Delta Color Compression or more commonly known as DCC comes in, a type of data compression that saves GPU bandwidth with memory.

The DCC is one of the technologies integrated in graphics cards, what you will have seen most in the technical specifications of graphics cards for PC during the last years.

How Delta Color Compression Works

Delta Color Compression

In mathematics, the delta is a Greek letter that capitalized (Δ), means “change” and in this case we are concerned with precisely what we do the delta between two frames to compress the image buffer from the second frame.

At a conceptual level, the image buffer is nothing more than a table in which the color value of each pixel is stored in each of its cells, shower “table” is read by the screen controller which then sends it to the screen itself. screen.

The idea of the DCC is the following: instead of writing down the complete color values, what we do in each frame is writing them down as a sum with respect to the color of the previous frame in each one of the pixels.

It is not texture compression

Texture compression is different from DCC in that they have completely different applications when applied at different stages of the real-time 3D graphics rendering pipeline.

The reason for this is that the screen controller, which is in charge of reading the final image buffer in the VRAM and sending it to the screen, is not able to decompress the compressed textures on the fly. The only time in which the image buffer is compressed as if it were a texture is because it is necessary to reuse its data for post-processing purposes where the image buffer is treated as if it were a huge texture and therefore it is compressed as such. .

Triangle Pipeline

But for you to understand it better, the DCC only acts in the final part of the 3D pipeline, when the pixels of the scene have already been textured and have to be sent to the final image buffer to be displayed on the screen.

Texture compression is generally applied at the Fragment Shader stage (Pixel Shader in DirectX) while DCC is applied during the Per-sample operations stage, once the scene has already been textured.

The ratio of fill rate to bandwidth

There is a direct relationship between the fill rate, which is the number of pixels that a GPU can write to the image buffer per second, and the memory bandwidth with the GPU. When a GPU is lacking in bandwidth then the fill rate drops.

The theoretical fill rate that a GPU can reach is always calculated as follows:

  • On NVIDIA: Number of ROPS * GPU clock speed.
  • At AMD: RB number * GPU clock speed. * 4.

But the one that can be reached with the memory bandwidth:

  • Memory bandwidth / number of color bits per pixel = memory fill rate.

An example of how the DCC can help in cases where there is not enough bandwidth is the following graphic:

dcc

In this we can see how the Gpixel / s ratio decreases when the DCC is not applied due to lack of sufficient bandwidth.

Keep in mind that what a GPU ultimately does is draw pixels on the screen and if the speed at which it draws them, the fill rate, is not high enough then its performance suffers. Hence, it is important to have good VRAM with a GPU more than anything, but the implementation of Delta Color Compression helps it not fall short when it comes to bandwidth.