Note: This article has been converted from Kristof's old PowerVR Site. Seeing as it still bears relavence to PowerVR architectures available today (Kyro) it is still a useful source of reference. (Wavey - 27/01/2001)

There have been lots of questions concerning the Tile based rendering technique used in all PowerVR product. Some competitors (both 3Dfx and Nvidea) of PowerVR keep saying that the technique doesn't work or will run into trouble when scenes get more complex. I will try to explain here how the Tile based Rendering works and why it isn't going to run into trouble anytime soon. I will try to keep it as simple as possible. But when I do go into more detail I will place a grey background behind that text, the information in there is not necessary to understand the following steps, its just there for people who want to know more.

Building the scene data

This first step is mainly carried out by the main CPU. The CPU runs a game written using D3D or OpenGL. The output of those games is standardized and is based on triangles. This output is placed in a buffer, the scene buffer. For PVRSG this buffer has to be big enough to contain all triangles of a complete scene (one frame or image). For traditional renderer this buffer can be smaller. This scene building is done triangle per triangle until the whole scene is finished. The following figure shows the data flow:



Now the scene data should be double buffered to allow full parallel processing. This takes up memory space but with memory prices at an all time low this is not a problem. After all the average machine nowadays had 32 Mb with lots of machines already having 64 or even 128 Mb on board.

Tile Sorting (or Binning)

This is the first action that PVRSG is doing that is not necessary in the traditional architecture. The traditional architecture immediately starts to render each polygon in the scene buffer. PVRSG will try to render only those pixel that are visible. To do that some extra setup is needed and this is the first step to provide that necessary extra setup.

There have been lots of questions concerning the Tile based rendering technique used in all PowerVR product. Some competitors (both 3Dfx and Nvidea) of PowerVR keep saying that the technique doesn't work or will run into trouble when scenes get more complex. I will try to explain here how the Tile based Rendering works and why it isn't going to run into trouble anytime soon. I will try to keep it as simple as possible. But when I do go into more detail I will place a grey background behind that text, the information in there is not necessary to understand the following steps, its just there for people who want to know more. Building the scene data This first step is mainly carried out by the main CPU. The CPU runs a game written using D3D or OpenGL. The output of those games is standardized and is based on triangles. This output is placed in a buffer, the scene buffer. For PVRSG this buffer has to be big enough to contain all triangles of a complete scene (one frame or image). For traditional renderer this buffer can be smaller. This scene building is done triangle per triangle until the whole scene is finished. The following figure shows the data flow : Now the scene data should be double buffered to allow full parallel processing. This takes up memory space but with memory prices at an all time low this is not a problem. After all the average machine nowadays had 32 Mb with lots of machines already having 64 or even 128 Mb on board. Tile Sorting (or binning) This is the first action that PVRSG is doing that is not necessary in the traditional architecture. The traditional architecture immediately starts to render each polygon in the scene buffer. PVRSG will try to render only those pixel that are visible. To do that some extra setup is needed and this is the first step to provide that necessary extra setup. The Tile Sorting or binning will determine in what Tile(s) a triangle is located. This is a simple sorting process that works by looking at the bounding box of the triangle. This sorting is carried out at the same moment as the CPU is generating triangles. So each triangle written to the scene buffer (see Building the scene data) is also read by the Tile Sorting Setup of the PVRSG chip. This part of the chip will than determine the tiles in which this triangle is located. For every tile there is a buffer. This buffer contains pointers to the triangles in the scene buffer. This is simple : each triangle in the scene buffer has a number. There is a buffer for each tile and that buffer contains the number of the polygons that are located in that tile, the number is the number from the scene buffer. We will describe this further with an example: