Search

EP-4740203-A1 - PIXEL WAVE ATTRIBUTE INITIALIZATION

EP4740203A1EP 4740203 A1EP4740203 A1EP 4740203A1EP-4740203-A1

Abstract

Techniques are described for avoiding reinitialization of attributes for successive redundant pixel waves (301, 302, 303) when rendering graphical primitives (105, 110). Attributes of a first primitive are read from a parameter cache (240) to initialize a first pixel wave. Attributes are stored in blocks of a local data store (250) associated with a compute unit (245) rendering the pixel wave. A tracking array is maintained to indicate the local data store blocks storing the attributes. When a second pixel wave associated with the first primitive is detected, reading of the attributes is omitted based on the tracking array.

Inventors

  • KWOK, WILFRED W.

Assignees

  • ATI Technologies ULC

Dates

Publication Date
20260513
Application Date
20240702

Claims (15)

  1. 1 . A method comprising: reading one or more attributes of a first primitive from a parameter cache to initialize a first pixel wave using the one or more attributes; and omitting reading the one or more attributes from the parameter cache to initialize a second pixel wave in response to determining that the second pixel wave is associated with the first primitive.
  2. 2. The method of claim 1 , wherein initializing the first pixel wave comprises storing the one or more attributes read from the parameter cache in one or more blocks of a local data store (LDS) that is associated with a compute unit assigned to render the first pixel wave.
  3. 3. The method of claim 2, further comprising maintaining a tracking array that indicates the one or more LDS blocks in which the one or more attributes are stored.
  4. 4. The method of claim 3, wherein maintaining the tracking array comprises storing the tracking array in the parameter cache.
  5. 5. The method of claim 3, wherein maintaining the tracking array includes setting a bit value at a location in the tracking array corresponding to an LDS block in which at least one attribute of the one or more attributes of the first primitive is stored.
  6. 6. The method of any of claims 2 to 5, further comprising rendering the first and second pixel waves using the one or more attributes stored in the LDS blocks.
  7. 7. The method of any of claims 1 to 6, wherein determining that the second pixel wave is associated with the first primitive comprises comparing parameter cache addresses of one or more vertices associated with the second pixel wave to parameter cache addresses of one or more vertices associated with the first primitive.
  8. 8. The method of any of claims 1 to 7, further comprising identifying the first primitive as a large primitive based on at least one of: a quantity of pixels associated with the first primitive, a quantity of shader operations required to render the first primitive, and a quantity of memory required to store attributes associated with the first primitive.
  9. 9. A processing unit comprising: a parameter cache; and scheduling circuitry configured to: read one or more attributes of a first primitive from the parameter cache to initialize a first pixel wave using the one or more attributes; and omit reading the one or more attributes from the parameter cache to initialize a second pixel wave in response to a determination that the second pixel wave is associated with the first primitive.
  10. 10. The processing unit of claim 9, further comprising a plurality of compute units that are each associated with a local data store (LDS), and wherein to initialize the first pixel wave comprises to store the one or more attributes read from the parameter cache in one or more blocks of an LDS that is associated with one compute unit of the plurality of compute units, the one compute unit being one of one or more compute units assigned to render the first pixel wave.
  11. 11 . The processing unit of claim 10, further comprising a tracking array to store one or more indications of the one or more LDS blocks in which the one or more attributes are stored.
  12. 12. The processing unit of claim 11 , wherein the scheduling circuitry is further configured to maintain the tracking array, and wherein to maintain the tracking array includes to store the tracking array in the parameter cache.
  13. 13. The processing unit of claim 11 , wherein to maintain the tracking array includes to set a bit value at a location in the tracking array that corresponds to an LDS block in which at least one attribute of the one or more attributes of the first primitive is stored.
  14. 14. The processing unit of any of claims 10 to 13, wherein the one or more assigned compute units are configured to render the first and second pixel waves using the one or more attributes stored in the one or more LDS blocks.
  15. 15. The processing unit of any of claims 9 to 14, wherein the scheduling circuitry is further configured to identify the first primitive as a large primitive based on at least one of: a quantity of pixels associated with the first primitive, a quantity of shader operations required to render the first primitive, and a quantity of memory required to store attributes associated with the first primitive.

Description

PIXEL WAVE ATTRIBUTE INITIALIZATION CROSS REFERENCE TO RELATED APPLICATIONS [0001] The present application claims priority to U.S. Patent Application Serial No. 63/524748 filed July 3, 2023, and U.S. Patent Application Serial No. 18/478774 filed September 29, 2023, both entitled PIXEL WAVE ATTRIBUTE INITIALIZATION, the entire contents of which are incorporated herein by reference. BACKGROUND [0002] In computer graphics processing, a primitive is a basic geometric entity that forms the smallest building block of a graphical image. Examples of primitives include points, lines, and triangles. During the rendering process for the graphical image, a primitive is associated with one or more pixels, which are the smallest controllable elements of a picture represented on a screen. The color, position, and other properties of these pixels determine the appearance of the primitive. Graphics Processing Units (GPUs) process these primitives during the rendering process to generate the final graphical output seen on a display. [0003] A pixel wave represents a group of pixels that are processed together in parallel on a GPU, which processes many pixels at once to optimize speed and efficiency. To facilitate such processing, the pixels to be processed may be grouped together into 'waves'. Each pixel within a pixel wave undergoes the same operations, such as via execution of a pixel shader program (a type of computer program often used in 3D computer graphics to determine the final color of a pixel in a rendered image). This approach to parallel processing takes advantage of the fact that operations on pixels often involve similar computations, enabling GPUs to process graphics data much more quickly and efficiently than would be possible using serial processing. [0004] However, the management of these pixel waves presents challenges with respect to resource utilization and power efficiency, particularly when dealing with large primitives that cover significant portions of the display frame. Storage and initialization of pixel attributes for each wave can lead to redundancies and unnecessary power consumption, highlighting a need for improved techniques in the management of pixel waves. BRIEF SUMMARY OF EMBODIMENTS [0005] Techniques described herein leverage common local data storage utilized by successive pixel waves associated with the same large primitives to avoid reinitialization of attributes for those successive pixel waves. In a first example, a method includes reading one or more attributes of a first primitive from a parameter cache to initialize a first pixel wave using the one or more attributes, and omitting reading the one or more attributes from the parameter cache to initialize a second pixel wave in response to determining that the second pixel wave is associated with the first primitive. [0006] In some embodiments, initializing the first pixel wave includes storing the one or more attributes read from the parameter cache in one or more blocks of a local data store (LDS) that is associated with a compute unit assigned to render the first pixel wave. The method may further include maintaining a tracking array that indicates the one or more LDS blocks in which the one or more attributes are stored. Maintaining the tracking array may include storing the tracking array in the parameter cache. In other embodiments, maintaining the tracking array includes setting a bit value at a location in the tracking array corresponding to an LDS block in which at least one attribute of the one or more attributes of the first primitive is stored. [0007] The method may further include rendering the first and second pixel waves using the one or more attributes stored in the LDS blocks. Determining that the second pixel wave is associated with the first primitive may include comparing parameter cache addresses of one or more vertices associated with the second pixel wave to parameter cache addresses of one or more vertices associated with the first primitive. In some embodiments, the method further includes identifying the first primitive as a large primitive based on at least one of: a quantity of pixels associated with the first primitive, a quantity of shader operations required to render the first primitive, and a quantity of memory required to store attributes associated with the first primitive. [0008] In another example, a processing unit includes a parameter cache and scheduling circuitry configured to: read one or more attributes of a first primitive from the parameter cache to initialize a first pixel wave using the one or more attributes; and omit reading the one or more attributes from the parameter cache to initialize a second pixel wave in response to a determination that the second pixel wave is associated with the first primitive. [0009] The processing unit may further include a plurality of compute units that are each associated with a local data store (LDS), and wherein to initialize the first pixel wave