IP Library Granted Patent US 10,108,439
Granted Patent B2
US 10,108,439 · App. 14/560,685 · Granted Oct 23, 2018

Shader pipelines and hierarchical shader resources

Inventors: Guennadi Riguer (Thornhill, CA); Brian K. Bennett (Northborough, MA)
Assignees: Advanced Micro Devices; ATI Technologies ULC
G06F9/449G06T15/005G09G5/363
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 10,108,439
App. No.
14/560,685
Granted
Oct 23, 2018
Kind
B2
Abstract

Shader resources may be specified for input to a shader using a hierarchical data structure which may be referred to as a descriptor set. The descriptor set may be bound to a bind point of the shader and may contain slots with pointers to memory containing shader resources. The shader may reference a particular slot of the descriptor set using an offset, and may change shader resources by referencing a different slot of the descriptor set or by binding or rebinding a new descriptor set. A graphics pipeline may be specified by creating a pipeline object which specifies a shader and a rendering context object, and linking the pipeline object. Part or all of the pipeline may be validated, cross-validated, or optimized during linking.

Claims (43)

1. A method for inputting a shader resource to a shader or a pipeline in a computing device, comprising:

creating, in a computer memory, by a processing device, a data structure having at least one slot which contains a pointer to a shader resource stored in a graphics processing unit (GPU) memory;

binding the data structure to a GPU register;

referencing the at least one slot by an offset to input the shader resource to the shader or pipeline;

determining a GPU overhead associated with inputting a different shader resource to the shader or pipeline by referencing a different slot of the data structure;

determining a CPU overhead associated with inputting the different shader resource to the shader or pipeline by binding a different data structure to the GPU register; and

inputting a different shader resource to the shader or pipeline by conditionally either referencing a different slot of the data structure or binding a different data structure to the GPU register, wherein the condition is based on the GPU overhead and the CPU overhead.

2. The method of claim 1 , wherein the data structure includes a plurality of slots, each containing a pointer to a shader resource.

3. The method of claim 2 , wherein the data structure is bound to a single bind point.

4. The method of claim 2 , wherein the different shader resource is specified by referencing a different slot by a different offset.

5. The method of claim 2 , wherein the different shader resource is specified by binding the different data structure and referencing a slot of the different data structure which contains a pointer to the different shader resource.

6. The method of claim 5 , wherein the data structure is unbound from the GPU register and the different data structure is bound to the GPU register.

7. The method of claim 5 , wherein the different data structure is bound to a different bind point from the data structure.

8. The method of claim 1 , wherein the at least one slot contains a pointer to a second data structure having at least one slot containing a pointer to the shader resource.

9. The method of claim 1 , wherein the at least one slot contains a pointer to another slot of the data structure which contains a pointer to the shader resource.

10. The method of claim 1 , further comprising storing the data structure in a memory.

11. The method of claim 10 , further comprising displaying data stored in or pointed to by the data structure on a display.

12. A method for inputting a graphics pipeline resource in a computing device, comprising:

creating, in a computer memory, by a processing device, a data structure having at least one slot which contains a pointer to a pipeline resource;

binding the data structure to a GPU register;

referencing the at least one slot by an offset to input the graphics pipeline resource to the pipeline;

determining a GPU overhead associated with inputting a different shader resource to the shader or pipeline by referencing a different slot of the data structure;

determining a CPU overhead associated with inputting the different shader resource to the shader or pipeline by binding a different data structure to the GPU register; and

inputting a different pipeline resource to the pipeline by conditionally either referencing a different slot of the data structure or binding a different data structure to the GPU register, wherein the condition is based on the GPU overhead and the CPU overhead.

13. The method of claim 12 , wherein the pipeline resource includes any one or more of: a parameter for a fixed function block or a descriptor for a render target.

14. A method for implementing a graphics pipeline in a computing device, comprising:

creating, in a computer memory, a pipeline object and a descriptor set having at least one slot which contains a pointer to a shader resource;

attaching at least one shader object to the pipeline object, which specifies at least one shader;

attaching at least one rendering context object to the pipeline object which specifies at least part of a rendering context; and

binding the descriptor set to a GPU register; and

determining a GPU overhead associated with replacing the shader resource by referencing a different slot of the descriptor set;

determining a CPU overhead associated with replacing the shader resource by binding a different descriptor set to the GPU register;

replacing the shader resource by conditionally either referencing a different slot of the descriptor set or binding a different descriptor set to the GPU register, wherein the condition is based on the GPU overhead and the CPU overhead.

15. The method of claim 14 , further comprising attaching at least one descriptor set which maps the at least one shader to a shader resource.

16. The method of claim 14 , wherein at least one rendering context objects specifies a fixed function state.

17. The method of claim 14 , wherein at least one rendering context objects specifies constant data.

18. The method of claim 14 , further comprising attaching a data flow object to the pipeline object, which specifies data flow among the at least one shader.

19. The method of claim 18 , wherein the data flow object includes a directed acyclic graph.

20. The method of claim 14 , wherein at least one shader object includes at least one shader fragment.

21. The method of claim 14 , further comprising:

linking the pipeline object; and

validating, cross-validating, or optimizing the pipeline during linking.

22. The method of claim 21 , wherein the validating, cross-validating, or optimizing is performed using the specified rendering context.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: BENNETT, BRIAN K.
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 034435/0166 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: RIGUER, GUENNADI
To: ATI TECHNOLOGIES ULC
Reel/Frame 034435/0217 →
Continuity (1)
Related Publication 20160163015A1 · Jun 9, 2016