IP Library › Granted Patent US 11,663,767
Granted Patent B2
US 11,663,767 · App. 13/772,182 · Granted May 30, 2023

Power efficient attribute handling for tessellation and geometry shaders

Inventors: Ziyad S. Hakura (Gilroy, CA); Dale L. Kirkland (Madison, AL)
Assignee: NVIDIA Corporation
G06T15/005G06F9/5022G06F9/5094G06T1/60G06T2210/52Y02D10/00
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,663,767
App. No.
13/772,182
Granted
May 30, 2023
Kind
B2
Abstract

Attributes of graphics objects are processed in a plurality of graphics processing pipelines. A streaming multiprocessor (SM) retrieves a first set of parameters associated with a set of graphics objects from a first set of buffers. The SM performs a first set of operations on the first set of parameters according to a first phase of processing to produce a second set of parameters stored in a second set of buffers. The SM performs a second set of operations on the second set of parameters according to a second phase of processing to produce a third set of parameters stored in a third set of buffers. One advantage of the disclosed techniques is that work is redistributed from a first phase to a second phase of graphics processing without having to copy the attributes to and retrieve the attributes from the cache or system memory, resulting in reduced power consumption.

Claims (97)

1. A computer-implemented method for processing attributes of graphics objects in a plurality of graphics processing pipelines, the method comprising:

retrieving, by a first streaming multiprocessor implementing at least a portion of a first graphics processing pipeline, a first set of parameters associated with a set of graphics objects from a first set of buffers, wherein the first set of buffers is located within a first portion of a shared memory local to the first streaming multiprocessor, wherein the first portion is allocated to the at least a portion of the first graphics pipeline in a first phase of processing;

performing, by the first streaming multiprocessor while implementing the at least a portion of the first graphics processing pipeline, a first set of operations on the first set of parameters according to the first phase of processing to produce a second set of parameters;

storing, by the first streaming multiprocessor while implementing the at least a portion of the first graphics processing pipeline, the second set of parameters in a second set of buffers, wherein the second set of buffers is located within a second portion of the shared memory allocated to the at least a portion of the first graphics pipeline in the first phase of processing. wherein a size of the second portion of the shared memory is determined based on a maximum size of data produced by one group of concurrently executing threads in the first phase of processing;

initiating a second phase of processing in response to determining that the second portion of the shared memory is filled to a given amount;

without using off-chip cache memory, redistributing the second set of parameters stored in the second set of buffers across each of two or more second graphics processing pipelines implemented by the first streaming multiprocessor for the second phase of processing; and

performing, by the first streaming multiprocessor while implementing at least a portion of each of the two or more second graphics processing pipelines, a second set of operations on the second set of parameters according to a second phase of processing to produce a third set of parameters, wherein the first set of buffers and the second set of buffers reside in the shared memory and not in off-chip cache memory or frame buffer memory.

2. The method of claim 1 further comprising:

allocating space for the first set of buffers within the first portion of the shared memory; and

allocating space for the second set of buffers within the second portion of the shared memory.

3. The method of claim 2 , further comprising:

deallocating space for the first set of buffers;

allocating space for a fourth set of buffers within the first portion of the shared memory;

retrieving a fourth set of parameters associated with the set of graphics objects from the fourth set of buffers;

performing the first set of operations on the fourth set of parameters according to the first phase of processing to produce a fourth set of parameters; and

storing the fourth set of parameters in the second set of buffers.

4. The method of claim 2 further comprising:

allocating the first portion of the shared memory to the at least a portion of each of the two or more second graphics processing pipelines in the second phase of processing in response to the first phase of processing being completed and the first streaming multiprocessor implementing the at least a portion of each of the two or more second graphics processing pipelines;

storing, by the first streaming multiprocessor while implementing the at least a portion of each of the two or more second graphics processing pipelines, the third set of parameters in a third set of buffers, wherein the third set of buffers is located within the first portion of the shared memory;

deallocating the space for the first set of buffers; and

allocating space for the third set of buffers within the first portion of the shared memory.

5. The method of claim 4 , further comprising:

deallocating the space for the third set of buffers;

allocating space for a fourth set of buffers within the second portion of the shared memory;

performing the second set of operations on the second set of parameters according to the second phase of processing to produce a fourth set of parameters; and

storing the fourth set of parameters in the fourth set of buffers.

6. The method of claim 2 , wherein the first portion of the shared memory and the second portion of the shared memory have a fixed size.

7. The method of claim 1 , further comprising:

allocating the first portion of the shared memory to the at least a portion of each of the two or more second graphics processing pipelines in the second phase of processing in response to the first phase of processing being completed and the first streaming multiprocessor implementing the at least a portion of each of the two or more second graphics processing pipelines;

storing, by the first streaming multiprocessor while implementing the at least a portion of each of the two or more second graphics processing pipelines, the third set of parameters in a third set of buffers, wherein the third set of buffers is located within the first portion of the shared memory; and

transferring contents of the third set of buffers to a screen-space graphics pipeline that includes a rasterizer for further processing.

8. The method of claim 1 , wherein performing the first set of operations comprises:

processing the first set of parameters with a vertex shader program executed by a vertex processing unit to produce vertex output data; and

specifying the second set of parameters as the vertex output data.

9. The method of claim 8 , wherein performing the second set of operations comprises:

processing the second set of parameters with a geometry shader program executed by a geometry processing unit to produce geometry output data;

and specifying the third set of parameters as the geometry output data.

10. The method of claim 1 , wherein performing the first set of operations comprises:

processing the first set of parameters with a vertex shader program executed by a vertex processing unit to produce vertex output data;

storing the vertex output data in the first set of buffers;

processing the stored vertex output data with a tessellation initialization shader program executed by a tessellation initialization processing unit to produce tessellation initialization output data; and

specifying the second set of parameters as the tessellation initialization output data.

11. The method of claim 10 , wherein performing the second set of operations comprises:

processing the second set of parameters with a tessellation shader program executed by a tessellation processing unit to produce tessellation output data;

storing the tessellation output data in a third set of buffers;

processing the stored tessellation output data with a geometry shader program executed by a geometry processing unit to produce geometry output data;

and specifying the third set of parameters as the geometry output data.

12. The method of claim 1 , wherein the first phase of processing comprises performing alpha phase operations on the set of graphics objects, and the second phase of processing comprises performing beta phase operations on the set of graphics objects.

13. A subsystem, comprising:

a shared memory that is local to a first streaming multiprocessor; and

the first streaming multiprocessor that is coupled to the shared memory and implements a plurality of graphics processing pipelines, wherein the first streaming multiprocessor processes attributes of graphics objects within the plurality of graphics processing pipelines by performing the steps of:

retrieving, when implementing at least a portion of a first graphics processing pipeline, a first set of parameters associated with a set of graphics objects from a first set of buffers, wherein the first set of buffers is located within a first portion of a shared memory local to the first streaming multiprocessor, wherein the first portion is allocated to the at least a portion of the first graphics pipeline in a first phase of processing;

performing, while implementing the at least a portion of the first graphics processing pipeline, a first set of operations on the first set of parameters according to the first phase of processing to produce a second set of parameters;

storing, while implementing the at least a portion of the first graphics processing pipeline, the second set of parameters in a second set of buffers, wherein the second set of buffers is located within a second portion of the shared memory allocated to the at least a portion of the first graphics pipeline in the first phase of processing, wherein a size of the second portion of the shared memory is determined based on a maximum size of data produced by one group of concurrently executing threads in the first phase of processing;

initiating a second phase of processing in response to determining that the second portion of the shared memory is filled to a given amount;

without using off-chip cache memory, redistributing the second set of parameters stored in the second set of buffers across each of two or more second graphics processing pipelines also implemented by the first streaming multiprocessor for the second phase of processing; and

performing, while implementing at least a portion of each of the two or more second graphics processing pipelines, a second set of operations on the second set of parameters according to a second phase of processing to produce a third set of parameters,

wherein the first set of buffers and the second set of buffers reside in the shared memory and not in off-chip cache memory or frame buffer memory.

14. The subsystem of claim 13 wherein the first streaming multiprocessor further performs the steps of:

allocating space for the first set of buffers within the first portion of the shared memory; and

allocating space for the second set of buffers within the second portion of the shared memory.

15. The subsystem of claim 14 wherein the first streaming multiprocessor further performs the steps of:

allocating the first portion of the shared memory to the at least a portion of each of the two or more second graphics processing pipelines in the second phase of processing in response to the first phase of processing being completed and the first streaming multiprocessor implementing the at least a portion of each of the two or more second graphics processing pipelines;

storing, by the first streaming multiprocessor while implementing the at least a portion of each of the two or more second graphics processing pipelines, the third set of parameters in a third set of buffers, wherein the third set of buffers is located within the first portion of the shared memory; and

deallocating the space for the first set of buffers; and

allocating space for the third set of buffers within the first portion of the shared memory.

16. The subsystem of claim 14 , wherein the first portion of the shared memory and the second portion of the shared memory have a fixed size.

17. The subsystem of claim 13 , wherein the first streaming multiprocessor further performs the steps of:

allocating the first portion of the shared memory to the at least a portion of each of the two or more second graphics processing pipelines in the second phase of processing in response to the first phase of processing being completed and the first streaming multiprocessor implementing the at least a portion of each of the two or more second graphics processing pipelines;

storing, by the first streaming multiprocessor while implementing the at least a portion of each of the two or more second graphics processing pipelines, the third set of parameters in a third set of buffers, wherein the third set of buffers is located within the first portion of the shared memory; and

transferring contents of the third set of buffers to a screen-space graphics pipeline that includes a rasterizer for further processing.

18. The subsystem of claim 13 , wherein performing the first set of operations comprises:

processing the first set of parameters with a vertex shader program executed by a vertex processing unit to produce vertex output data; and

specifying the second set of parameters as the vertex output data.

19. The subsystem of claim 18 , wherein performing the second set of operations comprises:

processing the second set of parameters with a geometry shader program executed by a geometry processing unit to produce geometry output data; and

specifying the third set of parameters as the geometry output data.

20. The subsystem of claim 13 , wherein performing the first set of operations comprises:

processing the first set of parameters with a vertex shader program executed by a vertex processing unit to produce vertex output data;

storing the vertex output data in the first set of buffers;

processing the stored vertex output data with a tessellation initialization shader program executed by a tessellation initialization processing unit to produce tessellation initialization output data; and

specifying the second set of parameters as the tessellation initialization output data.

21. The subsystem of claim 20 , wherein performing the second set of operations comprises:

processing the second set of parameters with a tessellation shader program executed by a tessellation processing unit to produce tessellation output data;

storing the tessellation output data in a third set of buffers;

processing the stored tessellation output data with a geometry shader program executed by a geometry processing unit to produce geometry output data; and

specifying the third set of parameters as the geometry output data.

22. A computing device, comprising:

a system memory; and

a subsystem that includes a first streaming multiprocessor that is coupled to a local shared memory and implements a plurality of graphics processing pipelines, where the first streaming multiprocessor processes attributes of graphics objects within the plurality of graphics processing pipelines by performing the steps of:

retrieving, when implementing at least a portion of a first graphics processing pipeline, a first set of parameters associated with a set of graphics objects from a first set of buffers, wherein the first set of buffers is located within a first portion of a shared memory local to the first streaming multiprocessor, wherein the first portion is allocated to the at least a portion of the first graphics pipeline in a first phase of processing;

performing, while implementing the at least a portion of the first graphics processing pipeline, a first set of operations on the first set of parameters according to the first phase of processing to produce a second set of parameters;

storing, while implementing the at least a portion of the first graphics processing pipeline, the second set of parameters in a second set of buffers, wherein the second set of buffers is located within a second portion of the shared memory allocated to the at least a portion of the first graphics pipeline in the first phase of processing, wherein a size of the second portion of the shared memory is determined based on a maximum size of data produced by one group of concurrently executing threads in the first phase of processing;

initiating a second phase of processing in response to determining that the second portion of the shared memory is filled to a given amount;

without using off-chip cache memory, redistributing the second set of parameters stored in the second set of buffers across each of two or more second graphics processing pipelines implemented by the first streaming multiprocessor for the second phase of processing; and

performing, while implementing at least a portion of each of the two or more second graphics processing pipelines, a second set of operations on the second set of parameters according to a second phase of processing to produce a third set of parameters,

wherein the first set of buffers, the second set of buffers, and the third set of buffers reside in the shared memory and not in off-chip cache memory or frame buffer memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2013
From: HAKURA, ZIYAD S.; KIRKLAND, DALE L.
To: NVIDIA CORPORATION
Reel/Frame 029843/0928 →
Continuity (1)
Related Publication 20140232729A1 · Aug 21, 2014
Cited By (1)
US 12,462,323