IP Library Granted Patent US 12,462,464
Granted Patent B2
US 12,462,464 · App. 17/961,359 · Granted Nov 4, 2025

Allocation of primitives to primitive blocks

Inventors: Xile Yang (Rickmansworth, GB); John W. Howson (St. Albans, GB); Jonathan Redshaw (St. Albans, GB)
Assignee: Imagination Technologies Limited
G06T15/04G06T11/001G06T11/40G06T15/80G06T2200/04G06T2207/10004G06T2207/10024G06T2210/12G06T2210/61G06T2215/06
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,462,464
App. No.
17/961,359
Granted
Nov 4, 2025
Kind
B2
Abstract

An application sends primitives to a graphics processing system so that an image of a 3D scene can be rendered. The primitives are placed into primitive blocks for storage and retrieval from a parameter memory. Rather than simply placing the first primitives into a primitive block until the primitive block is full and then placing further primitives into the next primitive block, multiple primitive blocks can be “open” such that a primitive block allocation module can allocate primitives to one of the open primitive blocks to thereby sort the primitives into primitive blocks according to their spatial positions. By grouping primitives together into primitive blocks in accordance with their spatial positions, the performance of a rasterization module can be improved. For example, in a tile-based rendering system this may mean that fewer primitive blocks need to be fetched by a hidden surface removal module in order to process a tile.

Claims (45)

1 . A method of processing primitives for rendering an image of a three dimensional scene in a computer graphics processing system in which primitive data is stored in blocks of a data store by primitive allocation logic of the computer graphics processing system, wherein the primitives are defined by vertices, the method comprising:

for each of a plurality of received primitives:

(i) comparing an indication of a spatial position in the scene of the received primitive with at least one indication of a spatial position in the scene of at least one block of the data store, wherein the at least one block of the data store comprises vertex data for vertices of previously received primitives, and

(ii) storing primitive data for the received primitive in a block of the data store based on a result of the comparison, such that the received primitive is stored in a block in accordance with its spatial position, wherein the primitive data for the received primitive comprises vertex data for vertices of the received primitive; and

processing the primitive data stored in the blocks of the data store in the computer graphics processing system to render the image.

2 . The method of claim 1 , wherein said processing primitive data comprises outputting the primitive data stored in the blocks of the data store by the primitive allocation logic.

3 . The method of claim 2 , wherein said processing primitive data further comprises:

receiving the outputted primitive data at a tiling module of the computer graphics processing system; and

using the received primitive data at the tiling module to determine which primitives are present within each of a plurality of tiles.

4 . The method of claim 1 , wherein for each of the received primitives, said comparing comprises comparing an indication of a spatial position in the scene of the received primitive with respective indications of spatial positions in the scene of at least two blocks of the data store.

5 . The method of claim 1 , wherein in response to the result of the comparison indicating that the spatial position in the scene of the received primitive matches the spatial position in the scene of a single one of the blocks of the data store, the received primitive is allocated to said one of the blocks.

6 . The method of claim 1 , further comprising, in response to the result of the comparison indicating that the spatial position in the scene of the received primitive matches the spatial position in the scene of a plurality of the blocks of the data store, merging said plurality of blocks to form a merged block, wherein the received primitive is allocated to the merged block.

7 . The method of claim 1 , further comprising, in response to the result of the comparison indicating that the spatial position in the scene of the received primitive does not match the spatial position in the scene of any of the blocks of the data store, creating a new block to be included in said data store, wherein the received primitive is allocated to the new block.

8 . The method of claim 7 , further comprising:

determining that the data store does not have space to store the new block; and

in response to determining that the data store does not have space to store the new block, outputting one of the blocks from the data store to provide space for the new block.

9 . The method of claim 8 , further comprising selecting a block to be outputted from the data store in accordance with an outputting scheme, wherein the outputting scheme comprises one or more of:

(i) a round robin scheme;

(ii) an output the biggest scheme in which a block with the most primitives is selected to be outputted;

(iii) an output the smallest scheme in which a block with the fewest primitives is selected to be outputted;

(iv) an output the oldest scheme in which a block which has been in the data store for the longest amount of time is selected to be outputted;

(v) a merge and output smallest and biggest scheme in which a block with the most primitives and a block with the fewest primitives are merged and the resulting merged block is then selected to be outputted;

(vi) a merge threshold scheme in which any blocks with fewer than a threshold number of primitives are merged and the resulting merged block is then selected to be outputted; and

(vii) a merge smallest scheme in which two blocks with the fewest primitives are merged and the resulting merged block is kept in the data store, wherein one block from the data store is selected to be outputted if merging is not possible.

10 . The method of claim 1 , wherein each of the blocks of the data store includes a header which includes state information indicating how to render the primitives in that block.

11 . A computer graphics processing system configured to process primitives to render an image of a three dimensional scene, wherein the primitives are defined by vertices, the computer graphics processing system comprising:

a data store configured to store primitive data in blocks of the data store; and

primitive allocation logic configured to, for each of a plurality of received primitives:

(i) compare an indication of a spatial position in the scene of the received primitive with at least one indication of a spatial position in the scene of at least one block of the data store, wherein the at least one block of the data store comprises vertex data for vertices of previously received primitives, and

(ii) store primitive data for the received primitive in a block of the data store based on a result of the comparison, such that the received primitive is stored in a block in accordance with its spatial position, wherein the primitive data for the received primitive comprises vertex data for vertices of the received primitive.

12 . The computer graphics processing system of claim 11 , further comprising a tiling module configured to determine which primitives are present within each of a plurality of tiles.

13 . The computer graphics processing system of claim 12 , wherein the primitive allocation logic is configured to:

allocate primitives to blocks of the data store prior to tiling; and

provide blocks to the tiling module.

14 . The computer graphics processing system of claim 11 , wherein the indication of a spatial position in the scene of the received primitive comprises a vertex of the received primitive, and an indication of a spatial position of a block of the data store comprises a vertex of a primitive stored in that block, wherein the primitive allocation logic is configured to compare vertices of the received primitive and vertices of blocks of the data store to determine whether the received primitive has one or more shared vertices with a block of the data store.

15 . The computer graphics processing system of claim 11 , wherein the indication of a spatial position in the scene of the received primitive comprises a bounding box of the received primitive, and an indication of a spatial position in the scene of a block of the data store comprises a bounding box of that block, wherein the primitive allocation logic is configured to compare the bounding box of the received primitive and the bounding boxes of blocks of the data store to determine whether the bounding box of the received primitive overlaps with, or is within a minimum distance from overlapping with, the bounding box of a block of the data store.

16 . The computer graphics processing system of claim 11 , wherein the primitive allocation logic is further configured such that, responsive to the received primitive being stored in a block and responsive to determining that the received primitive does not lie within a bounding box of that block, the bounding box of that block is updated to include the received primitive.

17 . The computer graphics processing system of claim 11 , further configured to output a block from the data store if that block is full.

18 . The computer graphics processing system of claim 12 , wherein the tiling module is configured to determine per-tile display lists which indicate which primitives are present within each of a plurality of tiles, and wherein the computer graphics processing system further comprising a rasterization block which is configured to implement hidden surface removal and texturing or shading on a per-tile basis using the per-tile display lists.

19 . The computer graphics processing system of claim 11 , wherein the indication of a spatial position in the scene of the received primitive comprises a bounding box of the received primitive, and an indication of a spatial position of a block of the data store comprises a bounding box of that block, wherein the bounding boxes have a per-tile resolution.

20 . A non-transitory computer readable storage medium having stored thereon processor executable instructions that when executed at a computer system for generating a representation of a digital circuit from definitions of circuit elements and data defining rules for combining those circuit elements, cause the computer system to generate a graphics processing unit configured to process primitives to render an image of a three dimensional scene, wherein the primitives are defined by vertices, the graphics processing unit comprising:

a data store configured to store primitive data in blocks of the data store; and

primitive allocation logic configured to, for each of a plurality of received primitives:

(i) compare an indication of a spatial position in the scene of the received primitive with at least one indication of a spatial position in the scene of at least one block of the data store, wherein the at least one block of the data store comprises vertex data for vertices of previously received primitives, and

(ii) store primitive data for the received primitive in a block of the data store based on the result of the comparison, such that the received primitive is stored in a block in accordance with its spatial position, wherein the primitive data for the received primitive comprises vertex data for vertices of the received primitive.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (1)
GB 1409530 · May 29, 2014 · national
Continuity (3)
Continuation 17039564 · Sep 30, 2020
Continuation 14724484 · May 28, 2015
Related Publication 20230038653A1 · Feb 9, 2023
References Cited (208)
US 5461712A · Chelstowski et al. · 1995 [cited by applicant]
US 5504821A · Kanamori et al. · 1996 [cited by applicant]
US 5515453A · Hennessy et al. · 1996 [cited by applicant]
US 5572634A · Duluk, Jr. · 1996 [cited by applicant]
US 5606657A · Dennison et al. · 1997 [cited by applicant]
US 5886701A · Chauvin · 1999 [cited by examiner]
US 5905502A · Deering · 1999 [cited by examiner]
US 5990904A · Griffin · 1999 [cited by applicant]
US 6169554B1 · Deering · 2001 [cited by examiner]
US 6192393B1 · Tarantino et al. · 2001 [cited by applicant]
US 6246415B1 · Grossman et al. · 2001 [cited by applicant]
US 6421053B1 · Johns et al. · 2002 [cited by applicant]
US 6424345B1 · Smith et al. · 2002 [cited by applicant]
US 6426750B1 · Hoppe · 2002 [cited by applicant]
US 6433789B1 · Rosman · 2002 [cited by applicant]
US 6438612B1 · Ylonen et al. · 2002 [cited by applicant]
US 6456283B1 · Ishida · 2002 [cited by applicant]
US 6525726B1 · Xie et al. · 2003 [cited by applicant]
US 6552723B1 · Duluk, Jr. et al. · 2003 [cited by applicant]
US 6597363B1 · Duluk, Jr. · 2003 [cited by examiner]
US 6720964B1 · Fowler et al. · 2004 [cited by applicant]
US 6798410B1 · Redshaw · 2004 [cited by examiner]
US 6879324B1 · Hoppe · 2005 [cited by applicant]
US 6894704B1 · Bourdev et al. · 2005 [cited by applicant]
US 7023437B1 · Voorhies et al. · 2006 [cited by applicant]
US 7170515B1 · Zhu · 2007 [cited by applicant]
US 7505036B1 · Baldwin · 2009 [cited by applicant]
US 7720095B2 · Desai et al. · 2010 [cited by applicant]
US 8223157B1 · Baldwin et al. · 2012 [cited by applicant]
US 8253730B1 · Carr · 2012 [cited by applicant]
US 8289319B2 · Nordlund et al. · 2012 [cited by applicant]
US 8310487B2 · Howson · 2012 [cited by applicant]
US 8692848B2 · Adams et al. · 2014 [cited by applicant]
US 8704826B1 · Hakura et al. · 2014 [cited by applicant]
US 8717357B2 · McCombe et al. · 2014 [cited by applicant]
US 8751763B1 · Ramarao · 2014 [cited by applicant]
US 8760460B1 · Kilgariff et al. · 2014 [cited by applicant]
US 8773447B1 · Donham · 2014 [cited by applicant]
US 8817026B1 · Zimmerman · 2014 [cited by applicant]
US 8830246B2 · Seetharamaiah et al. · 2014 [cited by applicant]
US 8854384B2 · Keall et al. · 2014 [cited by applicant]
US 9098943B1 · Baldwin · 2015 [cited by applicant]
US 9105131B2 · Howson · 2015 [cited by applicant]
US 9250961B2 · Howson et al. · 2016 [cited by applicant]
US 9286649B2 · Balci et al. · 2016 [cited by applicant]
US 9317948B2 · Tapply et al. · 2016 [cited by applicant]
US 9336623B2 · Yang · 2016 [cited by applicant]
US 9384584B2 · Yang · 2016 [cited by applicant]
US 9501847B1 · Purcell et al. · 2016 [cited by applicant]
US 9501860B2 · Barringer et al. · 2016 [cited by applicant]
US 9514563B2 · Ellis et al. · 2016 [cited by applicant]
US 9519982B2 · Heggelund et al. · 2016 [cited by applicant]
US 9536341B1 · Rhoades et al. · 2017 [cited by applicant]
US 9553807B2 · Shelar et al. · 2017 [cited by applicant]
US 9607352B2 · Yang et al. · 2017 [cited by applicant]
US 9612839B2 · Hakura et al. · 2017 [cited by applicant]
US 9619937B2 · Persson et al. · 2017 [cited by applicant]
US 9747660B2 · Redshaw · 2017 [cited by applicant]
US 9830738B2 · Redshaw · 2017 [cited by examiner]
US 10019820B2 · Sorgard et al. · 2018 [cited by applicant]
US 10600231B2 · Woop · 2020 [cited by examiner]
US 10810785B2 · Muthler · 2020 [cited by examiner]
US 11030797B2 · Brigg · 2021 [cited by examiner]
US 11164360B2 · Laine · 2021 [cited by examiner]
US 11681754B2 · Gupta · 2023 [cited by examiner]
US 20010055032A1 · Saito · 2001 [cited by examiner]
US 20020060685A1 · Handley et al. · 2002 [cited by applicant]
US 20020085010A1 · McCormack et al. · 2002 [cited by applicant]
US 20020118188A1 · Zviaguina et al. · 2002 [cited by applicant]
US 20020130886A1 · Baldwin · 2002 [cited by applicant]
US 20030011592A1 · Southwell · 2003 [cited by examiner]
US 20030037103A1 · Salmi et al. · 2003 [cited by applicant]
US 20030122832A1 · Doyle · 2003 [cited by examiner]
US 20030122833A1 · Doyle · 2003 [cited by applicant]
US 20030142104A1 · Lavelle et al. · 2003 [cited by applicant]
US 20040022322A1 · Dye · 2004 [cited by applicant]
US 20040139080A1 · Schmidt et al. · 2004 [cited by applicant]
US 20040183816A1 · Leather et al. · 2004 [cited by applicant]
US 20040196281A1 · Huang · 2004 [cited by applicant]
US 20040201592A1 · Huang · 2004 [cited by applicant]
US 20050057564A1 · Liao et al. · 2005 [cited by applicant]
US 20050062750A1 · Hong · 2005 [cited by applicant]
US 20050162435A1 · Hashimoto et al. · 2005 [cited by applicant]
US 20050203930A1 · Bukowski et al. · 2005 [cited by applicant]
US 20060187229A1 · Shao · 2006 [cited by examiner]
US 20060256112A1 · Heirich et al. · 2006 [cited by applicant]
US 20070146378A1 · Sorgard et al. · 2007 [cited by applicant]
US 20070268290A1 · Naoi · 2007 [cited by applicant]
US 20080088619A1 · Shearer et al. · 2008 [cited by applicant]
US 20080088622A1 · Shearer · 2008 [cited by applicant]
US 20080100627A1 · Nystad et al. · 2008 [cited by applicant]
US 20080143978A1 · Damera-Venkata et al. · 2008 [cited by applicant]
US 20080150950A1 · Sorgard et al. · 2008 [cited by applicant]
US 20080208530A1 · Kumanan et al. · 2008 [cited by applicant]
US 20080273031A1 · Shao · 2008 [cited by examiner]
US 20090049452A1 · Kriegel et al. · 2009 [cited by applicant]
US 20090066694A1 · Redshaw et al. · 2009 [cited by applicant]
US 20090073167A1 · Brown et al. · 2009 [cited by applicant]
US 20090167763A1 · Waechter et al. · 2009 [cited by applicant]
US 20090174706A1 · Howson · 2009 [cited by applicant]
US 20090183167A1 · Kupferschmidt et al. · 2009 [cited by applicant]
US 20090262132A1 · Peterson et al. · 2009 [cited by applicant]
US 20090282359A1 · Saul et al. · 2009 [cited by applicant]
US 20100060637A1 · Shearer · 2010 [cited by applicant]
US 20100079452A1 · Zhou et al. · 2010 [cited by applicant]
US 20100177105A1 · Nystad · 2010 [cited by examiner]
US 20110037763A1 · Lee · 2011 [cited by examiner]
US 20110046923A1 · Lee · 2011 [cited by examiner]
US 20110080415A1 · Duluk, Jr. · 2011 [cited by examiner]
US 20110090251A1 · Donovan et al. · 2011 [cited by applicant]
US 20110109638A1 · Duluk, Jr. · 2011 [cited by examiner]
US 20110148919A1 · Heggelund et al. · 2011 [cited by applicant]
US 20110216069A1 · Keall et al. · 2011 [cited by applicant]
US 20110254852A1 · Howson · 2011 [cited by applicant]
US 20110267346A1 · Howson · 2011 [cited by examiner]
US 20110292032A1 · Yang · 2011 [cited by applicant]
US 20110304608A1 · Yang · 2011 [cited by applicant]
US 20120062553A1 · Yang · 2012 [cited by examiner]
US 20120188241A1 · Ahn · 2012 [cited by examiner]
US 20120249553A1 · Peterson et al. · 2012 [cited by applicant]
US 20130021358A1 · Nordlund et al. · 2013 [cited by applicant]
US 20130057653A1 · Park et al. · 2013 [cited by applicant]
US 20130067502A1 · Blanco et al. · 2013 [cited by applicant]
US 20130069943A1 · Kallio et al. · 2013 [cited by applicant]
US 20130100132A1 · Katayama et al. · 2013 [cited by applicant]
US 20130120380A1 · Kallio et al. · 2013 [cited by applicant]
US 20130135322A1 · Seetharamaiah et al. · 2013 [cited by applicant]
US 20130265298A1 · Moon et al. · 2013 [cited by applicant]
US 20130325317A1 · Pylappan et al. · 2013 [cited by applicant]
US 20130328937A1 · Pirwani et al. · 2013 [cited by applicant]
US 20140071122A1 · Howson · 2014 [cited by examiner]
US 20140118347A1 · Hakura et al. · 2014 [cited by applicant]
US 20140118364A1 · Hakura et al. · 2014 [cited by applicant]
US 20140118376A1 · Hakura et al. · 2014 [cited by applicant]
US 20140139534A1 · Tapply et al. · 2014 [cited by applicant]
US 20140267258A1 · Yang et al. · 2014 [cited by applicant]
US 20140292782A1 · Fishwick et al. · 2014 [cited by applicant]
US 20140333620A1 · Park et al. · 2014 [cited by applicant]
US 20140347357A1 · Kim · 2014 [cited by examiner]
US 20140354654A1 · Heggelund et al. · 2014 [cited by applicant]
US 20140354661A1 · Balci et al. · 2014 [cited by applicant]
US 20140354666A1 · Yang · 2014 [cited by applicant]
US 20140368521A1 · Lassen et al. · 2014 [cited by applicant]
US 20140375641A1 · Bakalash · 2014 [cited by applicant]
US 20150036162A1 · Belbin et al. · 2015 [cited by applicant]
US 20150091904A1 · Lee et al. · 2015 [cited by applicant]
US 20150097830A1 · Jeong et al. · 2015 [cited by applicant]
US 20150161760A1 · Nordstoga · 2015 [cited by applicant]
US 20150170324A1 · Howson et al. · 2015 [cited by applicant]
US 20150170328A1 · Redshaw · 2015 [cited by applicant]
US 20150170407A1 · Redshaw · 2015 [cited by applicant]
US 20150187117A1 · Balci et al. · 2015 [cited by applicant]
US 20150213638A1 · Dimitrov et al. · 2015 [cited by applicant]
US 20150228049A1 · Yang et al. · 2015 [cited by applicant]
US 20150228111A1 · Kim et al. · 2015 [cited by applicant]
US 20150269773A1 · Pearson et al. · 2015 [cited by applicant]
US 20150302629A1 · Obert et al. · 2015 [cited by applicant]
US 20150317818A1 · Howson et al. · 2015 [cited by applicant]
US 20150331675A1 · Magalhaes · 2015 [cited by applicant]
US 20150379672A1 · Wang et al. · 2015 [cited by applicant]
US 20150379684A1 · Ramani · 2015 [cited by examiner]
US 20160005143A1 · Liu et al. · 2016 [cited by applicant]
US 20160005195A1 · Sorgard et al. · 2016 [cited by applicant]
US 20160037149A1 · Nishikawa · 2016 [cited by examiner]
US 20160071234A1 · Lehtinen · 2016 [cited by examiner]
US 20160098856A1 · Broadhurst et al. · 2016 [cited by applicant]
US 20160110914A1 · Cho et al. · 2016 [cited by applicant]
US 20160117855A1 · Lee et al. · 2016 [cited by applicant]
US 20160125649A1 · Jeong et al. · 2016 [cited by applicant]
US 20160148424A1 · Chung et al. · 2016 [cited by applicant]
US 20160163014A1 · Yang et al. · 2016 [cited by applicant]
US 20160217607A1 · Hendrey · 2016 [cited by applicant]
US 20160217608A1 · Howson · 2016 [cited by applicant]
US 20160221262A1 · Das · 2016 [cited by examiner]
US 20160240000A1 · Fishwick · 2016 [cited by examiner]
US 20160260241A1 · Jin et al. · 2016 [cited by applicant]
US 20160260249A1 · Persson · 2016 [cited by examiner]
US 20160307342A1 · Lee et al. · 2016 [cited by applicant]
US 20170053375A1 · Bolz et al. · 2017 [cited by applicant]
US 20170069126A1 · Sansottera et al. · 2017 [cited by applicant]
US 20170069132A1 · Howson et al. · 2017 [cited by applicant]
US 20170091246A1 · Risvik · 2017 [cited by examiner]
US 20170178386A1 · Redshaw · 2017 [cited by examiner]
US 20170262951A1 · Smith · 2017 [cited by examiner]
US 20170316604A1 · Yang et al. · 2017 [cited by applicant]
US 20170330372A1 · Kakarlapudi · 2017 [cited by examiner]
US 20180144538A1 · Jeong et al. · 2018 [cited by applicant]
US 20180197270A1 · Howson · 2018 [cited by examiner]
US 20190005704A1 · Howson · 2019 [cited by examiner]
US 20190042304A1 · Wang et al. · 2019 [cited by applicant]
US 20190096077A1 · Allu et al. · 2019 [cited by applicant]
US 20190311516A1 · Van Benthem · 2019 [cited by examiner]
US 20200005504A1 · Van Benthem · 2020 [cited by examiner]
US 20200035328A1 · Alberti et al. · 2020 [cited by applicant]
US 20200118301A1 · Connelly · 2020 [cited by examiner]
US 20200202612A1 · Yang et al. · 2020 [cited by applicant]
US 20200242828A1 · Brigg · 2020 [cited by examiner]
US 20210248806A1 · Yang · 2021 [cited by examiner]
US 20210295584A1 · Engh-Halstvedt · 2021 [cited by examiner]
US 20220036638A1 · Rabbani Rankouhi · 2022 [cited by examiner]
US 20220253982A1 · Beaumont · 2022 [cited by examiner]
US 20220398004A1 · Hellsten · 2022 [cited by examiner]
CN 102292748A · 2011 [cited by applicant]
GB 2264847A · 1993 [cited by applicant]
GB 2442266A · 2008 [cited by applicant]
GB 2466576A · 2010 [cited by applicant]
GB 2483502A · 2012 [cited by applicant]
WO 2010070302A2 · 2010 [cited by applicant]