IP Library › Granted Patent US 12,505,619
Granted Patent B2
US 12,505,619 · App. 18/357,481 · Granted Dec 23, 2025

Methods and systems for graphics processing using tile based rendering

Inventors: William Robert Stoye (Cambridge, GB); Olof Henrik Uhrenholt (Lomma, SE); Wing-Tsi Henry Wong (Lund, SE); Edward Hardy (Cambridge, GB); Toni Viki Brkic (Staffanstorp, SE); Ole Magnus Ruud (Oslo, NO)
Assignee: Arm Limited
G06T17/20G06T1/20
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,505,619
App. No.
18/357,481
Granted
Dec 23, 2025
Kind
B2
Abstract

When performing tile-based rendering in a graphics processing system, lists indicative of fragments to be processed are maintained for respective sub-regions of tiles to be rendered, with each list entry representing a group of one or more fragments and including an indication of the coverage within the tile sub-region of the group of fragments that the list entry represents. The coverage information for the list entries is then used to set for entries in the list indicative of fragments to be processed for a sub-region, information indicating whether one or more processing operations are eligible to be performed for fragments that entries in the list represent.

Claims (79)

1 . A method of operating a graphics processor when rendering an output using tile-based rendering, in which a plurality of tiles of a render output being generated are rendered separately, and the rendered tiles are combined to form the render output, the method comprising:

for a tile of the render output being generated:

maintaining for each of plural sub-regions of the tile, each sub-region of the tile relating to plural sampling positions of the tile being generated, a list indicative of fragments that are to be processed for the sub-region of the tile for generating the render output, each entry in the list representing a group of one or more fragments;

wherein each entry in the list for a sub-region has associated with it:

coverage information indicating which part of the sub-region the one or more fragments that the entry represents apply to;

the method further comprising:

setting for an entry in the list indicative of fragments to be processed for the sub-region, eligibility information indicating whether one or more processing operations are eligible to be performed for the one or more fragments that said entry in the list represents,

wherein the eligibility information for the one or more processing operations to be performed for the one or more fragments that said entry in the list represents, is set based on the coverage information indicated in one or more other entries within the list.

2 . The method of claim 1 , wherein each list maintained for a sub-region of the tile is a singly-linked list, and new entries are added at the tail of list.

3 . The method of claim 1 , comprising:

when a new group of fragments falls to be processed for a tile, determining whether a list indicative of fragments to be processed already exists for the tile sub-region that the new group of fragments applies to; and

when it is determined that a list indicative of fragments to be processed already exists for the tile sub-region that the new group of fragments applies to, adding the new group of fragments to that existing list;

when it is determined that a list indicative of fragments does not already exist for the tile sub-region that the new group of fragments applies to, generating a new list indicative of fragments to be processed for the tile sub-region in question, and adding the new group of fragments as the first entry in that new list.

4 . The method of claim 1 , comprising:

when a new group of fragments that is to be processed for a tile sub-region is to be added to an existing list indicative of fragments to be processed for the tile sub-region, determining whether the new group of fragments can be merged into an existing entry of the list; and

when it is determined that the new group of fragments can be merged into an existing entry of the list, merging the new group of fragments into that existing entry in the list;

when it is determined that the new group of fragments cannot be merged into an existing entry of the list, adding a new entry to the list for the new group of fragments to be processed for the tile sub-region.

5 . The method of claim 1 , comprising:

indicating that a tile sub-region list needs to be scanned to determine whether an update needs to be made to any entries in the list in response to any one of the following events occurring:

a new group of fragments being added to the list other than as or as part of the head entry in the list;

it being determined that an entry in the list can be deleted; and

the fragment that an entry in the list represents completing a processing operation or operations for which processing operation eligibility information is provided.

6 . The method of claim 1 , comprising as a background process compared to adding new list entries to a tile sub-region list:

performing a scan of a tile sub-region list in order to determine whether any entries in the list need updating, the scan of the list comprising scanning the list from the head of the list to the tail of the list, considering entries in the list in turn.

7 . The method of claim 6 , comprising when scanning a tile sub-region list in order to determine whether any entries in the list need updating:

keeping a record of the accumulated parts of the tile sub-region that entries in the list that have been scanned and that are indicated as being applicable to a processing operation for which processing operation eligibility information is provided apply to; and

determining whether the processing operation eligibility information for that processing operation for a list entry that is being scanned needs to be updated by comparing the part of the sub-region that the entry being scanned applies to with the record of the accumulated parts of the tile sub-region that entries in the list that have been scanned and that are indicated as being applicable to the processing operation for which processing operation eligibility information is provided apply to.

8 . The method of claim 1 , further comprising:

controlling the processing of fragments to be processed for a sub-region of the tile based on the eligibility information in the list entries indicating whether one or more processing operations are eligible to be performed for fragments that entries in the list represent.

9 . The method of claim 1 , wherein:

the maintaining for each of plural sub-regions of the tile, each sub-region of the tile relating to plural sampling positions of the tile being generated, a list indicative of fragments that are to be processed for the sub-region of the tile for generating the render output, each entry in the list representing a group of one or more fragments;

wherein each entry in the list for a sub-region has associated with it:

coverage information indicating which part of the sub-region the one or more fragments that the entry represents apply to;

comprises:

maintaining for each of plural sub-regions of the tile, each sub-region of the tile relating to plural sampling positions of the tile being generated, a list of execution threads that are to be processed for the sub-region of the tile for generating rendered output data for fragments that are to be processed for the sub-region of the tile, each entry in the list representing a set of one or more execution threads;

wherein each entry in the list for a sub-region has associated with it:

coverage information indicating which part of the sub-region the one or more execution threads that the entry represents apply to; and

wherein setting for an entry in the list indicative of fragments to be processed for the sub-region information, eligibility information indicating whether one or more processing operations are eligible to be performed for the one or more fragments the entry in the list represents, comprises:

using the coverage information in a list of execution threads that are to be processed for the sub-region of a tile indicating which part of the sub-region execution threads that entries in the list represent apply to, to set the eligibility information indicating whether one or more processing operations are eligible to be performed for execution threads that the entry in the list represents.

10 . A graphics processor configured to perform tile-based rendering, in which a plurality of tiles of a render output being generated are rendered separately, and the rendered tiles are combined to form the render output, the graphics processor comprising:

a fragment dependency list managing circuit configured to:

maintain for each of plural sub-regions of a tile of the render output being generated, each sub-region of the tile relating to plural sampling positions of the tile being generated, a list indicative of fragments that are to be processed for the sub-region of the tile for generating the render output, each entry in the list representing a group of one or more fragments;

wherein in each entry in the list for a sub-region has associated with it:

coverage information indicating which part of the sub-region the one or more fragments that the entry represents apply to;

the fragment dependency list managing circuit further configured to:

set for an entry in the list indicative of fragments to be processed for the sub-region, eligibility information indicating whether one or more processing operations are eligible to be performed for the one or more fragments that the entry in the list represents,

wherein the eligibility information for the one or more processing operations to be performed for the one or more fragments that said entry in the list represents, is set based on the coverage information indicated in one or more other entries within the list.

11 . The graphics processor of claim 10 , wherein the fragment dependency list managing circuit is configured to maintain each list for a tile sub-region as a singly-linked list, and is configured to add new list entries at the tails of the lists.

12 . The graphics processor of claim 10 , wherein the fragment dependency list managing circuit is configured to, when a new group of fragments falls to be processed for a tile:

determine whether a list indicative of fragments to be processed already exists for the tile sub-region that the new group of fragments applies to; and

when it is determined that a list indicative of fragments to be processed already exists for the tile sub-region that the new group of fragments applies to, add the new group of fragments to that existing list;

when it is determined that a list indicative of fragments does not already exist for the tile sub-region that the new group of fragments applies to, generate a new list indicative of fragments to be processed for the tile sub-region in question, and add the new group of fragments as the first entry in that new list.

13 . The graphics processor of claim 10 , wherein the fragment dependency list managing circuit is configured to, when a new group of fragments that is to be processed for a tile sub-region is to be added to an existing list indicative of fragments to be processed for the tile sub-region:

determine whether the new group of fragments can be merged into an existing entry of the list; and

when it is determined that the new group of fragments can be merged into an existing entry of the list, merging the new group of fragments into that existing entry in the list;

when it is determined that the new group of fragments cannot be merged into an existing entry of the list, add a new entry to the list for the new group of fragments to be processed for the tile sub-region.

14 . The graphics processor of claim 10 , wherein the fragment dependency list managing circuit is configured to indicate that a tile sub-region list needs to be scanned to determine whether an update needs to be made to any entries in the list in response to any one of the following events occurring:

a new group of fragments being added to the list other than as or as part of the head entry in the list;

it being determined that an entry in the list can be deleted; and

the fragment that an entry in the list represents completing a processing operation or operations for which processing operation eligibility information is provided.

15 . The graphics processor of claim 10 , wherein the fragment dependency list managing circuit is configured to perform a scan of a tile sub-region list in order to determine whether any entries in the list need updating, the scan of the list comprising scanning the list from the head of the list to the tail of the list, considering entries in the list in turn.

16 . The graphics processor of claim 15 , wherein the fragment dependency list managing circuit is configured to, when scanning a tile sub-region list in order to determine whether any entries in the list need updating:

keep a record of the parts of the tile sub-region that entries in the list that have been scanned and that are indicated as being applicable to a processing operation for which processing operation eligibility information is provided apply to; and

determine whether the processing operation eligibility information for that processing operation for a list entry that is being scanned needs to be updated by comparing the part of the sub-region that the entry being scanned applies to with the record of the parts of the tile sub-region that entries in the list that have been scanned and that are indicated as being applicable to the processing operation for which processing operation eligibility information is provided apply to.

17 . The graphics processor of claim 10 , further comprising:

a control circuit configured to control the processing of fragments to be processed for a sub-region of a tile based on the information in a list indicative of fragments that are to be processed for the sub-region of the tile indicating whether one or more processing operations are eligible to be performed for fragments that entries in the list represent.

18 . The graphics processor of claim 10 , wherein the fragment dependency list managing circuit is configured to:

maintain for each of plural sub-regions of a tile of a render output being generated, each sub-region of the tile relating to plural sampling positions of the tile being generated, a list of execution threads that are to be processed for the sub-region of the tile for generating rendered output data for fragments that are to be processed for the sub-region of the tile, each entry in the list representing a set of one or more execution threads;

wherein each entry in the list for a sub-region has associated with it:

information indicating which part of the sub-region the one or more execution threads that the entry represents apply to; and to

use the information in a list of execution threads that are to be processed for a sub-region of a tile indicating which part of the sub-region execution threads that entries in the list represent apply to, to set for entries in the list of execution threads to be processed for the sub-region information indicating whether one or more processing operations are eligible to be performed for execution threads that entries in the list represent.

19 . A non-transitory computer readable storage medium storing computer software code which when executing on a processor performs a method of operating a graphics processor when rendering an output using tile-based rendering, in which a plurality of tiles of a render output being generated are rendered separately, and the rendered tiles are combined to form the render output, the method comprising:

for a tile of the render output being generated:

maintaining for each of plural sub-regions of the tile, each sub-region of the tile relating to plural sampling positions of the tile being generated, a list indicative of fragments that are to be processed for the sub-region of the tile for generating the render output, each entry in the list representing a group of one or more fragments;

wherein each entry in the list for a sub-region has associated with it:

coverage information indicating which part of the sub-region the one or more fragments that the entry represents apply to;

the method further comprising:

setting for an entry in the list indicative of fragments to be processed for the sub-region, eligibility information indicating whether one or more processing operations are eligible to be performed for the one or more fragments that the entry in the list represents;

wherein the eligibility information for the one or more processing operations to be performed for the one or more fragments that said entry in the list represents, is set based on the coverage information indicated in one or more other entries within the list.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2023
From: STOYE, WILLIAM ROBERT; UHRENHOLT, OLOF HENRIK; WONG, WING-TSI HENRY; HARDY, EDWARD; BRKIC, TONI VIKI; RUUD, OLE MAGNUS
To: ARM LIMITED
Reel/Frame 064364/0470 →
Priority Claims (1)
GB 2211098 · Jul 29, 2022 · national
Continuity (1)
Related Publication 20240037853A1 · Feb 1, 2024
References Cited (21)
US 6650791B1 · Cullen · 2003 [cited by applicant]
US 10204391B2 · Heggelund · 2019 [cited by applicant]
US 11532115B2 · Yang · 2022 [cited by examiner]
US 11551401B2 · Yang · 2023 [cited by examiner]
US 11699258B2 · Yang · 2023 [cited by examiner]
US 20100177105A1 · Nystad · 2010 [cited by applicant]
US 20140354664A1 · Brown · 2014 [cited by applicant]
US 20150161814A1 · Engh-Halstvedt et al. · 2015 [cited by applicant]
US 20170221177A1 · Worcester et al. · 2017 [cited by applicant]
US 20170316601A1 · Kakarlapudi et al. · 2017 [cited by applicant]
US 20170337656A1 · Vembu et al. · 2017 [cited by applicant]
US 20180144437A1 · Kakarlapudi · 2018 [cited by applicant]
US 20190057536A1 · Fenney · 2019 [cited by applicant]
US 20200202481A1 · Brigg et al. · 2020 [cited by applicant]
US 20210256746A1 · Jesus et al. · 2021 [cited by applicant]
US 20220237730A1 · Brkic · 2022 [cited by applicant]
Combined Search and Examination Report under Sections 17 and 18(3) dated Feb. 1, 2023, GB Patent Application No. GB2211098.5. [cited by applicant]
Combined Search and Examination Report under Sections 17 and 18(3), dated Feb. 1, 2023, GB Patent Application No. 2211099.3. [cited by applicant]
Non-final Office Action dated May 7, 2025, U.S. Appl. No. 18/357,461, filed Jul. 24, 2023. [cited by applicant]
Response to Office Action dated Jul. 25, 2025, U.S. Appl. No. 18/357,461, filed Jul. 24, 2023. [cited by applicant]
Non-final Office Action dated Sep. 3, 2025, U.S. Appl. No. 18/357,461, filed Jul. 24, 2023. [cited by applicant]