IP Library Granted Patent US 12,266,052
Granted Patent B2
US 12,266,052 · App. 17/989,548 · Granted Apr 1, 2025

Graphics processors

Inventors: Tord Kvestad Øygard (Kirkenes, NO); Philip Carlos Garcia (Austin, TX); Sandeep Kakarlapudi (Trondheim, NO)
Assignee: Arm Limited
G06T15/405G06T15/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,266,052
App. No.
17/989,548
Granted
Apr 1, 2025
Kind
B2
Abstract

When performing tile-based rendering a first, pre-pass operation in which primitives in a sequence of primitives for a tile are processed to determine visibility information for the sequence of primitives, the visibility information being usable to determine whether or not fragments for a primitive in the sequence of primitives should subsequently be processed further for the render output, is performed. Thereafter a second, main pass operation is performed in which the further processing of fragments for primitives that were processed during the first, pre-pass operation is controlled based on the determined visibility information for the sequence of primitives, such that for fragments for which the visibility information indicates that the fragments should not be processed further for the render output some or all of the processing during the second, main pass is omitted. The visibility information indicates which primitives should be rendered for which sampling positions of the render output.

Claims (30)

1. A method of operating a graphics processor, the method comprising:

for a sequence of primitives to be rendered for a render output:

performing a first, pre-pass operation in which primitives in the sequence of primitives to be rendered are processed into respective sets of one or more fragments, each fragment associated with a respective set of one or more sampling positions within the render output, and wherein as part of the first, pre-pass operation fragments for primitives in the sequence of primitives are processed to determine visibility information for the sequence of primitives,

wherein the determined visibility information comprises a set of primitive identifying information, the set of primitive identifying information storing for respective sampling positions within the render output respective primitive identifiers, where the primitive identifier stored for a respective sampling position indicates the primitive in the sequence of primitives that should subsequently be processed further for the sampling position; and

thereafter performing a second, main pass operation in which at least some of the primitives that were processed by the first, pre-pass operation are processed again into their respective sets of one or more fragments for processing for respective sampling positions within the render output, wherein the processing for a fragment during the second, main pass operation comprises a step of visibility testing in which a primitive identifier associated with the fragment is tested against a corresponding entry in the set of primitive identifying information for the sampling position(s) to which the fragment relates to determine whether or not the fragment should be further processed for the sampling position(s),

wherein as part of the second, main pass operation, fragments are subject to one of a set of plural different visibility tests to test the associated primitive identifiers for the fragments against the set of primitive identifying information, wherein the one of the set of plural different visibility tests that is used for a particular fragment is determined based on whether or not the primitive was capable of generating visibility information during the first, pre-pass operation,

wherein for primitives that were not capable of generating visibility information during the first, pre-pass operation, but are to be processed during the second, main pass operation, the visibility testing of fragments for such primitives against the set of primitive identifying information that is performed during the second, main pass operation comprises determining whether a primitive identifier value for the primitive associated with the fragment is either greater than or less than the primitive identifier that is stored corresponding entry in the set of primitive identifying information for the sampling position(s) to which the fragment relates to determine whether or not the fragment should be further processed for the sampling position(s).

2. The method of claim 1 , wherein the set of primitive identifying information stores either a respective primitive identifier or a value indicating the sampling position is not covered by a primitive for each sampling position within the render output.

3. The method of claim 1 , wherein the primitive identifiers uniquely identify primitives within the sequence of primitives.

4. The method of claim 3 , wherein the primitive identifiers for the sequence of primitives monotonically change within the sequence of primitives from a particular starting value.

5. The method of claim 1 , wherein the first, pre-pass operation comprises depth testing fragments using a depth buffer for the sequence of primitives, and wherein when a fragment causes an update to the depth buffer, the primitive identifier associated with the fragment is written to a corresponding entry or entries in the set of primitive identifying information for the sampling position or positions to which the fragment relates.

6. The method of claim 1 , wherein at least for primitives that were processed during the first, pre-pass operation, and which were capable of updating the set of primitive identifying information, the visibility testing against the set of primitive identifying information that is performed during the second, main pass operation for a fragment comprises determining whether a primitive identifier associated with the fragment matches a corresponding entry in the set of primitive identifying information for the sampling position(s) to which the fragment relates to determine whether or not the fragment should be further processed for the sampling position(s).

7. The method of claim 1 , wherein for primitives that were not capable of generating visibility information during the first, pre-pass operation, and for which the associated fragments survive the visibility testing against the set of primitive identifying information during the second, main pass operation, the surviving fragments are subject to further depth testing during the second, main pass operation, wherein the further depth testing comprises depth testing the fragments against a depth buffer generated during the first, pre-pass operation.

8. The method of claim 1 , wherein the set of primitive identifying information for the sequence of primitives is discarded once the processing for the sequence of primitives is completed.

9. A graphics processor that is configured to generate a render output, the graphics processor comprising a rasterising circuit that is operable to rasterise primitives into respective set of one or more fragments and a rendering circuit that is operable to process the resulting fragments to generate rendered output data, wherein the graphics processor is configured to:

for a sequence of primitives to be rendered for a render output:

perform a first, pre-pass operation in which primitives in the sequence of primitives to be rendered are processed by:

the rasterising circuit rasterising the primitives into respective sets of one or more fragments, each fragment associated with a respective set of one or more sampling positions within the render output; and

a fragment visibility determining circuit processing, as part of the first, pre-pass operation, fragments for primitives in the sequence of primitives to determine visibility information for the sequence of primitives,

wherein the determined visibility information comprises a set of primitive identifying information, the set of primitive identifying information storing for respective sampling positions within the render output respective primitive identifiers, where the primitive identifier stored for a respective sampling position indicates the primitive in the sequence of primitives that should subsequently be processed further for the sampling position; and

thereafter perform a second, main pass operation in which at least some primitives that were processed by the first, pre-pass operation are processed again by the rasterising circuit rasterising the primitives into their respective sets of one or more fragments for processing for respective sampling positions within the render output, wherein as part of the second, main pass operation a visibility testing circuit controls the further processing of fragments by performing visibility testing in which primitive identifiers associated with the fragments are tested against corresponding entries in the set of primitive identifying information for the sampling position or positions to which the fragments relate to determine whether or not the fragments should be further processed for the sampling position or positions,

wherein as part of the second, main pass operation, fragments are subject to one of a set of plural different visibility tests to test the associated primitive identifiers for the fragments against the set of primitive identifying information, wherein the one of the set of plural different visibility tests that is used for a particular fragment is determined based on whether or not the primitive was capable of generating visibility information during the first, pre-pass operation,

wherein for primitives that were not capable of generating visibility information during the first, pre-pass operation, but are to be processed during the second, main pass operation, the visibility testing for fragments of such primitives against the set of primitive identifying information that is performed during the second, main pass operation comprises determining whether a primitive identifier associated with the fragment is either greater than or less than the primitive identifier that is stored in the set of primitive identifying information for the sampling position(s) to which the fragment relates to determine whether or not the fragment should be further processed for the sampling position(s).

10. The graphics processor of claim 9 , wherein the set of primitive identifying information is capable of storing either a respective primitive identifier or a value indicating the sampling position is not covered by a primitive for each sampling position within the render output.

11. The graphics processor of claim 9 , wherein each primitive identifier uniquely identifies a primitive within the sequence of primitives.

12. The graphics processor of claim 11 , wherein the primitive identifiers for the sequence of primitives monotonically change within the sequence of primitives from a particular starting value.

13. The graphics processor of claim 9 , wherein the graphics processor is configured to: during the first, pre-pass operation: perform depth testing of fragments using a depth buffer for the sequence of primitives, and wherein when a fragment causes an update to the depth buffer, the primitive identifier associated with the fragment is written to a corresponding entry or entries in the set of primitive identifying information for the sampling position or positions to which the fragment relates.

14. The graphics processor of claim 9 , wherein at least for primitives that were processed during the first, pre-pass operation, and which were capable of updating the set of primitive identifying information, the visibility testing against the set of primitive identifying information that is performed during the second, main pass operation for a fragment comprises determining whether a primitive identifier associated with the fragment is equal to a corresponding entry in the set of primitive identifying information for the sampling position(s) to which the fragment relates to determine whether or not the fragment should be further processed for the sampling position(s).

15. The graphics processor of claim 9 , wherein for primitives that were not capable of generating visibility information during the first, pre-pass operation, and for which the associated fragments survive the visibility testing during the second, main pass, the graphics processor is further configured to: subject the fragments to further depth testing during the second, main pass operation, wherein the further depth testing comprises depth testing the fragments against a depth buffer generated during the first, pre-pass operation.

16. The graphics processor of claim 9 , wherein the graphics processor is configured to discard the set of primitive identifying information for the sequence of primitives once the processing for the sequence of primitives is completed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2023
From: ØYGARD, TORD KVESTAD; GARCIA, PHILIP; KAKARLAPUDI, SANDEEP
To: LIMITED, ARM
Reel/Frame 062650/0459 →
Continuity (1)
Related Publication 20240169663A1 · May 23, 2024
References Cited (68)
US 6092097A · Suzuoka · 2000 [cited by applicant]
US 6246415B1 · Grossman et al. · 2001 [cited by applicant]
US 6480205B1 · Greene et al. · 2002 [cited by applicant]
US 6535209B1 · Abdalla et al. · 2003 [cited by applicant]
US 7023437B1 · Voorhies et al. · 2006 [cited by applicant]
US 7375727B1 · Greene et al. · 2008 [cited by applicant]
US 8325184B2 · Jiao et al. · 2012 [cited by applicant]
US 8698820B2 · Cox et al. · 2014 [cited by applicant]
US 9626795B2 · Sathe · 2017 [cited by applicant]
US 9767595B2 · Nystad et al. · 2017 [cited by applicant]
US 10074210B1 · Spencer et al. · 2018 [cited by applicant]
US 10096147B2 · Goel et al. · 2018 [cited by applicant]
US 11030783B1 · Engh-Halstvedt · 2021 [cited by examiner]
US 12154224B2 · Achrenius et al. · 2024 [cited by applicant]
US 20020196252A1 · Liao et al. · 2002 [cited by applicant]
US 20070257905A1 · French et al. · 2007 [cited by applicant]
US 20140218390A1 · Rouet et al. · 2014 [cited by applicant]
US 20140267256A1 · Heggelund et al. · 2014 [cited by applicant]
US 20140354661A1 · Balci et al. · 2014 [cited by applicant]
US 20150062154A1 · Ellis et al. · 2015 [cited by applicant]
US 20160005140A1 · Engh-Halstvedt et al. · 2016 [cited by applicant]
US 20160035129A1 · Bolz · 2016 [cited by examiner]
US 20160098856A1 · Broadhurst et al. · 2016 [cited by applicant]
US 20160217608A1 · Howson · 2016 [cited by applicant]
US 20170161940A1 · Liktor et al. · 2017 [cited by applicant]
US 20170178386A1 · Redshaw · 2017 [cited by examiner]
US 20180025463A1 · Kazakov et al. · 2018 [cited by applicant]
US 20180082467A1 · Andersson et al. · 2018 [cited by applicant]
US 20180082469A1 · Andersson et al. · 2018 [cited by applicant]
US 20180197323A1 · Howson et al. · 2018 [cited by applicant]
US 20180268604A1 · Story · 2018 [cited by examiner]
US 20180349315A1 · Heggelund et al. · 2018 [cited by applicant]
US 20190088009A1 · Forey et al. · 2019 [cited by applicant]
US 20190311535A1 · Lacey · 2019 [cited by examiner]
US 20190362533A1 · Fuller · 2019 [cited by applicant]
US 20200134894A1 · Uhrenholt · 2020 [cited by applicant]
US 20200312020A1 · Zhong et al. · 2020 [cited by applicant]
US 20200402297A1 · Brigg et al. · 2020 [cited by applicant]
US 20210065437A1 · Brkic et al. · 2021 [cited by applicant]
US 20210110510A1 · Brigg et al. · 2021 [cited by applicant]
US 20210407191A1 · Yang et al. · 2021 [cited by applicant]
US 20220092801A1 · Achrenius et al. · 2022 [cited by applicant]
US 20220207827A1 · Acharya et al. · 2022 [cited by applicant]
US 20220237730A1 · Brkic · 2022 [cited by applicant]
US 20240087078A1 · Ashkar et al. · 2024 [cited by applicant]
US 20240169639A1 · Oygard et al. · 2024 [cited by applicant]
WO 2018052592A1 · 2018 [cited by applicant]
Combined Search and Examination Report under Sections 17 and 18(3) dated May 24, 2023, GB Patent Application No. GB 2217223.3, pp. 1-6. [cited by applicant]
Combined Search and Examination Report under Sections 17 and 18(3) dated May 30, 2023, GB Patent Application No. GB 2217253.0, pp. 1-6. [cited by applicant]
Search Report under Section 17 dated May 19, 2023, GB Patent Application No. GB 2217247.2, pp. 1-4. [cited by applicant]
Combined Search and Examination Report under Sections 17 and 18(3) dated May 19, 2023, GB Patent Application No. GB 2217238.1, pp. 1-7. [cited by applicant]
Search Report under Section 17 dated Jun. 19, 2023, GB Patent Application No. GB 2217246.4, pp. 1-4. [cited by applicant]
Øygard, T.K., et al., “Graphics Processors”, U.S. Appl. No. 18/509,426, filed Nov. 15, 2023. [cited by applicant]
Øygard, T.K., et al., “Graphics Processors”, U.S. Appl. No. 17/989,671, filed Nov. 17, 2022. [cited by applicant]
Øygard, T.K., et al., “Graphics Processors”, U.S. Appl. No. 18/509,432, filed Nov. 15, 2023. [cited by applicant]
Øygard, T.K., et al., “Graphics Processors”, U.S. Appl. No. 18/509,436, filed Nov. 15, 2023. [cited by applicant]
Øygard, T.K., et al., “Graphics Processors”, U.S. Appl. No. 18/509,439, filed Nov. 15, 2023. [cited by applicant]
Kjøll, P.K., et al., “Graphics Processors”, U.S. Appl. No. 18/509,679, filed Nov. 15, 2023. [cited by applicant]
Ruud, O.M., et al., “Graphics Processors”, U.S. Appl. No. 18/509,441, filed Nov. 15, 2023. [cited by applicant]
Ruud, O.M., et al., “Graphics Processors”, U.S. Appl. No. 18/509,448, filed Nov. 15, 2023. [cited by applicant]
Ruud, O.M., et al., “Graphics Processors”, U.S. Appl. No. 18/509,676, filed Nov. 15, 2023. [cited by applicant]
Ruud, O.M., et al., “Graphics Processors”, U.S. Appl. No. 18/509,687, filed Nov. 15, 2023. [cited by applicant]
PCT International Search Report and Written Opinion, dated Feb. 19, 2024, PCT International Application No. PCT/GB2023/052995, pp. 1-17. [cited by applicant]
Combined Search and Examination Report under Sections 17 and 18(3) dated Jun. 3, 2024, GB Patent Application No. GB 2317492.3, pp. 1-7. [cited by applicant]
Non-Final Office Action dated Aug. 14, 2024, U.S. Appl. No. 17/989,671, 37 pages. [cited by applicant]
Extended European Search Report dated Jul. 5, 2024, European Patent Application No. 23210210.3, pp. 1-10. [cited by applicant]
Response to Non-Final Office Action dated Nov. 14, 2024, U.S. Appl. No. 17/989,671, 16 pages. [cited by applicant]
Notice of Allowance dated Jan. 23, 2025, U.S. Appl. No. 17/989,671, 30 pages. [cited by applicant]
Cited By (2)
US 12,626,462 US 12,639,881