IP Library Granted Patent US 11,605,149
Granted Patent B2
US 11,605,149 · App. 17/708,500 · Granted Mar 14, 2023

Graphics processing architecture employing a unified shader

Inventors: Stephen L. Morein (San Jose, CA); Laurent Lefebvre (Mascouche, CA); Andrew E. Gruber (Arlington, MA); Andi Skende (Worcester, MA)
Assignee: ATI Technologies ULC
G06T1/20G06T15/005G06T15/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 11,605,149
App. No.
17/708,500
Granted
Mar 14, 2023
Kind
B2
Abstract

A graphics processing architecture in one example performs vertex manipulation operations and pixel manipulation operations by transmitting vertex data to a general purpose register block, and performing vertex operations on the vertex data by a processor unless the general purpose register block does not have enough available space therein to store incoming vertex data; and continues pixel calculation operations that are to be or are currently being performed by the processor based on instructions maintained in an instruction store until enough registers within the general purpose register block become available.

Claims (62)

1. A graphics processor, comprising:

a multiplexer configured to:

receive, at a first input, vertex data, and

receive, at a second input, interpolated pixel parameter and attribute data;

an arbiter circuit, coupled to the multiplexer, configured to implement an arbitration scheme to determine which data received at the first input or the second input of the multiplexer is to be transmitted to a unified shader;

the unified shader, coupled to the arbiter circuit, configured to:

receive the vertex data or the interpolated pixel parameter and attribute data,

process the vertex data or the interpolated pixel parameter and attribute data, and

based on processing the vertex data or the interpolated pixel parameter and attribute data, generate an output representing an appearance attribute, wherein the appearance attribute is at least one of color, lighting, texture, normal, or position data, and

wherein the output includes a pixel parameter or a position information;

a cache block, coupled to the unified shader, configured to:

receive the output of the unified shader, and

store the respective pixel parameter and position information of the output in a corresponding cache;

a primitive assembly block, coupled to the cache block, configured to:

receive the output stored on the cache block, and

assemble the output into primitives; and

a rasterization block, coupled to the primitive block, configured to:

convert the primitives into individual pixel data information representing the interpolated pixel parameter and attribute data received by the multiplexer at the second input of the multiplexer.

2. The graphics processor of claim 1 , wherein the unified shader further comprises a processor unit configured to execute vertex operations and pixel operations.

3. The graphics processor of claim 2 , wherein the unified shader further comprises a sequencer coupled to the processor unit, wherein the sequencer is operative to cause the processor unit to execute the vertex operations and the pixel operations on the vertex data and the interpolated pixel parameter and attribute data.

4. The graphics processor of claim 3 , wherein the sequencer further comprises an instruction store configured to maintain vertex instructions and pixel instructions that when executed by the processor unit perform the vertex operations and the pixel operations.

5. The graphics processor of claim 4 , wherein the processor unit is configured to execute the pixel operations that are to be or are currently being executed based at least on the instructions maintained in the instruction store until enough registers within a register block become available.

6. The graphics processor of claim 2 , wherein the processor unit comprises:

a first section configured to perform arithmetic operations on at least a portion of the vertex data or the interpolated pixel parameter and attribute data, and

a second section configured to perform logical operations on at least a portion of the vertex data or the interpolated pixel parameter and attribute data.

7. The graphics processor of claim 2 , wherein the processor unit is configured to:

execute the vertex operations and the pixel operations on at least a portion of the vertex data or the interpolated pixel parameter and attribute data; and

provide at least vertex position data based at least on an execution of a vertex operation.

8. The graphics processor of claim 1 , wherein the unified shader further comprises a register block coupled to the arbiter circuit, wherein the register block is configured to maintain the vertex data and the interpolated pixel parameter and attribute data in the unified shader.

9. The graphics processor of claim 8 , wherein the unified shader further comprises:

at least one source register coupled to the register block, wherein the at least one source register is configured to store at least one operand transferred from the register block, and

the at least one operand includes at least a portion of the vertex data or the interpolated pixel parameter and attribute data maintained in the register block.

10. The graphics processor of claim 9 , wherein the sequencer is configured to:

cause the at least one operand to be transferred from the register block to the at least one source register, and

indicate to the processor unit of the unified shader to execute at least one operation on the at least one operand in the at least one source register.

11. The graphics processor of claim 10 , wherein:

the processor unit is configured to execute the at least one operation on the at least one operand; and

the at least one operation includes an arithmetic operation and a logical operation.

12. The graphics processor of claim 1 , wherein:

the arbiter circuit is further configured to:

generate a control signal indicating which data received at the first input or the second input of the multiplexer is to be transmitted to the unified shader; and

the multiplexer is further configured to:

select the vertex data or the interpolated pixel parameter and attribute data to be transmitted to the unified shader based on the control signal.

13. The graphics processor of claim 1 , wherein the unified shader is configured to simultaneously perform vertex operations and pixel operations on the vertex data and the interpolated pixel parameter and attribute data by switching between the vertex operations and the pixel operations.

14. The graphics processor of claim 1 , further comprising a vertex fetch block, coupled to the multiplexer, configured to retrieve vertex data from a memory and transmit the vertex data to the first input of the multiplexer.

15. The graphics processor of claim 14 , wherein the vertex fetch block comprises a vertex cache to store the retrieved vertex data.

16. A method of operating a graphics processor comprising:

receiving, at a first input of a multiplexer, vertex data;

receiving, at a second input of the multiplexer, interpolated pixel parameter and attribute data;

performing, by an arbiter circuit coupled to the multiplexer, an arbitration scheme to determine which data received at the first input or the second input of the multiplexer is to be transmitted to a unified shader;

receiving, at the unified shader coupled to the arbiter circuit, the vertex data or the interpolated pixel parameter and attribute data;

processing, by the unified shader, the vertex data or the interpolated pixel parameter and attribute data;

based on processing the vertex data or the interpolated pixel parameter and attribute data, generating by the unified shader, an output representing an appearance attribute, wherein the appearance attribute is at least one of color, lighting, texture, normal, or position data, and wherein the output includes a pixel parameter or a position information;

receiving, at a cache block coupled to the unified shader, the output of the unified shader;

storing, at the cache block, the respective pixel parameter and position information of the output in a corresponding cache;

receiving, at a primitive assembly block coupled to the cache block, the output stored on the cache block;

assembling, by the primitive assembly block, the output into primitives; and

converting, by a rasterization block coupled to the primitive block, the primitives into individual pixel data information representing the interpolated pixel parameter and attribute data received by the multiplexer at the second input of the multiplexer.

17. The method of claim 16 , further comprising executing, by a processor unit of the unified shader, vertex operations and pixel operations.

18. The method of claim 16 , further comprising maintaining, by a register block coupled to the arbiter circuit, the vertex data and the interpolated pixel parameter and attribute data.

19. The method of claim 16 , further comprising causing, by a sequencer coupled to the processor unit, the processor unit to execute vertex operations and pixel operations on the vertex data and the interpolated pixel parameter and attribute data.

20. The method of claim 16 , further comprising executing, by the processing unit, pixel operations that are to be or are currently being executed based at least on instructions maintained in an instruction store configured to maintain vertex instructions and pixel instructions that when executed by the processor unit perform vertex operations and pixel operations, until enough registers within a register block become available.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2024
From: ATI TECHNOLOGIES ULC
To: ONESTA IP, LLC
Reel/Frame 069379/0556 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2022
From: MOREIN, STEVEN; LEFEBVRE, LAURENT; GRUBER, ANDY; SKENDE, ANDI
To: ATI TECHNOLOGIES, INC.
Reel/Frame 060659/0739 →
CHANGE OF NAME Recorded Jul 28, 2022
From: ATI TECHNOLOGIES, INC.
To: ATI TECHNOLOGIES ULC
Reel/Frame 061002/0847 →
Continuity (12)
Continuation 17230129 · Apr 14, 2021
Continuation 17005703 · Aug 28, 2020
Continuation 16601260 · Oct 14, 2019
Continuation 15193647 · Jun 27, 2016
Continuation 14614967 · Feb 5, 2015
Continuation 14312014 · Jun 23, 2014
Continuation 13109738 · May 17, 2011
Continuation 12791597 · Jun 1, 2010
Continuation 11842256 · Aug 21, 2007
Continuation 11117863 · Apr 29, 2005
Continuation 10718318 · Nov 20, 2003
Related Publication 20220222770A1 · Jul 14, 2022