IP Library › Granted Patent US 12,417,122
Granted Patent B2
US 12,417,122 · App. 18/608,244 · Granted Sep 16, 2025

Memory allocation for 3-D graphics rendering

Inventor: Michael John Livesley (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06F9/5016G06T1/60G06T15/005
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,417,122
App. No.
18/608,244
Granted
Sep 16, 2025
Kind
B2
Abstract

A method and apparatus are provided for allocating memory for geometry processing in a 3-D graphics rendering system comprising multiple cores. Geometry processing work is divided up into discrete work-packages, which form an ordered sequence. Cores are assigned different work-packages to process, and make memory allocation requests to enable them to store the results of the processing. Memory allocation requests relating to the current earliest uncompleted work-package in the sequence are treated differently to other requests, and may be prioritised.

Claims (39)

1. A method of allocating memory in a 3-D graphics rendering system comprising multiple cores, the method comprising:

obtaining information describing a sequence of work-packages distributed among the multiple cores, wherein the information includes, for each work package, an index of the work package in the sequence, and an indication of whether the work package is currently being processed or has been completed;

receiving a request from one of the cores to allocate memory;

determining whether to allocate the requested memory based at least in part on whether the request was received from the core processing the earliest work-package in the sequence that is currently being processed by any of the cores; and

allocating memory to said one of the cores in response to said request, in dependence on said determining.

2. The method of claim 1 , further comprising:

if the request was received from the core processing said earliest work-package, allocating the memory; and

if the request was received from any other core, restricting the allocation of the memory.

3. The method of claim 2 , wherein the restricting is based at least in part on an amount of memory already allocated to the core.

4. The method of claim 3 , wherein the restricting is based at least in part on an amount of unrecoverable memory already allocated to the core, wherein memory is unrecoverable if it stores output for work-packages subsequent in the sequence to said earliest work-package.

5. The method of claim 2 , wherein the restricting is based at least in part on the size of a remaining free pool of memory available.

6. The method of claim 5 , wherein the restricting is based on a comparison between the amount of unrecoverable memory already allocated to the core and the size of the remaining free pool of memory.

7. The method of claim 2 , wherein the restricting is based on a comparison between the amount of unrecoverable memory already allocated to the core and a fixed threshold.

8. The method of claim 2 , wherein the restricting is based on a comparison between the amount of unrecoverable memory already allocated to the core and a dynamic threshold.

9. The method of claim 8 , wherein the dynamic threshold is based at least in part on the size of the remaining free pool of memory.

10. The method of claim 8 , wherein the dynamic threshold is based at least in part on a minimum operable amount of memory.

11. The method of claim 8 , wherein the dynamic threshold is based at least in part on the size of the remaining free pool of memory divided by the number of cores in the system.

12. The method of claim 1 , wherein the information describing the sequence of work-packages distributed among the multiple cores is maintained in a register array for each core.

13. The method of claim 12 , wherein the register array for each core comprises an entry for each work-package assigned to that core, each entry comprising a “valid” flag, a “completed” flag, the index of the work-package, and an indication of the amount of memory currently allocated for that work-package.

14. A core configured to allocate memory in a 3-D graphics rendering system comprising multiple cores, the core comprising a master unit configured to:

obtain information describing a sequence of work-packages distributed among the multiple cores, wherein the information includes, for each work package, an index of the work package in the sequence, and an indication of whether the work package is currently being processed or has been completed;

receive a request from one of the cores to allocate memory;

determine whether to allocate the requested memory based at least in part on whether the request was received from the core processing the earliest work-package in the sequence that is currently being processed by any of the cores; and

allocate memory to said one of the cores in response to said request, in dependence on said determining.

15. The core of claim 14 , wherein the master unit is further configured to:

allocate the requested memory if the request was received from the core processing said earliest work-package; and

if the request was received from any other core, restrict the allocation of the requested memory.

16. A graphics rendering system comprising:

a first core as set forth in claim 14 ;

at least one second core; and

a memory;

wherein the master unit of the first core is configured to allocate portions of the memory to the at least one second core.

17. A graphics processing system comprising the core as set forth in claim 14 , and configured to:

obtain information describing a sequence of work-packages distributed among the multiple cores, wherein the information includes, for each work package, an index of the work package in the sequence, and an indication of whether the work package is currently being processed or has been completed;

receive a request from one of the cores to allocate memory; and

determine whether to allocate the requested memory based at least in part on whether the request was received from the core processing the earliest work-package in the sequence that is currently being processed by any of the cores.

18. A method of manufacturing a graphics processing system as set forth in claim 17 comprising inputting to an integrated circuit manufacturing system an integrated circuit definition dataset that, when processed in said integrated circuit manufacturing system, configures the integrated circuit manufacturing system to manufacture said graphics processing system.

19. A non-transitory computer readable storage medium having stored thereon executable code configured to cause the method as set forth in claim 1 to be performed when the code is run.

20. 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 integrated circuit manufacturing system to manufacture a graphics processing system as set forth in claim 17 .

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 2204511 · Mar 30, 2022 · national
Continuity (2)
Continuation 18125665 · Mar 23, 2023
Related Publication 20240231914A1 · Jul 11, 2024
References Cited (50)
US 8074224B1 · Nordquist et al. · 2011 [cited by applicant]
US 8330766B1 · McAllister et al. · 2012 [cited by applicant]
US 10275851B1 · Zhao et al. · 2019 [cited by applicant]
US 20070091099A1 · Zhang et al. · 2007 [cited by applicant]
US 20070159488A1 · Danskin et al. · 2007 [cited by applicant]
US 20110109638A1 · Duluk, Jr. et al. · 2011 [cited by applicant]
US 20110292032A1 · Yang · 2011 [cited by applicant]
US 20150254102A1 · Ueda et al. · 2015 [cited by applicant]
US 20160260249A1 · Persson et al. · 2016 [cited by applicant]
US 20170178401A1 · Agrawal et al. · 2017 [cited by applicant]
US 20170236244A1 · Price et al. · 2017 [cited by applicant]
US 20170256016A1 · Lee et al. · 2017 [cited by applicant]
US 20180130253A1 · Hazel · 2018 [cited by applicant]
US 20180211435A1 · Nijasure et al. · 2018 [cited by applicant]
US 20180276876A1 · Yang et al. · 2018 [cited by applicant]
US 20180307490A1 · Hakura et al. · 2018 [cited by applicant]
US 20190355084A1 · Gierach et al. · 2019 [cited by applicant]
US 20200097293A1 · Havlir et al. · 2020 [cited by applicant]
US 20200265547A1 · Redshaw · 2020 [cited by applicant]
US 20200380755A1 · Howson et al. · 2020 [cited by applicant]
US 20210097013A1 · Saleh et al. · 2021 [cited by applicant]
US 20210158598A1 · Bratt et al. · 2021 [cited by applicant]
US 20210241416A1 · Cerny · 2021 [cited by applicant]
US 20220083384A1 · Cerny · 2022 [cited by applicant]
US 20220319089A1 · Nemlekar et al. · 2022 [cited by applicant]
US 20240005444A1 · Stepuch · 2024 [cited by applicant]
US 20240070962A1 · Yang et al. · 2024 [cited by applicant]
US 20240127524A1 · Yang et al. · 2024 [cited by applicant]
CN 105261066A · 2016 [cited by applicant]
CN 109978751A · 2019 [cited by applicant]
CN 112862661A · 2021 [cited by applicant]
EP 1287494A1 · 2003 [cited by applicant]
EP 2548171A1 · 2013 [cited by applicant]
EP 3547248A1 · 2019 [cited by applicant]
EP 3796263A1 · 2021 [cited by applicant]
EP 3862975A1 · 2021 [cited by applicant]
GB 2594764A · 2021 [cited by applicant]
WO 2009068895A1 · 2009 [cited by applicant]
Anonymous; “Graphics—SGX543MP4”; Retrieved from the Internet: URL:https://www.psdevwiki.com/vita/Graphics; Sep. 13, 2020; pp. 1-9. [cited by applicant]
Beets; “A look at the PowerVR graphics architecture: Tilebased rendering”; Retrieved from the Internet: URL: https://blog.imaginationtech.com/a-look-at-the-powervr-graphics-architecture-tile-based-rendering/; Apr. 2, 20… [cited by applicant]
Beets; “A look at the PowerVR graphics architecture”; Retrieved from the Internet: URL:https://blog.imaginationtech.com/the-dr-in-tbdr-deferred-rendering-in-rogue/; Jan. 28, 2016; pp. 1-13. [cited by applicant]
Beets; “Introducing Furian: the architectural changes”; Retrieved from the Internet: URL:https://blog.imaginationtech.com/introducing-furian-the-architectural-changes/; Mar. 13, 2017; pp. 1-13. [cited by applicant]
Crisu et al; “Low-Power Techniques and 2D/3D Graphics Architectures”; Report Delft University of Technology; vol. Jan. 2001; Jun. 26, 2001; 139 pages. [cited by applicant]
Imagination Technologies: “Tiling positive or how Vulkan maps to PowerVR GPUs”; Retrieved from the Internet: URL: https%3A%2F%2Fblog.imaginationtech.com%2Ftiling-positive-or-how-vulkan-maps-to-powervr-gpus%2F; Mar. 9, 2… [cited by applicant]
Kayhan; “Chasing Triangles in a Tile-based Rasterizer”; Retrieved from the Internet: URL:https://tayfunkayhan.wordpress.com/2019/07/26/chasing-triangles-in-a-tile-based⋅-rasterizer/; Jul. 29, 2019; pp. 1-18. [cited by applicant]
Ma; “Concepts and metrics for measurement and prediction of the execution time of GPU rendering commands”; Retrieved from the Internet: URL:https://elib.uni-stuttgart.de/bitstream/11682/3467/1/MSTR_3635.pdf; Aug. 19, 20… [cited by applicant]
Nickolls et al; “Appendix C: Graphics and Computing GPU'S”; Computer Organization and Design: The Hardware/ Software Interface; URL:http://booksite.elsevier.com/9780124077263/downloads/advance_contents_and_appendices/ap… [cited by applicant]
Yu et al; “A Credit-Based Load-Balance-Aware CTA Scheduling Optimization Scheme in GPGPU”; International Journal of Parallel Programming; vol. 44; No. 1; Aug. 22, 2014; 21 pages. [cited by applicant]
Fedorov, D.G.: “A new hierarchical parallelization scheme: generalized distributed data interface (GDDI), and an application to the fragment molecular orbital method (FMO)”, Journal of computational chemistry. Apr. 30, … [cited by applicant]
Ullman, S.: “Object recognition and segmentation by a fragment-based hierarchy”, Trends in cognitive sciences. Feb. 1, 2007; 11 (2):58-64. [cited by applicant]