IP Library Granted Patent US 9,424,686
Granted Patent B2
US 9,424,686 · App. 14/454,738 · Granted Aug 23, 2016

Graphics processing circuit having second vertex shader configured to reuse output of first vertex shader and/or process repacked vertex thread group and related graphics processing method thereof

Inventor: Jia-Yang Chang (Hsinchu, TW)
Assignee: MEDIATEK INC.
G06T15/80G06T1/20G06T1/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 9,424,686
App. No.
14/454,738
Granted
Aug 23, 2016
Kind
B2
Abstract

A graphics processing circuit includes a buffer, a first vertex shader, and a second vertex shader. The first vertex shader generates at least coordinate values of a plurality of vertices to the buffer. The second vertex shader reads at least a portion of buffered coordinate values from the buffer, and reuses at least the portion of the buffered coordinate values to generate a value of at least one user-defined variable.

Claims (36)

1. A graphics processing circuit, comprising:

a buffer;

a first vertex shader, configured to generate at least coordinate values of a plurality of vertices to the buffer;

a second vertex shader, configured to read at least a portion of buffered coordinate values from the buffer, and reuse at least the portion of the buffered coordinate values to generate a value of at least one user-defined variable; and

a primitive culling circuit, configured to reject at least one primitive and instruct the buffer to reject vertices associated with the at least one rejected primitive by removing buffered coordinate values of the rejected vertices.

2. The graphics processing circuit of claim 1 , further comprising:

a vertex repacking circuit, configured to repack non-rejected vertices from original vertex thread groups having at least one rejected vertex to form a new vertex thread group filled with non-rejected vertices only, and output the new vertex thread group to the second vertex shader.

3. The graphics processing circuit of claim 1 , wherein the first vertex shader is further configured to generate a plurality of selected intermediate values, each associated with generation of a coordinate value of one of the vertices and generation of the value of the at least one user-defined variable, to the buffer; and the second vertex shader is further configured to read at least a portion of buffered selected intermediate values from the buffer, where the second vertex shader generates the value of the at least one user-defined variable by reusing at least the portion of the buffered coordinate values and at least the portion of the buffered selected intermediate values.

4. The graphics processing circuit of claim 3 , wherein the first vertex shader is further configured to determine a plurality of weighting values for a plurality of candidate intermediate values, each associated with generation of a coordinate value of one of the vertices and generation of the value of the at least one user-defined variable, and compare the weighting values to select a portion of the candidate intermediate values as the selected intermediate values.

5. The graphics processing circuit of claim 4 , wherein a weighting value of a candidate intermediate value is proportional to a number of instructions needed to be executed for obtaining the candidate intermediate value.

6. The graphics processing circuit of claim 4 , wherein each of the candidate intermediate values is directly used to calculate a coordinate value of one of the vertices.

7. The graphics processing circuit of claim 4 , wherein each of the candidate intermediate values is directly used to calculate the value of the at least one user-defined variable.

8. The graphics processing circuit of claim 3 , wherein the first vertex shader is further configured to determine a plurality of numbers of saved instructions for a plurality of candidate intermediate values, each associated with generation of a coordinate value of one of the vertices and generation of the value of the at least one user-defined variable, and compare the numbers of saved instructions to select a portion of the candidate intermediate values as the selected intermediate values.

9. The graphics processing circuit of claim 1 , wherein the at least one user-defined variable comprises at least one varying variable as defined by OpenGL ES (OpenGL for Embedded Systems).

10. A graphics processing method, comprising:

performing a first vertex shading operation to generate at least coordinate values of a plurality of vertices to a buffer;

performing a second vertex shading operation to read at least a portion of buffered coordinate values from the buffer, and reuse at least the portion of the buffered coordinate values to generate a value of at least one user-defined variable;

rejecting at least one primitive; and

instructing the buffer to reject vertices associated with the at least one rejected primitive by removing buffered coordinate values of the rejected vertices.

11. The graphics processing method of claim 10 , further comprising:

repacking non-rejected vertices from original vertex thread groups having by at least one rejected vertex to form a new vertex thread group filled with non-rejected vertices only; and

feeding the new vertex thread group into the second vertex shading operation.

12. The graphics processing method of claim 10 , wherein the first vertex shading operation further generates a plurality of selected intermediate values, each associated with generation of a coordinate value of one of the vertices and generation of the value of the at least one user-defined variable, to the buffer; and the second vertex shading operation further reads at least a portion of buffered selected intermediate values from the buffer, where the value of the at least one user-defined variable is generated by reusing at least the portion of the buffered coordinate values and at least the portion of the buffered selected intermediate values.

13. The graphics processing method of claim 12 , wherein the first vertex shading operation further determines a plurality of weighting values for a plurality of candidate intermediate values, each associated with generation of a coordinate value of one of the vertices and generation of the value of the at least one user-defined variable, and compares the weighting values to select a portion of the candidate intermediate values as the selected intermediate values.

14. The graphics processing method of claim 13 , wherein a weighting value of a candidate intermediate value is proportional to a number of instructions needed to be executed for obtaining the candidate intermediate value.

15. The graphics processing method of claim 13 , wherein each of the candidate intermediate values is directly used to calculate a coordinate value of one of the vertices.

16. The graphics processing method of claim 13 , wherein each of the candidate intermediate values is directly used to calculate the value of the at least one user-defined variable.

17. The graphics processing method of claim 12 , wherein the first vertex shading operation further determines a plurality of numbers of saved instructions for a plurality of candidate intermediate values, each associated with generation of a coordinate value of one of the vertices and generation of the value of the at least one user-defined variable, and compares the numbers of saved instructions to select a portion of the candidate intermediate values as the selected intermediate values.

18. The graphics processing method of claim 10 , wherein the at least one user-defined variable comprises at least one varying variable as defined by OpenGL ES (OpenGL for Embedded Systems).

19. A graphics processing circuit, comprising:

a buffer;

a first vertex shader, configured to generate coordinate values of a plurality of vertices, and store at least one intermediate value, each associated with generation of a coordinate value of one of the vertices, to the buffer; and

a second vertex shader, configured to read the at least one intermediate value from the buffer, and reuse the at least one intermediate value to generate a value of at least one variable.

20. A graphics processing method, comprising:

performing a first vertex shading operation to generate coordinate values of a plurality of vertices, and store at least one intermediate value, each associated with generation of a coordinate value of one of the vertices, to a buffer; and

performing a second vertex shading operation to read the at least one intermediate value from the buffer, and reuse the at least one intermediate value to generate a value of at least one variable.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2021
From: MEDIATEK INC.
To: XUESHAN TECHNOLOGIES INC.
Reel/Frame 056593/0167 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2014
From: CHANG, JIA-YANG
To: MEDIATEK INC.
Reel/Frame 033491/0859 →
Continuity (1)
Related Publication 20160042560A1 · Feb 11, 2016