Search

US-20260127813-A1 - Primitive Processing in a Graphics Processing System

US20260127813A1US 20260127813 A1US20260127813 A1US 20260127813A1US-20260127813-A1

Abstract

A graphics processing system has a rendering space which is divided into tiles. Primitives within the tiles are processed to perform hidden surface removal and to apply texturing to the primitives. The graphics processing system includes a plurality of depth buffers, thereby allowing a processing module to process primitives of one tile by accessing one of the depth buffers while primitive identifiers of another, partially processed tile are stored in another one of the depth buffers. This allows the graphics processing system to have “multiple tiles in flight”, which can increase the efficiency of the graphics processing system.

Inventors

  • Jonathan Redshaw

Assignees

  • IMAGINATION TECHNOLOGIES LIMITED

Dates

Publication Date
20260507
Application Date
20260105
Priority Date
20131213

Claims (20)

  1. 1 . A graphics processing system configured to use a rendering space which is sub-divided into a plurality of tiles, each of the plurality of tiles containing a plurality of sample positions, the graphics processing system comprising: a plurality of depth buffers, each of the depth buffers being configured to be dynamically associated with one tile at a time of the rendering space, and configured to store a depth value for each of the plurality of sample positions within the tile; and a processing module configured to perform hidden surface removal for a primitive of a tile by comparing depth values for that primitive with depth values stored in the depth buffer associated with the tile while another one of the depth buffers stores depth values for a different partially processed tile.
  2. 2 . The graphics processing system of claim 1 , wherein the processing module is configured to update one or more depth values stored in the depth buffer associated with a tile as part of performing the hidden surface removal for a primitive of the tile.
  3. 3 . The graphics processing system of claim 1 , further comprising a plurality of tag buffers configured to be dynamically associated with the tiles such that a set of one or more of the tag buffers is associated with a particular tile, said set of tag buffers being configured to store primitive identifiers identifying primitives determined by the hidden surface removal to be visible at each sample position within the particular tile.
  4. 4 . The graphics processing system of claim 3 , wherein if the set of tag buffers associated with the particular tile includes more than one tag buffer, then primitive identifiers stored at corresponding sample positions in the tag buffers of the set represent overlapping layers of primitives.
  5. 5 . The graphics processing system of claim 3 , wherein the graphics processing system comprises more tag buffers than depth buffers.
  6. 6 . The graphics processing system of claim 3 , further comprising one or more texturing engines configured to apply texturing to the primitives of tiles identified by primitive identifiers stored in the tag buffers associated with the tiles.
  7. 7 . The graphics processing system of claim 6 , wherein the graphics processing system is configured to send primitive identifiers in the set of tag buffers associated with the particular tile to the same texturing engine, such that texturing that is applied to the visible primitives of the particular tile is applied by the same texturing engine.
  8. 8 . The graphics processing system of claim 6 , wherein the number of texturing engines is the same as the number of depth buffers.
  9. 9 . The graphics processing system of claim 1 , further comprising a control module configured to control which primitives are processed by the processing module to thereby control switching of the processing module between processing primitives for different tiles.
  10. 10 . The graphics processing system of claim 9 , further comprising a plurality of queues storing primitives for a respective plurality of tiles, wherein the control module is configured to select one of the queues, wherein a primitive from the selected queue is processed by the processing module.
  11. 11 . The graphics processing system of claim 9 , wherein the control module is configured to control which primitives are processed by the processing module based on state information relating to the state of the graphics processing system.
  12. 12 . The graphics processing system of claim 11 , further comprising a plurality of tag buffers configured to be dynamically associated with the tiles such that a set of one or more of the tag buffers is associated with a particular tile, said set of tag buffers being configured to store primitive identifiers identifying primitives determined by the hidden surface removal to be visible at each sample position within the particular tile, optionally wherein the graphic processing system further comprises one or more texturing engines configured to apply texturing to the primitives of tiles identified by primitive identifiers stored in the tag buffers associated with the tiles, wherein the state information comprises an indication that a texturing engine is idle or is about to become idle, and wherein the control module is configured to prioritise the processing of primitives for a tile if the texturing engine which is configured to apply texturing to the primitives of that tile is indicated as being idle or is indicated as being about to become idle.
  13. 13 . The graphics processing system of claim 1 , wherein the processing module is configured to receive primitives and tiling data, wherein for each primitive the tiling data indicates one or more tiles in which that primitive will be processed.
  14. 14 . The graphics processing system of claim 1 , wherein another one of the depth buffers stores depth values for the different partially processed tile for which not all of the primitives associated with the partially processed tile have finished being processed.
  15. 15 . A method of processing primitives in a graphics processing system which is configured to use a rendering space sub-divided into a plurality of tiles, each of the plurality of tiles containing a plurality of sample positions, the method comprising: storing depth values in a plurality of depth buffers, each of the depth buffers being dynamically associated with one tile at a time of the rendering space, and being configured to store a depth value for each of the plurality of sample positions within the tile; and performing hidden surface removal at the processing module for a primitive of a tile by comparing depth values for that primitive with depth values stored in the depth buffer associated with the tile while another one of the depth buffers stores depth values for a different partially processed tile.
  16. 16 . The method of claim 15 , further comprising updating one or more depth values stored in the depth buffer associated with a tile as part said performing hidden surface removal for a primitive of the tile.
  17. 17 . The method of claim 15 , further comprising: dynamically associating a plurality of tag buffers with the tiles such that a set of one or more of the tag buffers is associated with a particular tile; and storing, in said set of tag buffers, primitive identifiers identifying the primitives determined by the hidden surface removal to be visible at each sample position within the particular tile.
  18. 18 . The method of claim 17 , further comprising applying texturing to the primitives of tiles identified by primitive identifiers stored in the tag buffers associated with the tiles, wherein the texturing is applied by one or more texturing engines, and wherein the method comprises sending primitive identifiers in the set of tag buffers associated with the particular tile to the same texturing engine, such that texturing that is applied to the visible primitives of the particular tile is applied by the same texturing engine.
  19. 19 . The method of claim 15 , further comprising controlling which primitives are processed by the processing module to thereby control switching of the processing module between processing primitives for different tiles.
  20. 20 . A non-transitory computer readable storage medium having encoded thereon processor executable instructions that when executed cause at least one processor to: store depth values in a plurality of depth buffers, each of the depth buffers being dynamically associated with one tile at a time of a graphics rendering space sub-divided into a plurality of tiles, each of the plurality of tiles containing a plurality of sample positions, and being configured to store a depth value for each of a plurality of sample positions within the tile; and perform hidden surface removal at the processing module for a primitive of a tile by comparing depth values for that primitive with depth values stored in the depth buffer associated with the tile while another one of the depth buffers stores depth values for a different partially processed tile.

Description

BACKGROUND 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. One step in the rendering process is to determine, for each of a plurality of sample positions of the image, which of the primitives is/are visible. This process is called hidden surface removal (HSR). Primitives, or parts of primitives, which are hidden by other primitives do not need to be considered further in the render. In order to perform HSR, the depths (i.e. the distances from the viewpoint) of primitives in the scene for each sample position are considered in order to determine which primitives are visible at each pixel position. Primitives may be opaque or translucent. A rendering technique in which textures are used to create holes in otherwise opaque primitives is known as “punch through”. For opaque primitives, the final rendered pixel value at a pixel position (which may correspond to one or more of the sample positions) will usually be given by the textured primitive which has the smallest depth value at that pixel position. For translucent primitives the final rendered pixel value at a pixel position may be given by a blend of more than one of the textured primitives which have the smallest depth values at that pixel position. When a scene contains primitives whose textures include punch through, the final rendered pixel value at a pixel position may be determined by primitives other than the primitive with the smallest depth value at that pixel position. FIG. 1 shows a graphics processing system 100 comprising a processing module 102 which may be referred to as an Image Synthesis Processor (ISP), a depth buffer 104 which may be referred to as a Z-buffer, a tag sorter module 106, a texturing and shading engine 108 which may be referred to as a Unified Shading Cluster (USC), and a pixel buffer 110. In operation, primitives (e.g. vertex coordinates and primitive identifiers) are received at the ISP 102, and the ISP performs HSR on the primitives to determine which primitives are visible at each of a plurality of sample positions of the image to be rendered. In order to implement the HSR for a typical render, the ISP is programmed to store in depth buffer 104, for each sample position, a depth value representing the depth of the closest primitive which has been processed so far by the ISP 102, such that the ISP 102 can compare the depth of a primitive currently being processed with the depth values stored in the depth buffer 104 to determine whether the current primitive is visible. The results of the HSR performed by the ISP 102 are used to update the depth values stored in the depth buffer 104 accordingly. It is noted that in some Systems, the depth buffer 104 and tag sorter module 106 may be described as components of the ISP 102. The tag sorter module 106 comprises a tag buffer which is configured to store, for each sample position, a primitive identifier (ID) of a visible primitive at that sample position as determined by the HSR performed by the ISP 102. The tag sorter module 106 also comprises a controller to control the updating and flushing of the tag buffer. Primitive identifiers are flushed to the USC 108. In response to receiving the flushed primitive identifiers, the USC 108 will retrieve the identified primitives and will retrieve texture data in order to apply texturing and shading to the primitives identified by the flushed primitive IDs. The controller in the tag sorter module 106 controls when primitive identifiers are flushed to the USC 108. For example, primitive identifiers may be flushed to the USC 108 when the primitives for the image have all been processed by the ISP 102. Primitive identifiers may also be flushed to the USC 108 when primitive identifiers of translucent primitives, or primitives with texturing that includes punch through, are to be stored in the tag buffer. This is so that these primitives can be properly blended. SUMMARY This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. There is provided a graphics processing system having a rendering space sub-divided into tiles, the graphics processing system comprising: a plurality of depth buffers, each of the depth buffers being configured to be dynamically associated with one tile at a time and configured to store a depth