IP Library Granted Patent US 10,621,689
Granted Patent B1
US 10,621,689 · App. 16/143,808 · Granted Apr 14, 2020

Multi-phase architecture for multiple rate pixel shading

Inventors: Subramaniam Maiyuran (Gold River, CA); Prasoonkumar Surti (Folsom, CA); Abhishek R. Appu (El Dorado Hills, CA); Eric Hoekstra (Latrobe, CA)
Assignee: INTEL CORPORATION
G06T1/20G06F9/3867G06T15/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 10,621,689
App. No.
16/143,808
Granted
Apr 14, 2020
Kind
B1
Abstract

Embodiments are generally directed to a multi-phase architecture for multiple rate pixel shading. An embodiment of an apparatus includes one or more processor cores, the one or more processing cores including a graphics pipeline and a memory to store data for graphics processing, the data including pixel data. The graphics pipeline includes a multi-phase shader for processing of pixel data, the multi-phase shader including multiple rendering stages, the rendering stages including at least a first stage for a first granularity and a second stage for a second, different granularity, the second rendering granularity being a finer granularity than the first rendering granularity. The multi-phase shader is structured to provide a hierarchy for image rendering, wherein pixel data is received at a rendering stage having a coarsest rendering granularity, with remaining pixel data being provided through the hierarchy to one or more rendering stages having finer rendering granularities.

Claims (35)

1. An apparatus comprising:

one or more processor cores, the one or more processing cores including a graphics pipeline; and

a memory to store data for graphics processing, the data including pixel data;

wherein the graphics pipeline includes a multi-phase shader for processing of pixel data, the multi-phase shader including a plurality of rendering stages, the plurality of rendering stages including at least a first stage for a first rendering granularity and a second stage for a second, different rendering granularity, the second rendering granularity being a finer granularity than the first rendering granularity;

wherein the multi-phase shader is structured to provide a hierarchy for image rendering, wherein pixel data is received at a rendering stage of the plurality of rendering stages having a coarsest rendering granularity, with remaining pixel data being provided through the hierarchy to one or more rendering stages having finer rendering granularities; and

wherein each of the plurality of rendering stages is compiled as a separate kernel, and wherein the multi-phase shader enables looping of pixel data between the kernels of the plurality of rendering stages.

2. The apparatus of claim 1 , wherein the plurality of rendering stages includes at least a coarse pixel (CP) stage for CP data, a pixel (P) stage for P data, and a sample (S) stage for S data.

3. The apparatus of claim 1 , wherein the first stage is adjacent to the second stage in the hierarchy for image rendering, wherein the first stage is communicatively coupled with the second stage, and wherein the first stage and second stage are enabled to loop pixel data from the first stage to the second stage and from the second stage to the first stage.

4. The apparatus of claim 1 , wherein each of the plurality of rendering stages is to provide processed data as required to a pixel thread arbiter.

5. The apparatus of claim 1 , wherein each of the plurality of rendering stages is exposed in an application programming interface (API) and each rendering stage is controllable by a user through the API.

6. The apparatus of claim 5 , wherein control by the user through the API includes control regarding which rendering stages of the plurality of rendering stages are active.

7. The apparatus of claim 1 , wherein the apparatus is to utilize the plurality of rendering stages of the multi-phase shader to redistribute pixel data between the rendering stages for packing of lanes for an SIMD (Single Instruction Multiple Data) compute.

8. A non-transitory computer-readable storage medium having stored thereon data representing sequences of instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving pixel data at a first stage of a multi-phase shader, the shader including a plurality of rendering stages in a hierarchy for imaging rendering, the plurality of rendering stages including at least the first stage for a first rendering granularity and a second stage for a second, different rendering granularity, the second rendering granularity being a finer granularity than the first rendering granularity, wherein each of the plurality of rendering stages is compiled as a separate kernel;

processing the pixel data in the plurality of rendering stages, wherein processing includes providing remaining pixel data from a rendering stage in the plurality of rendering stages to one or more rendering stages having finer rendering granularities and looping pixel data between the kernels of the plurality of rendering stages; and

outputting processed pixel data from each of the plurality of rendering stages according to a rendering granularity of each rendering stage.

9. The medium of claim 8 , wherein the plurality of rendering stages includes at least a coarse pixel (CP) stage for CP data, a pixel (P) stage for P data, and a sample (S) stage for S data.

10. The medium of claim 8 , wherein the first stage is adjacent to the second stage in the hierarchy for image rendering, wherein the first stage is communicatively coupled with the second stage, and wherein the first stage and second stage are enabled to loop pixel data from the first stage to the second stage and from the second stage to the first stage.

11. The medium of claim 8 , further comprising instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

providing processed data from each of the plurality of rendering stages as required to a pixel thread arbiter.

12. The medium of claim 8 , wherein each of the plurality of rendering stages is exposed in an application programming interface (API) and each rendering stage is controllable by a user through the API.

13. The medium of claim 12 , further comprising instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

activating a set of rendering stages of the plurality of rendering stages in response to instruction received through the API.

14. The medium of claim 8 , further comprising instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

redistributing pixel data between the plurality of rendering stages for packing of lanes for an SIMD (Single Instruction Multiple Data) compute.

15. A processing system comprising:

a plurality of processors including one or more graphical processing units, the one or more graphical processing units including:

a multi-phase shader for processing of pixel data, the multi-phase shader including a plurality of rendering stages, the plurality of rendering stages including at least at least a coarse pixel (CP) stage for CP data, a pixel (P) stage for P data, and a sample (S) stage for S data;

wherein the multi-phase shader is structured to provide a hierarchy for image rendering, wherein pixel data is received at a rendering stage of the plurality of rendering stages having a coarsest rendering granularity, with remaining pixel data being provided through the hierarchy to one or more rendering stages having finer rendering granularities; and

wherein each of the plurality of rendering stages is compiled as a separate kernel, and wherein the multi-phase shader enables looping of pixel data between the kernels of the plurality of rendering stages.

16. The processing system of claim 15 , further comprising a pixel thread arbiter to arbitrate between pixel threads, wherein each of the plurality of rendering stages is to provide processed data as required to the pixel thread arbiter.

17. The processing system of claim 16 , further comprising a local thread dispatcher coupled with the pixel thread arbiter, and further comprising a plurality of execution units to receive dispatched threads from the local thread dispatcher for SIMD computes, wherein the multi-phase shader allows for packing of lanes for the SIMD computes.

18. The processing system of claim 15 , wherein each of the plurality of rendering stages is exposed in an application programming interface (API) and each rendering stage is controllable by a user through the API.

19. The processing system of claim 18 , wherein control by the user through the API includes control regarding which rendering stages of the plurality of rendering stages are active.

20. The processing system of claim 15 , wherein the CP stage is adjacent to the P stage and the P stage is adjacent to the S stage in the hierarchy for image rendering, wherein adjacent stages in the plurality of stages are communicatively coupled with each other, and wherein the adjacent stages are enabled to loop pixel data to and from each other.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2019
From: MAIYURAN, SUBRAMANIAM; SURTI, PRASOONKUMAR; APPU, ABHISHEK R.; HOESTRA, ERIC
To: INTEL CORPORATION
Reel/Frame 049781/0918 →