IP Library Granted Patent US 12,367,633
Granted Patent B1
US 12,367,633 · App. 18/594,999 · Granted Jul 22, 2025

Data structures, methods and tiling engines for hierarchically storing tiling information in a graphics processing system

Inventors: Diego Jesus (Watford, GB); John W. Howson (St. Albans, GB); Panagiotis Velentzas (Hertfordshire, GB); Robert Brigg (Watford, GB); Xile Yang (Rickmansworth, GB)
Assignee: Imagination Technologies Limited
G06T15/005G06T1/20G06T1/60G06T9/00G06T11/20G06T11/40G06T15/00G06T15/04G06T17/10G06T17/20G06T2210/12
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,367,633
App. No.
18/594,999
Granted
Jul 22, 2025
Kind
B1
Abstract

Methods and tiling engines for tiling primitives in a tile based graphics processing system in which a rendering space is divided into a plurality of tiles. The method includes generating a multi-level hierarchy of tile groups, each level of the multi-level hierarchy comprising one or more tile groups comprising one or more of the plurality of tiles; receiving a plurality of primitive blocks, each primitive block comprising geometry data for one or more primitives; associating each of the plurality of primitive blocks with one or more of the tile groups up to a maximum number of tile groups such that if at least one primitive of a primitive block falls, at least partially, within the bounds of a tile, the primitive block is associated with at least one tile group that includes that tile; and generating a control stream for each tile group based on the associations, wherein each control stream comprises a primitive block entry for each primitive block associated with the corresponding tile group.

Claims (36)

1. A method of tiling primitives in a tile-based graphics processing system in which a rendering space is divided into a plurality of tiles, the method comprising:

generating a multi-level hierarchy of tile groups, each level of the multi-level hierarchy comprising one or more tile groups comprising one or more of the plurality of tiles;

receiving information identifying each of a plurality of primitive blocks, each primitive block of the plurality of primitive blocks comprising geometry data for one or more primitives;

associating each of the plurality of primitive blocks with one or more of the tile groups up to a maximum number of tile groups, wherein in response to determining that at least one primitive of a primitive block is located, at least partially, within a tile, the primitive block is associated with at least one tile group that includes that tile; and

generating a control stream for each tile group based on the associations, wherein each control stream comprises a primitive block entry for each primitive block associated with the corresponding tile group.

2. The method of claim 1 , wherein the maximum number of tile groups is one.

3. The method of claim 1 , wherein associating a primitive block of the plurality of primitive blocks with one or more of the tile groups comprises:

identifying an axis-aligned bounding box in the rendering space that encompasses the one or more primitives of the primitive block; and

associating the primitive block with a smallest tile group whose one or more tiles encompass the bounding box.

4. The method of claim 1 , wherein the maximum number of tile groups is less than a total number of tiles forming the plurality of tiles.

5. The method of claim 1 , wherein associating a primitive block of the plurality of primitive blocks with one or more of the tile groups comprises:

identifying an axis-aligned bounding box in the rendering space that encompasses the one or more primitives of the primitive block; and

associating the primitive block with a smallest set of one or more tile groups whose one or more tiles encompass the bounding box.

6. The method of claim 5 , wherein each tile group in the set of one or more tile groups is at a same level of the hierarchy.

7. The method of claim 5 , wherein the set of one or more tile groups comprises a plurality of tile groups and at least two of the tile groups in the set are at different levels of the hierarchy.

8. The method of claim 1 , wherein each primitive block entry comprises information identifying the corresponding primitive block.

9. The method of claim 1 , wherein each primitive block is associated with an axis-aligned bounding box in the rendering space that encompasses the one or more primitives of the primitive block, and if the bounding box for a primitive block does not encompass a total area of the rendering space covered by the tiles in the tile group the primitive block entry for that primitive block comprises information identifying one or more coordinates of the bounding box.

10. The method of claim 1 , wherein each primitive block is associated with an axis-aligned bounding box in the rendering space that encompasses the one or more primitives of the primitive block, and if a primitive block does not comprise at least one primitive that falls in each tile of the tile group, the primitive block entry for that primitive block comprises a coverage mask which indicates which tiles of the tile group that intersect the bounding box for the primitive block are valid for the primitive block, a tile being valid for a primitive block if at least one primitive in the primitive block falls, at least partially, within the bounds of the tile.

11. The method of claim 10 , wherein each coverage mask comprises information for successively smaller and smaller areas of a block of relevant tiles that indicates whether that area is valid for the primitive block, the block of relevant tiles comprising the tiles of the tile group that intersect the bounding box for the primitive block.

12. The method of claim 10 , further comprising generating the coverage mask for a primitive block entry by:

(a) dividing a block of relevant tiles into quadrants of tiles, the block of relevant tiles comprising the tiles of the tile group that intersect the bounding box for the primitive block;

(b) adding information to the coverage mask indicating whether each of the quadrants is valid for the primitive block; and

(c) if a quadrant is valid for the primitive block and the quadrant comprises more than one tile, dividing that quadrant into sub-quadrants and repeating (b) and (c) for each sub-quadrant.

13. The method of claim 12 , wherein generating the coverage mask for a primitive block entry further comprises, prior to dividing the block of relevant tiles into quadrants of tiles, expanding the block of relevant tiles to a square block with power of two sides.

14. The method of claim 1 , wherein each tile group of level k comprises a h k ×h k block of tiles, wherein h is an integer greater than one, k is an integer between 0 to N−1, and N is a number of levels in the hierarchy.

15. The method of claim 1 , wherein each tile group of level j comprises n tile groups of level j−1 wherein n is an integer greater than one, j is an integer between 1 and N−1, and N is a number of levels in the hierarchy.

16. 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 the method as set forth in claim 1 .

17. The method of claim 1 , wherein the tile-based graphics processing system is configured to implement a geometry processing phase and a rasterization phase, and the method of tiling primitives occurs during the geometry processing phase.

18. The method of claim 1 , wherein each level of the multi-level hierarchy comprises non-overlapping tile groups and tile groups in a higher level comprise more tiles than tile groups in lower levels.

19. The method of claim 1 , wherein if none of the primitives of a primitive block are located within the tiles of a tile group, that primitive block is not associated with that tile group.

20. A tiling engine for use in a graphics processing system in which a render space is divided into a plurality of tiles, the tiling engine comprising

tile group selector logic configured to:

obtain information defining a multi-level hierarchy of tile groups, wherein each level of the multi-level hierarchy comprises one or more tile groups comprising one or more of the plurality of tiles,

receive information identifying each of a plurality of primitive blocks, each primitive block of the plurality of primitive blocks comprising geometry data for one or more primitives, and

associate each of the plurality of primitive blocks with one or more of the tile groups up to a maximum number of tile groups, wherein in response to determining that at least one primitive of a primitive block is located, at least partially, within a tile, the primitive block is associated with at least one tile group that includes that tile; and

a control stream generator configured to generate a control stream for each tile group in the multi-level hierarchy based on the associations, wherein each control stream comprises a primitive block entry for each primitive block associated with the corresponding tile group.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (3)
GB 2001716 · Feb 7, 2020 · national
EP 20386032 · Jun 17, 2020 · regional
EP 20386033 · Jun 17, 2020 · regional
Continuity (2)
Continuation 18122042 · Mar 15, 2023
Continuation 17169417 · Feb 6, 2021
References Cited (52)
US 5864342A · Kajiya et al. · 1999 [cited by applicant]
US 6525726B1 · Xie et al. · 2003 [cited by applicant]
US 6646639B1 · Greene · 2003 [cited by applicant]
US 7042452B1 · Wasserman et al. · 2006 [cited by applicant]
US 7564456B1 · Lindholm · 2009 [cited by examiner]
US 7692659B1 · Molnar · 2010 [cited by applicant]
US 8704836B1 · Rhoades et al. · 2014 [cited by applicant]
US 9058685B2 · Keall et al. · 2015 [cited by applicant]
US 9349215B1 · Baldwin · 2016 [cited by applicant]
US 9607426B1 · Peterson · 2017 [cited by applicant]
US 10019802B2 · Kim et al. · 2018 [cited by applicant]
US 10217272B2 · Akenine-Moller et al. · 2019 [cited by applicant]
US 10614549B2 · Berghoff · 2020 [cited by applicant]
US 10912877B2 · Fabig et al. · 2021 [cited by applicant]
US 11030783B1 · Engh-Halstvedt et al. · 2021 [cited by applicant]
US 20070211078A1 · Satoh · 2007 [cited by applicant]
US 20080211810A1 · Falchetto · 2008 [cited by applicant]
US 20090066694A1 · Redshaw et al. · 2009 [cited by applicant]
US 20100110102A1 · Nystad et al. · 2010 [cited by applicant]
US 20100177105A1 · Nystad et al. · 2010 [cited by applicant]
US 20110292032A1 · Yang · 2011 [cited by applicant]
US 20110304608A1 · Yang · 2011 [cited by applicant]
US 20130342547A1 · Lum et al. · 2013 [cited by applicant]
US 20140139534A1 · Tapply et al. · 2014 [cited by applicant]
US 20140347357A1 · Kim et al. · 2014 [cited by applicant]
US 20150049107A1 · Park · 2015 [cited by applicant]
US 20150109293A1 · Wang et al. · 2015 [cited by applicant]
US 20160260249A1 · Persson et al. · 2016 [cited by applicant]
US 20170024927A1 · Isomaki et al. · 2017 [cited by applicant]
US 20170084078A1 · Boudier · 2017 [cited by applicant]
US 20170178597A1 · Hasselgren · 2017 [cited by examiner]
US 20170263039A1 · Goel et al. · 2017 [cited by applicant]
US 20170309027A1 · Kleen et al. · 2017 [cited by applicant]
US 20170316604A1 · Yang et al. · 2017 [cited by applicant]
US 20170330372A1 · Kakarlapudi et al. · 2017 [cited by applicant]
US 20170352182A1 · Wang et al. · 2017 [cited by applicant]
US 20190172247A1 · Grossman et al. · 2019 [cited by applicant]
US 20190188896A1 · Heggelund et al. · 2019 [cited by applicant]
US 20200074721A1 · Heggelund et al. · 2020 [cited by applicant]
US 20200082505A1 · Croxford et al. · 2020 [cited by applicant]
US 20200151926A1 · Uhrenholt · 2020 [cited by applicant]
US 20210097639A1 · Venkatesh et al. · 2021 [cited by applicant]
US 20210279936A1 · Yang et al. · 2021 [cited by applicant]
EP 1918878A2 · 2008 [cited by applicant]
EP 3796263A1 · 2021 [cited by applicant]
GB 2466576B · 2011 [cited by applicant]
GB 2545589A · 2017 [cited by applicant]
GB 2549789A · 2017 [cited by applicant]
GB 2564503A · 2019 [cited by applicant]
WO 2010070302A2 · 2010 [cited by applicant]
WO 2010070302A3 · 2011 [cited by applicant]
Hsiao et al., “A Hierarchical Primitive Lists Structure for Tile-Based Rendering,” Computational Science and Engineering 2009; Aug. 29, 2009; pp. 408-413. [cited by applicant]