BACKGROUND OF THE INVENTION

This invention relates to systems and methods for graphics processing.

In a 3D graphics processing system, objects of a scene are represented with groups of primitives, which are typically projected, scan converted, textured, and shaded during rendering of the scene. A primitive has a simple geometric shape, often a triangle, defined by the positions of one or more vertices (e.g. three vertices in the case that the primitive is a triangle) to which a texture can be applied. The rendering of a 3D scene processes the primitives to form an image comprising an array of image pixels.

During rendering of a scene, a graphics processing unit (GPU) fetches texture data, which is stored in memory, to apply texture to objects in the scene. This transfer of data between the GPU and the memory utilises significant memory bandwidth and consumes power. Furthermore, large textures require a large amount of memory to be allocated to them, which can lead to a shortage of memory for use by other applications.

An example of a large texture is a shadow map, which is used to add shadows to a scene. The basic principle of shadow mapping is to render a scene from the point of view of a light source for the scene (such as the sun) and to store the depth of every surface that is visible (i.e. every surface that is lit by the light source). Next, the regular scene (from the camera's point of view) is rendered and the depth of every point drawn is compared to the stored depths to determine if the drawn point is in front of or behind the stored depth from the point of view of the light source. If the depth of a point is behind a lit surface, then that point is in shadow. Otherwise, it is lit. The depth information is stored as a texture (i.e. as a shadow map), which requires a large amount of memory, especially for high resolution shadow maps. Generating and storing a high resolution shadow map requires significant processing power, a large amount of memory and a high memory bandwidth. As the transfer of data between memory and the GPU is a significant cause of power consumption, reductions that are made in this area will allow the GPU to operate at lower power. Additionally, any reductions in memory bandwidth use and the hardware optimisations associated with it can boost application performance.

There is, therefore, a need to reduce memory and processing overheads in a graphics processing system.

BRIEF SUMMARY OF THE INVENTION

According to a first aspect of the present invention there is provided a graphics processing system comprising: a tiling unit configured to tile a first view of a scene into a plurality of tiles and generate a list of primitives associated with each tile; a processing unit configured to identify a first subset of the tiles that are each associated with at least a predetermined number of primitives in dependence on the list; and a rendering unit configured to render to a render target each of the identified tiles.

The system may further comprise memory and a memory management unit configured to allocate a portion of the memory to each of the identified tiles.

The rendering unit may be configured to store data resulting from the render of each identified tile at the allocated portion of memory for that tile.

The memory management unit may be further configured to not allocate a portion of memory for each of the plurality of tiles that are not identified by the processing unit.

The rendering unit may be further configured to, for a subsequent render, access memory locations associated with the tiles that are not identified and the memory management unit is further configured to return a predefined value in response to the access.

The rendering unit may be further configured to not render tiles that are not identified by the processing unit.

The number of tiles identified in the first subset may be less than the number of tiles the scene is tiled into.

The tiling unit may be configured to generate the list of primitives associated with each tile by determining which primitives are located at least partially within that tile.

The processing unit may be configured to identify a second subset of the tiles that are associated with parts of the scene that are visible in a second view. The rendering unit may be configured to render each of the tiles that are identified in both the first and second subset.

The processing unit may be configured to identify a second subset of the tiles that are associated with parts of the scene that are visible in a second view. The memory management unit may be configured to allocate a portion of the memory to each of the tiles identified in both the first and second subset.

According to a second aspect of the present invention there is provided a graphics processing system comprising: memory for storing data; a tiling unit configured to tile a first view of a scene into a plurality of tiles; a rendering unit configured to render each tile that is associated with at least a predetermined number of primitives and output render data resulting from the render of that tile; and a memory management unit configured to: detect the render data output for each rendered tile and allocate a portion of memory for that rendered tile; and store the render data for each rendered tile at the portion of memory allocated for that tile.

The memory management unit may be further configured to not allocate a portion of memory for each of the plurality of tiles that are not associated with at least a predetermined number of primitives.

The rendering unit may be further configured to, for a subsequent render, access the memory to read data associated with tiles that are not associated with at least the predetermined number of primitives and the memory management unit is further configured to return a predefined value in response to said access.

The rendering unit may be further configured to not output data for tiles that are not associated with at least a predetermined number of primitives.

The system may further comprise a processing unit configured to identify a subset of the tiles that are associated with parts of the scene that are visible in a second view, wherein the rendering unit may be configured to render each of the tiles that are identified in the subset and associated with at least the predetermined number of primitives.

The render target may be a texture. The render data may be data for a texture. The rendering unit may be configured to apply the texture to the scene in a subsequent render of the scene. The texture may be applied to a or the second view of the scene, the second view being different to the first view. The texture may be a shadow map.

The predetermined number may be equal to or greater than one.

According to a third aspect of the present invention there is provided a graphics processing method comprising: tiling a first view of a scene into a plurality of tiles; generating a list of primitives associated with each tile; identifying a first subset of the tiles that are each associated with at least a predetermined number of primitives in dependence on the list; and rendering to a render target each of the identified tiles.

The method may further comprise allocating a portion of memory to each of the identified tiles.

The method may further comprise storing data resulting from the render of each identified tile at the allocated portion of memory for that tile.

The method may further comprise not allocating a portion of memory for each of the plurality of tiles that are not identified.

The method may further comprise, for a subsequent render, accessing memory locations associated with the tiles that are not identified and returning a predefined value in response to the access.

The method may further comprise not rendering tiles that are not identified.

The number of tiles identified in the first subset may be less than the number of tiles the scene is tiled into.

Generating the list of primitives associated with each tile may comprise determining which primitives are located at least partially within that tile.

The method may further comprise: identifying a second subset of the tiles that are associated with parts of the scene that are visible in a second view; and rendering each of the tiles that are identified in both the first and second subset.

The method may further comprise: identifying a second subset of the tiles that are associated with parts of the scene that are visible in a second view; and allocating a portion of memory to each of the tiles identified in both the first and second subset.

According to a fourth aspect of the present invention there is provided a graphics processing method comprising: tiling a first view of a scene into a plurality of tiles; rendering each tile that is associated with at least a predetermined number of primitives and outputting render data resulting from the render of that tile; detecting the outputted render data for each rendered tile and allocating a portion of memory for that rendered tile; and storing the render data for each rendered tile at the portion of memory allocated for that tile.

The method may further comprise not allocating a portion of memory for each of the plurality of tiles that are not associated with at least a predetermined number of primitives.

The method may further comprise, for subsequent rendering, accessing memory to read data associated with tiles that are not associated with at least the predetermined number of primitives and returning a predefined value in response to said access.

The method may further comprise not outputting render data for tiles that are not associated with at least a predetermined number of primitives.

The method may further comprise identifying a subset of the tiles that are associated with parts of the scene that are visible in a second view, wherein the rendering step may comprise rendering each of the tiles that are identified in the subset and associated with at least the predetermined number of primitives.

The render target may be a texture. The render data may be data for a texture. The rendering unit may be configured to apply the texture to the scene in a subsequent render of the scene. The texture may be applied to a second view of the scene that is different to the first view. The texture may be a shadow map.

The predetermined number may be equal to or greater than one.

According to a fifth aspect of the present invention there is provided a graphics processing system configured to perform the method described above.

The graphics processing systems described above may be embodied in hardware on an integrated circuit.

According to a sixth aspect of the present invention there is provided a method of manufacturing, at an integrated circuit manufacturing system, the graphics processing system described above.

According to a seventh aspect of the present invention there is provided an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the manufacturing system to manufacture the graphics processing system described above.

According to an eighth aspect of the present invention there is provided a non-transitory computer readable storage medium having stored thereon an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the manufacturing system to manufacture the graphics processing system described above.

According to a ninth aspect of the present invention there is provided an integrated circuit manufacturing system comprising: a non-transitory computer readable storage medium having stored thereon a computer readable integrated circuit description that describes a graphics processing system; a layout processing system configured to process the integrated circuit description so as to generate a circuit layout description of an integrated circuit embodying the graphics processing system; and an integrated circuit generation system configured to manufacture the graphics processing system according to the circuit layout description, wherein the graphics processing system comprises: a tiling unit configured to tile a first view of a scene into a plurality of tiles and generate a list of primitives associated with each tile; a processing unit configured to identify a first subset of the tiles that are each associated with at least a predetermined number of primitives in dependence on the list; and a rendering unit configured to render to a render target each of the identified tiles.

According to a tenth aspect of the present invention there is provided computer program code for performing any of the methods described above.

According to an eleventh aspect of the present invention there is provided a non-transitory computer readable storage medium having stored thereon computer readable instructions that, when executed at a computer system, cause the computer system to perform any of the methods described above.

