IP Library Granted Patent US 12,475,648
Granted Patent B2
US 12,475,648 · App. 18/628,914 · Granted Nov 18, 2025

Generation of a control stream for a tile

Inventors: Xile Yang (Rickmansworth, GB); Lorenzo Belli (Hemel Hempstead, GB); Richard Broadhurst (Chipperfield, GB)
Assignee: Imagination Technologies Limited
G06T17/20G06T11/40G06T15/005G06T17/10G06T2210/12G06T2210/21
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,475,648
App. No.
18/628,914
Granted
Nov 18, 2025
Kind
B2
Abstract

A method of processing primitives within a tiling unit of a graphics processing system comprises determining whether a primitive falls within a tile based on positions of samples within each pixel. If it is determined that the primitive does fall within a tile based on the positions of samples within pixels in a tile, an association between the tile and the primitive is stored to indicate that the primitive is present in the tile. For example, an identifier for the primitive may be added to a control stream for the tile to indicate that the primitive is present in the tile. Various different methods are described to make the determination and these may be used separately or in any combination.

Claims (74)

1 . A method of processing primitives within a tiling unit of a graphics processing system, the method comprising:

forming a sub-polygon inside a tile, the sub-polygon representing part of a primitive that overlaps the tile;

determining whether the sub-polygon overlaps any sample positions within the tile, to thereby determine whether the primitive falls within the tile; and

storing an association between the tile and the primitive to indicate that the primitive is present in the tile if the primitive is determined to fall within the tile.

2 . The method according to claim 1 , wherein said storing an association between the tile and the primitive comprises adding an identifier for the primitive to a control stream for the tile.

3 . The method according to claim 1 , wherein said storing an association between the tile and the primitive comprises adding an identifier for the tile to a tile list for the primitive.

4 . The method according to claim 1 , further comprising rendering primitives in a tile using the stored associations, wherein the rendering is performed at each sample position within the tile.

5 . The method according to claim 1 , wherein the determination is performed at a reduced sample precision.

6 . The method according to claim 1 , wherein said determining whether the sub-polygon overlaps any of the sample positions within the tile comprises:

generating a bounding box of the sub-polygon; and

determining whether the primitive falls within the tile based on the bounding box of the sub-polygon.

7 . The method according to claim 6 , wherein determining whether a primitive falls within a tile based the bounding box of the sub-polygon comprises:

determining if the bounding box of the sub-polygon overlaps any samples in the tile; and

in response to determining that the bounding box of the sub-polygon overlaps any samples in the tile, determining that the primitive falls within the tile.

8 . The method according to claim 7 , wherein generating intersection points between edges of the primitive and boundaries of the tile comprises:

generating a bounding box of the tile at sample precision; and

generating intersection points between edges of the primitive and edges of the bounding box of the tile at sample precision.

9 . The method according to claim 7 , wherein forming a sub-polygon inside the tile by replacing vertices of the primitive outside the tile with the intersection points comprises:

forming an initial sub-polygon inside the tile by replacing vertices of the primitive outside the tile with the intersection points; and

if the initial sub-polygon has more than three vertices, dividing the initial sub-polygon into a plurality of smaller sub-polygons, each having only three vertices,

and wherein a bounding box is generated at sample precision for each smaller sub-polygon and it is determined, for each generated bounding box, if it overlaps any samples in the tile.

10 . The method according to claim 7 , wherein determining if the bounding box of the sub-polygon overlaps any samples in the tile comprises:

identifying four sampling locations in the tile using the bounding box of the sub-polygon; and

determining if the bounding box of the sub-polygon misses all four sampling locations in the tile.

11 . The method according to claim 6 , wherein determining whether a primitive falls within a tile based on the bounding box of the sub-polygon comprises:

testing each edge of the sub-polygon which is also part of an edge of the primitive against each sample point in the bounding box of the sub-polygon to determine if any sample point is inside the sub-polygon; and

in response to determining that any sample point is inside the sub-polygon, determining that the primitive falls within the tile.

12 . The method according to claim 11 , wherein generating intersection points between edges of the primitive and boundaries of the tile comprises:

generating a bounding box of the tile at sample precision; and

generating any intersection points between edges of the primitive and edges of the bounding box of the tile at sample precision.

13 . The method according to claim 11 , wherein forming a sub-polygon inside the tile by replacing vertices of the primitive outside the tile with the intersection points comprises:

forming an initial sub-polygon inside the tile by replacing vertices of the primitive outside the tile with the intersection points; and

if the initial sub-polygon has more than three vertices, dividing the initial sub-polygon into a plurality of smaller sub-polygons, each having only three vertices;

wherein a bounding box is generated at sample precision for each smaller sub-polygon; and

wherein testing each edge of the sub-polygon which is also part of an edge of the primitive against each sample point in the bounding box of the sub-polygon to determine if any sample point is inside the sub-polygon comprises:

for each smaller sub-polygon, testing each edge of the smaller sub-polygon which is also part of an edge of the primitive against each sample point in the bounding box of the smaller sub-polygon to determine if any sample point is inside the smaller sub-polygon.

14 . The method according to claim 11 , wherein testing each edge of the sub-polygon which is also part of an edge of the primitive against each sample point in the bounding box of the sub-polygon to determine if any sample point is inside the sub-polygon comprises:

computing edge parameters for each edge of the sub-polygon which is also part of an edge of the primitive; and

testing each sample point in the bounding box of the sub-polygon against each edge.

15 . The method according to claim 1 , wherein determining whether a primitive falls within a tile based on positions of samples within pixels in a tile further comprises:

generating a bounding box of the tile at sample precision;

generating a bounding box of the primitive at sample precision;

determining if the bounding boxes overlap; and

in response to determining that the bounding boxes do not overlap, determining that the primitive does not fall within the tile.

16 . The method according to claim 1 , wherein determining whether a primitive falls within a tile based on positions of samples within a pixel comprises:

determining how many vertices of the primitive fall within the tile;

in response to determining that two or more vertices fall within the tile, determining that the primitive falls within the tile;

in response to determining that less than two vertices fall within the tile, generating any intersection points between edges of the primitive and boundaries of the tile;

in response to generating more than two intersection points, determining that the primitive falls within the tile;

in response to generating exactly two intersection points for a primitive with only one vertex in the tile and where the intersection points are on different boundaries of the tile, determining that the primitive falls within the tile;

in response to generating exactly two intersection points for a primitive with no vertices in the tile and where the intersection points are on the same boundary of the tile or on different boundaries of the tile that do not cross within the primitive, determining that the primitive falls within the tile; and

in response to generating exactly two intersection points for a primitive with only one vertex in the tile and where the intersection points are on same boundary of the tile and in response to generating exactly two intersection points for a primitive with no vertices in the tile and where the intersection points are on different boundaries of the tile which cross within the primitive:

forming a sub-polygon inside the tile by replacing vertices of the primitive outside the tile with the intersection points;

generating a bounding box of the sub-polygon at sample precision;

determining if the bounding box of the sub-polygon overlaps any samples in the tile;

in response to determining that the bounding box of the sub-polygon overlaps any samples in the tile, determining that the primitive falls within the tile;

in response to determining that the bounding box of the sub-polygon does not overlap any samples in the tile, testing each edge of the sub-polygon which is also part of an edge of the primitive against each sample point in the bounding box of the sub-polygon to determine if any sample point is inside the sub-polygon; and

in response to determining that any sample point is inside the sub-polygon, determining that the primitive falls within the tile.

17 . The method according to claim 16 , further comprising, prior to determining how many vertices of the primitive fall within the tile:

generating a bounding box of the tile at sample precision;

generating a bounding box of the primitive at sample precision; and

determining if the bounding boxes overlap; and

only in response to determining that the bounding boxes overlap, determining how many vertices of the primitive fall within the tile.

18 . A graphics processing system comprising a tiling unit for processing primitives for each of a plurality of tiles, the tiling unit being configured to:

form a sub-polygon inside a tile, the sub-polygon representing part of a primitive that overlaps the tile;

determine whether the sub-polygon overlaps sample positions within the tile, to thereby determine whether the primitive falls within the tile; and

cause an association between the tile and the primitive to be stored to indicate that the primitive is present in the tile if the primitive is determined to fall within the tile.

19 . The graphics processing system according to claim 18 , wherein the tiling unit is configured to determine whether the sub-polygon overlaps any of the sample positions within the tile by:

generating a bounding box of the sub-polygon; and

determining whether the primitive falls within the tile based on the bounding box of the sub-polygon.

20 . A non-transitory computer readable storage medium having stored thereon a computer readable dataset of an integrated circuit that, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to manufacture a graphics processing system comprising a tiling unit for processing primitives for each of a plurality of tiles, the tiling unit being configured to:

forma sub-polygon inside a tile, the sub-polygon representing part of a primitive that overlaps the tile;

determine whether the sub-polygon overlaps sample positions within the tile, to thereby determine whether the primitive falls within the tile; and

cause an association between the tile and the primitive to be stored to indicate that the primitive is present in the tile if the primitive is determined to fall within the tile.

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 1607524 · Apr 29, 2016 · national
GB 1607526 · Apr 29, 2016 · national
GB 1607528 · Apr 29, 2016 · national
Continuity (5)
Continuation 17877648 · Jul 29, 2022
Continuation 16929226 · Jul 15, 2020
Continuation 16162182 · Oct 16, 2018
Continuation 15499038 · Apr 27, 2017
Related Publication 20240257465A1 · Aug 1, 2024
References Cited (30)
US 6597636B1 · Duluk, Jr. et al. · 2003 [cited by applicant]
US 7400325B1 · Gimby et al. · 2008 [cited by applicant]
US 7804499B1 · Molnar · 2010 [cited by examiner]
US 8508544B1 · Molnar · 2013 [cited by examiner]
US 8605102B1 · Purcell · 2013 [cited by examiner]
US 8692829B2 · Hakura et al. · 2014 [cited by applicant]
US 8704836B1 · Rhoades et al. · 2014 [cited by applicant]
US 9495781B2 · Lum et al. · 2016 [cited by applicant]
US 9754344B2 · Brothers et al. · 2017 [cited by applicant]
US 10140761B2 · Yang et al. · 2018 [cited by applicant]
US 10733796B2 · Yang et al. · 2020 [cited by applicant]
US 10832371B2 · Doyle et al. · 2020 [cited by applicant]
US 11132835B1 · Uhrenholt · 2021 [cited by examiner]
US 20090195552A1 · Nystad · 2009 [cited by examiner]
US 20110080406A1 · Hakura et al. · 2011 [cited by applicant]
US 20130342547A1 · Lum et al. · 2013 [cited by applicant]
US 20140139534A1 · Tapply · 2014 [cited by examiner]
US 20190051047A1 · Yang et al. · 2019 [cited by applicant]
US 20200034266A1 · Kleiner et al. · 2020 [cited by applicant]
US 20200320776A1 · Doyle et al. · 2020 [cited by applicant]
US 20210279954A1 · Yang et al. · 2021 [cited by applicant]
GB 2401522A · 2004 [cited by applicant]
GB 2511817A · 2014 [cited by applicant]
Salvi M, Vidime K. Surface based anti-aliasing. InProceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games Mar. 9, 2012 (pp. 159-164). [cited by examiner]
Antochi et al., “Scene Management Models and Overlap Tests for Tile-Based Rendering,” Proceedings of the EUROMICRO Systems on Digital System Design (DSD '04), Aug. 31, 2004, pp. 424-431. [cited by applicant]
Woo et al., “Fast Tile-Binning Method by Detecting ID-Overlapped Primitives,” 2013 IEEE International Conference on Consumer Electronics (ICCE), Jan. 11, 2013, pp. 147-148. [cited by applicant]
Direct3D 11.3 Functional Specification, Version 1.16, Apr. 23, 2015. [cited by applicant]
The Ryg Blog, “A Trip Through the Graphics Pipeline 2011, part 8,” Jul. 10, 2011, https://giesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index. [cited by applicant]
Fuchs et al., “Pixel-planes 5: A Heterogeneous Multiprocessor Graphics System Using Processor-Enhanced Memories,” ACM Siggraph Computer Graphics, Jul. 1989, vol. 23, No. 3, pp. 79-88. [cited by applicant]
GeoTIFF, “The Hacks of Life” GeoTIFF and Off-by-One, Jul. 7, 2009. [cited by applicant]