IP Library Granted Patent US 12,243,149
Granted Patent B2
US 12,243,149 · App. 18/184,094 · Granted Mar 4, 2025

Graphics processing

Inventors: Wei Shao (Cambridge, GB); Frank Klaeboe Langtind (Melhus, NO)
Assignee: Arm Limited
G06T15/005G06T11/40G06T15/80
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,243,149
App. No.
18/184,094
Granted
Mar 4, 2025
Kind
B2
Abstract

When performing tile-based graphics processing, a first vertex shading operation to generate vertex shaded position data for vertices is performed, and the vertex shaded position data used to prepare primitive lists indicating which primitives should be rendered for respective rendering tiles. Then, when processing a tile, a second vertex shading operation is performed for vertices of primitives for the tile for which fragments have been generated by a rasteriser prior to rendering the graphics fragments, to generate vertex shaded non-position attribute data for the vertices, based on the results of early depth testing before the fragments are rendered.

Claims (60)

1. A method of performing tile-based graphics processing, in which a render output to be generated is processed as a plurality of tiles for rendering purposes, the method comprising:

performing a first vertex shading operation on one or more vertices of a set of vertices for a set of primitives to be processed for generating a render output, each vertex having associated with it a plurality of vertex attributes, the first vertex shading operation generating vertex shaded attribute data for at least some but not all of the plurality of vertex attributes of the one or more vertices, and including at least generating vertex shaded position data for the one or more vertices; and

using the vertex shaded position data generated by the first vertex shading operation to prepare primitive lists indicative of which primitives of the set of primitives should be rendered for respective rendering tiles that the render output being generated has been divided into for rendering purposes;

the method further comprising:

when processing primitives for a tile of the render output being generated:

rasterising primitives to be processed for the tile to generate corresponding fragments for rendering the primitives;

performing culling testing before rendering fragments; and

subjecting fragments generated by the rasteriser that pass the culling testing to rendering;

wherein the method further comprises:

performing a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser.

2. The method of claim 1 , wherein the first vertex shading operation only generates vertex shaded position data for the one or more vertices.

3. The method of claim 1 , wherein:

the second vertex shading operation operates to vertex shade one or more non-position attributes for the vertices.

4. The method of claim 1 , wherein:

the vertex shaded attributes data generated by the second vertex shading operation is stored in an intermediate storage of the graphics processor, without being written to main memory.

5. The method of claim 1 , wherein performing a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser comprises:

starting the second vertex shading operation for vertices based on the results of the culling testing before rendering fragments generated by the rasteriser.

6. The method of claim 1 , comprising:

starting the second vertex shading operation for vertices after the rasterisation and the culling testing before rendering, and based on, and in response to, fragments that pass the culling testing before rendering.

7. The method of claim 1 , wherein performing a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser comprises:

stopping a second vertex shading operation that is being performed for a vertex based on the results of the culling testing before rendering fragments generated by the rasteriser.

8. The method of claim 1 , wherein performing a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser comprises:

determining, based on the results of the culling testing before rendering fragments, whether the second vertex shading operation for a vertex for which the second vertex shading operation has been requested should be stopped, and in response to determining that the second vertex shading operation for a vertex should be stopped, sending a request that the second vertex shading operation for the vertex be stopped.

9. The method of claim 1 , wherein:

the culling testing before rendering fragments comprises depth testing before rendering fragments.

10. A graphics processor operable to perform tile-based graphics processing, in which a render output to be generated is processed as a plurality of tiles for rendering purposes, the graphics processor comprising:

a vertex shader circuit configured to perform a first vertex shading operation on one or more vertices of a set of vertices for a set of primitives to be processed for generating a render output, each vertex having associated with it a plurality of vertex attributes, the first vertex shading operation generating vertex shaded attribute data for at least some but not all of the plurality of vertex attributes of the one or more vertices, and including at least generating vertex shaded position data for the one or more vertices; and

a tiling circuit configured to use the vertex shaded position data generated by the first vertex shading operation to prepare primitive lists indicative of which primitives of a set of primitives should be rendered for respective rendering tiles that a render output being generated has been divided into for rendering purposes;

a rasteriser circuit configured to rasterise primitives to be processed for a tile of a render output being generated to generate corresponding fragments for rendering the primitives;

a culling testing circuit configured to perform culling testing prior to rendering fragments generated by the rasteriser; and

a rendering circuit configured to render fragments generated by the rasteriser that pass the culling testing;

wherein the graphics processor further comprises:

a control circuit configured to control the performing of a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser.

11. The graphics processor of claim 10 , wherein the first vertex shading operation only generates vertex shaded position data for the one or more vertices.

12. The graphics processor of claim 10 , wherein:

the second vertex shading operation operates to vertex shade one or more non-position attributes for the vertices.

13. The graphics processor of claim 10 , wherein:

the graphics processor is configured to store the vertex shaded attributes data generated by the second vertex shading operation in an intermediate storage of the graphics processor.

14. The graphics processor of claim 10 , wherein the control circuit configured to control the performing of a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser is configured to:

trigger the second vertex shading operation for vertices based on the results of the culling testing before rendering fragments generated by the rasteriser.

15. The graphics processor of claim 10 , wherein the control circuit configured to control the performing of a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser is configured to:

trigger the second vertex shading operation for vertices after the rasterisation and the culling testing before rendering, and based on, and in response to, fragments that pass the culling testing before rendering.

16. The graphics processor of claim 10 , wherein the control circuit configured to control the performing of a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser is configured to:

stop a second vertex shading operation that is being performed for a vertex based on the results of the culling testing before rendering fragments generated by the rasteriser.

17. The graphics processor of claim 10 , wherein the control circuit configured to control the performing of a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser is configured to:

determine, based on the results of the culling testing before rendering fragments, whether the second vertex shading operation for a vertex for which the second vertex shading operation has been requested should be stopped, and in response to determining that the second vertex shading operation for a vertex should be stopped, send a request that the second vertex shading operation for the vertex be stopped.

18. The graphics processor of claim 17 , wherein the control circuit is configured to:

determine that the second vertex shading operation for a vertex should be stopped in response to a primitive that uses the vertex being culled as a result of the culling testing before rendering.

19. The graphics processor of claim 10 , wherein:

the culling testing before rendering fragments comprises depth testing before rendering fragments.

20. A non-transitory computer readable storage medium comprising computer software code which when executing on at least one processor performs a method of performing tile-based graphics processing, in which a render output to be generated is processed as a plurality of tiles for rendering purposes, the method comprising:

performing a first vertex shading operation on one or more vertices of a set of vertices for a set of primitives to be processed for generating a render output, each vertex having associated with it a plurality of vertex attributes, the first vertex shading operation generating vertex shaded attribute data for at least some but not all of the plurality of vertex attributes of the one or more vertices, and including at least generating vertex shaded position data for the one or more vertices; and

using the vertex shaded position data generated by the first vertex shading operation to prepare primitive lists indicative of which primitives of the set of primitives should be rendered for respective rendering tiles that the render output being generated has been divided into for rendering purposes;

the method further comprising:

when processing primitives for a tile of the render output being generated:

rasterising primitives to be processed for the tile to generate corresponding fragments for rendering the primitives;

performing culling testing before rendering fragments; and

subjecting fragments generated by the rasteriser that pass the culling testing to rendering;

wherein the method further comprises:

performing a second vertex shading operation for vertices of primitives for which fragments have been generated by the rasteriser prior to rendering the graphics fragments, to generate vertex shaded attribute data for at least one other vertex attribute of the plurality of vertex attributes of the vertices for which vertex attribute data was not generated in the first vertex shading operation, based on the results of the culling testing before rendering fragments generated by the rasteriser.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2023
From: SHAO, WEI; LANGTIND, FRANK KLAEBOE
To: ARM LIMITED
Reel/Frame 063212/0850 →
Priority Claims (1)
GB 2203563 · Mar 15, 2022 · national
Continuity (1)
Related Publication 20230298249A1 · Sep 21, 2023
References Cited (23)
US 20070146378A1 · Sorgard et al. · 2007 [cited by applicant]
US 20090073177A1 · Jiao et al. · 2009 [cited by applicant]
US 20100302246A1 · Jiao · 2010 [cited by examiner]
US 20120223947A1 · Nystad et al. · 2012 [cited by applicant]
US 20140354654A1 · Heggelund · 2014 [cited by examiner]
US 20140368521A1 · Lassen · 2014 [cited by examiner]
US 20160042560A1 · Chang · 2016 [cited by examiner]
US 20160086299A1 · Sharma et al. · 2016 [cited by applicant]
US 20190130635A1 · Ramadoss et al. · 2019 [cited by applicant]
US 20200193703A1 · Favela et al. · 2020 [cited by applicant]
GB 2527822 · 2016 [cited by applicant]
GB 2546073 · 2017 [cited by applicant]
Combined Search and Examination Report dated Sep. 7, 2022, GB Patent Application No. GB2203563.8. [cited by applicant]
Non-Final Office Action dated Jan. 12, 2017, U.S. Appl. No. 14/790,452. [cited by applicant]
Response to Non-Final Office Action dated May 5, 2017, U.S. Appl. No. 14/790,452. [cited by applicant]
Notice of Allowance dated Jun. 13, 2017, U.S. Appl. No. 14/790,452. [cited by applicant]
Search Report dated Jan. 9, 2015, GB Patent Application No. GB1411892.1. [cited by applicant]
Non-Final Office Action dated Mar. 22, 2018, U.S. Appl. No. 15/393,120. [cited by applicant]
Response to Non-Final Office Action dated Sep. 19, 2018, U.S. Appl. No. 15/393,120. [cited by applicant]
Notice of Allowance dated Nov. 21, 2018, U.S. Appl. No. 15/393,120. [cited by applicant]
Combined Search and Examination Report dated Mar. 22, 2016, GB Patent Application No. GB1600144.8. [cited by applicant]
Engh-Halstvedt et al., “Graphics Processing”, U.S. Appl. No. 14/790,452, filed Jul. 2, 2015. [cited by applicant]
Langtind et al., “Graphics Processing”, U.S. Appl. No. 15/393,120, filed Dec. 28, 2016. [cited by applicant]