IP Library Granted Patent US 9,679,347
Granted Patent B2
US 9,679,347 · App. 14/182,976 · Granted Jun 13, 2017

Shader pipeline with shared data channels

Inventors: Chunhui Mei (San Diego, CA); Vineet Goel (La Jolla, CA); Donghyun Kim (San Diego, CA)
Assignee: QUALCOMM Incorporated
G06T1/60G06T1/20G06T15/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 9,679,347
App. No.
14/182,976
Granted
Jun 13, 2017
Kind
B2
Abstract

A graphics processing unit (GPU) may allocate a shared data channel in on-chip graphics memory of the GPU that is shared by at least two stages of a graphics processing pipeline. Shader units in the GPU may execute the at least two stages of the graphics processing pipeline. The GPU may store, in the shared data channel in on-chip graphics memory, data produced by each of the at least two stages of the graphics processing pipeline executing on the shader units.

Claims (48)

1. A method of graphics processing comprising:

allocating, by a graphics processing unit (GPU), a first ring buffer as a first shared data channel in on-chip graphics memory of the GPU, wherein the first ring buffer is shared by a first two stages of a graphics processing pipeline to store first and second data produced by the respective first two stages of the graphics processing pipeline;

allocating, by the GPU, a second ring buffer as a second shared data channel in the on-chip graphics memory of the GPU that is shared by a second two stages of the graphics processing pipeline to store third and fourth data produced by the respective second two stages of the graphics processing pipeline;

executing, on shader units in the GPU, the first two stages of the graphics processing pipeline and the second two stages of the graphics processing pipeline, including consuming, by one of the first two stages of the graphics processing pipeline, the third data stored in the second ring buffer to produce the first data that is stored into the first ring buffer;

reserving, by the GPU, free space in the first ring buffer for storing the second data produced by a second of the first two stages of the graphics processing pipeline and free space in the second ring buffer for storing the fourth data produced by one of the second two stages of the graphics processing pipeline to prevent deadlock between the first ring buffer and the second ring buffer;

storing, by the GPU into the first ring buffer in on-chip graphics memory, the first and second data produced by first two stages of the graphics processing pipeline executing on the shader units as queues of the first and second data produced by the first two stages of the graphics processing pipeline; and

reading, by the GPU from the first ring buffer in on-chip graphics memory, the second data produced by the second of the first two stages of the graphics processing pipeline, including deleting from the ring buffer the second data produced by the second of the first two stages of the graphics processing pipeline that is read from the first ring buffer, thereby increasing space in the first ring buffer for the GPU to store additional data produced by the one of the first two stages of the graphics processing pipeline.

2. The method of claim 1 , further comprising:

scheduling, by the GPU, the execution of one or more stages of the graphics processing pipeline on the shader units based at least in part on a status of the first ring buffer or the second ring buffer so that data is available in the first ring buffer or the second ring buffer to be consumed by the one or more stages of the graphics processing pipeline executing on the shader units and free space is available in the first ring buffer or the second ring buffer to store data produced by the one or more stages of the graphics processing pipeline executing on the shader units.

3. The method of claim 1 , wherein the second ring buffer operates in cache mode to cache data stored in the second ring buffer, and wherein the first ring buffer operates in first-in-first-out (FIFO) mode.

4. The method of claim 1 , wherein the first and second data stored in the first ring buffer comprise vertex data produced by the first two stages of the graphics processing pipeline, and wherein the third and fourth data stored in the second ring buffer comprise primitives produced by the second two stages of the graphics processing pipeline.

5. The method of claim 4 , wherein the first two stages of the graphics processing pipeline comprise a vertex shader and a domain shader.

6. The method of claim 4 , wherein the second two stages of the graphics processing pipeline comprises a hull shader and a geometry shader.

7. An apparatus configured to process graphics data comprising:

a memory; and

a graphics processing unit (GPU) configured to:

allocate a first ring buffer as a first shared data channel in on-chip graphics memory of the GPU, wherein the first ring buffer is shared by a first two stages of a graphics processing pipeline to store first and second data produced by the respective first two stages of the graphics processing pipeline;

allocate a second ring buffer as a second shared data channel in the on-chip graphics memory of the GPU that is shared by a second two stages of the graphics processing pipeline to store third and fourth data produced by the respective second two stages of the graphics processing pipeline;

execute, on shader units in the GPU, the first two stages of the graphics processing pipeline and the second two stages of the graphics processing pipeline, including consuming, by one of the first two stages of the graphics processing pipeline, the third data stored in the second ring buffer to produce the first data that is stored into the first ring buffer;

reserve free space in the first ring buffer for storing the second data produced by a second of the first two stages of the graphics processing pipeline and free space in the second ring buffer for storing the fourth data produced by one of the second two stages of the graphics processing pipeline to prevent deadlock between the first ring buffer and the second ring buffer;

store, into the first ring buffer in on-chip graphics memory, the first and second data produced by the first two stages of the graphics processing pipeline executing on the shader units as queues of the first and second data produced by the first two stages of the graphics processing pipeline; and

read from the first ring buffer in on-chip graphics memory, the second data produced by the second of the first two stages of the graphics processing pipeline, including deleting from the ring buffer the second data produced by the second of the first two stages of the graphics processing pipeline that is read from the first ring buffer, thereby increasing space in the first ring buffer for the GPU to store additional data produced by the one stage of the first two stages of the graphics processing pipeline.

8. The apparatus of claim 7 , wherein the GPU is further configured to:

schedule the execution of one or more stages of the graphics processing pipeline on the shader processors based at least in part on a status of the first ring buffer or the ring buffer so that data is available in the first ring buffer or the second ring buffer to be consumed by the one or more stages of the graphics processing pipeline and free space is available in the first ring buffer or the second ring buffer to store data produced by the one or more stages of the graphics processing pipeline executing on the shader processors.

9. The apparatus of claim 7 , wherein the second ring buffer operates in cache mode to cache data stored in the second ring buffer, and wherein the first ring buffer operates in first-in-first-out (FIFO) mode.

10. The apparatus of claim 7 , wherein the data stored in the first ring buffer comprise vertex data produced by the first two stages of the graphics processing pipeline executing on the shader processors, and wherein the second third and fourth data stored in the second ring buffer comprise primitives produced by the second two stages of the graphics processing pipeline executing on the shader processors.

11. An apparatus comprising:

means for allocating a first ring buffer as a first shared data channel in on-chip graphics memory of a graphics processing unit (GPU), wherein the first ring buffer is shared by a first two stages of a graphics processing pipeline to store first and second data produced by the respective first two stages of the graphics processing pipeline;

means for allocating a second ring buffer as a second shared data channel in the on-chip graphics memory of the GPU that is shared by a second two stages of the graphics processing pipeline to store third and fourth data produced by the respective second two stages of the graphics processing pipeline;

means for executing the first two stages of the graphics processing pipeline and the second two stages of the graphics processing pipeline, including consuming, by one of the first two stages of the graphics processing pipeline, the third data stored in the second ring buffer to produce the first data that is stored into the first ring buffer;

means for reserving free space in the first ring buffer for storing the second data produced by a second of the first two stages of the graphics processing pipeline and free space in the second ring buffer for storing the fourth data produced by one of the second two stages of the graphics processing pipeline to prevent deadlock between the first ring buffer and the second ring buffer;

means for storing, into the first ring buffer in on-chip graphics memory, the first and second data produced by the first two stages of the graphics processing pipeline executing on the shader units as queues of the first and second data produced by the first two stages of the graphics processing pipeline; and

means for reading GPU from the first ring buffer in on-chip graphics memory, the second data produced by the second of the first two stages of the graphics processing pipeline, including deleting from the ring buffer the second data produced by the second of the first two stages of the graphics processing pipeline that is read from the first ring buffer, thereby increasing space in the first ring buffer for the GPU to store additional data produced by the one of the first two stages of the graphics processing pipeline.

12. The apparatus of claim 11 , further comprising:

means scheduling the execution of one or more stages of the graphics processing pipeline on the shader units based at least in part on a status of the first ring buffer or the second ring buffer so that data is available in the first ring buffer or the second ring buffer to be consumed by the one or more stages of the graphics processing pipeline executing on the shader units and free space is available in the first ring buffer or the second ring buffer to store data produced by the one or more stages of the graphics processing pipeline.

13. The apparatus of claim 11 , wherein the second ring buffer operates in cache mode to cache data stored in the second ring buffer, and wherein the first ring buffer operates in first-in-first-out (FIFO) mode.

14. The apparatus of claim 11 , wherein the first and second data stored in the first ring buffer comprise vertex data produced by the first two stages of the graphics processing pipeline, and wherein the third and fourth data stored in the second ring buffer comprise primitives produced by the second two stages of the graphics processing pipeline.

15. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more programmable processors to:

allocate a first ring buffer as a first shared data channel in on-chip graphics memory, wherein the first ring buffer is shared by a first two stages of a graphics processing pipeline to store first and second data produced by the respective first two stages of the graphics processing pipeline;

allocate a second ring buffer as a second shared data channel in the on-chip graphics memory that is shared by a second two stages of the graphics processing pipeline to store third and fourth data produced by the respective second two stages of the graphics processing pipeline;

execute, on shader units, the first two stages of the graphics processing pipeline and the second two stages of the graphics processing pipeline, including consuming, by one of the first two stages of the graphics processing pipeline, the third data stored in the second ring buffer to produce the first data that is stored into the first ring buffer;

reserve free space in the first ring buffer for storing the second data produced by a second of the first two stages of the graphics processing pipeline and free space in the second ring buffer for storing the fourth data produced by one of the second two stages of the graphics processing pipeline to prevent deadlock between the first ring buffer and the second ring buffer;

store, into the ring buffer in on-chip graphics memory, the first and second data produced by the first two stages of the graphics processing pipeline executing on the shader units as queues of the first and second data produced by the first two stages of the graphics processing pipeline; and

read from the first ring buffer in on-chip graphics memory, the second data produced by the second of the first two stages of the graphics processing pipeline, including deleting from the ring buffer the second data produced by the second of the first two stages of the graphics processing pipeline that is read from the first ring buffer, thereby increasing space in the first ring buffer for the one or more programmable processors to store additional data produced by the one of the first two stages of the graphics processing pipeline.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the instructions, when executed, further cause the one or more programmable processors to:

schedule the execution of one or more stages of the graphics processing pipeline on the shader units based at least in part on a status of the first ring buffer or the second ring buffer so that data is available in the first ring buffer or the second ring buffer to be consumed by the one or more stages of the graphics processing pipeline executing on the shader units and free space is available in the first ring buffer or the second ring buffer to store data produced by the one or more stages of the graphics processing pipeline executing on the shader units.

17. The non-transitory computer-readable storage medium of claim 15 , wherein the second ring buffer operates in cache mode to cache data stored in the second ring buffer, and wherein the first ring buffer operates in first-in-first-out (FIFO) mode.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the first and second data stored in the first ring buffer comprise vertex data produced by the first two stages of the graphics processing pipeline executing on the shader units, and wherein the third and fourth data stored in the second ring buffer comprise primitives produced by the second two stages of the graphics processing pipeline executing on the shader units.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2014
From: MEI, CHUNHUI; GOEL, VINEET; KIM, DONGHYUN
To: QUALCOMM INCORPORATED
Reel/Frame 032237/0103 →
Continuity (1)
Related Publication 20150235341A1 · Aug 20, 2015