WO2025008752A1 - Pixel wave attribute initialization - Google Patents
Pixel wave attribute initialization Download PDFInfo
- Publication number
- WO2025008752A1 WO2025008752A1 PCT/IB2024/056470 IB2024056470W WO2025008752A1 WO 2025008752 A1 WO2025008752 A1 WO 2025008752A1 IB 2024056470 W IB2024056470 W IB 2024056470W WO 2025008752 A1 WO2025008752 A1 WO 2025008752A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- attributes
- primitive
- pixel
- lds
- wave
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Definitions
- a primitive is a basic geometric entity that forms the smallest building block of a graphical image.
- primitives include points, lines, and triangles.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 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.
- LDS local data store
- the processing unit further includes 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.
- the scheduling circuitry may be further configured to maintain the tracking array, and wherein to maintain the tracking array includes to store the tracking array in the parameter cache.
- To maintain the tracking array may include 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.
- 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.
- 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.
- FIG. 1 illustrates two large triangular primitives, which together occupy the entirety of a display frame.
- FIG. 2 is a block diagram of a processing system suitable for implementing selective initialization of redundant pixel waves in accordance with some embodiments.
- FIG. 3 illustrates successive stages of a Pixel Wave Attribute Tracking Array (PWATA) during the processing of successive pixel waves of a large primitive, in accordance with one or more embodiments.
- PWATA Pixel Wave Attribute Tracking Array
- FIG. 4 illustrates an operational flow routine partially depicting operations for processing instructions to render one or more primitives using one or more compute units, in accordance with one or more embodiments.
- FIG. 1 illustrates two large triangular primitives 105 and 110, which together occupy the entirety of a display frame 100.
- pixel shader operations often involve large primitives that span a large portion of the display frame.
- a graphics processing unit launches multiple pixel waves for execution at one or more of its compute units (CUs) to draw a single primitive.
- CUs compute units
- multiple pixel shaders may be executed on every pixel of the display frame 100 in order to render the two large primitives 105, 110 that collectively cover the whole screen.
- rendering each large primitive 105, 110 involves initiating a read operation to access attributes associated with each pixel wave associated with each large primitive 105, 110.
- the attributes are then written to a local data store (LDS) within each CU, such that each pixel wave has the attribute data stored and available for processing at each CU.
- LDS local data store
- successive pixel waves may share common attributes and even be assigned the same LDS address, such that subsequent pixel waves could use this data without the need for new cache-to-LDS cycles to rewrite the same attributes for those subsequent pixel waves.
- the rendering of large primitives typically involves redundant initialization of pixel attributes for each pixel wave regardless of whether those pixel waves are substantially identical, resulting in wasted resources and increased power consumption.
- the switching power utilized in the LDS contributes to higher power consumption, increased heat generation, and potentially shorter battery life (such as in mobile devices).
- Embodiments of 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.
- scheduling circuitry (sometimes referred to as a shader processor input, or SPI) initiates a reading of attributes of the corresponding primitive from parameter cache (PC) circuitry, and the PC circuitry writes the attributes to addresses allocated for the pixel wave by the scheduling circuitry to a respective local data store (LDS) for each of one or more compute units assigned to render the corresponding primitive.
- LDS local data store
- the described techniques involve maintaining a pixel wave attribute tracking array (PWATA, also termed scoreboard) to monitor and identify the local data store (LDS) locations where attributes for large primitives are stored, enabling the system to quickly determine whether attribute reinitialization for a successive pixel wave is necessary or can be deemed redundant.
- PWATA pixel wave attribute tracking array
- LDS local data store
- FIG. 2 is a block diagram of a processing system 200 implementing selective initialization of redundant pixel waves in accordance with some embodiments.
- the processing system 200 comprises a central bus 210 facilitating communication between the various components of the system, such as by enabling efficient data exchange and synchronization between different processing units (e.g., CPU 215 and GPU 230), memory components e.g., memory 225), and input/output mechanisms e.g., I/O engine 280).
- processing units e.g., CPU 215 and GPU 230
- memory components e.g., memory 225
- I/O engine 280 input/output mechanisms
- Various embodiments of the processing system 200 include other buses, bridges, switches, routers, and the like, which are not separately shown in FIG. 2 in the interest of clarity.
- the bus 210 is communicatively coupled to a central processing unit (CPU) 215, which orchestrates the overall operations of the processing system 200.
- the CPU 215 includes multiple processor cores 221-223, allowing it to execute several tasks concurrently (in parallel). These processor cores 221-223 are responsible for executing the primary software instructions, including system-level operations, application processes, and certain graphics-related functions. In some embodiments, one or more of the processor cores 221 -223 each operate to perform the same operation(s) on different data sets ⁇ e.g., via Single Instruction Multiple Data or SIMD processing). Though in the example embodiment illustrated in FIG.
- processor cores 221-223 are depicted to represent an arbitrary M number of cores, the number of processor cores 221 -223 implemented in the CPU 215 is a matter of design choice. As such, in other embodiments, the CPU 215 can include any number of processor cores 221-223.
- the processor cores 221 -223 execute instructions such as program code 225 stored in the memory 225 and the CPU 215 stores information in the memory 225 such as the results of the executed instructions.
- the CPU 215 is also able to initiate graphics processing by issuing draw calls to the GPU 230.
- An input/output (I/O) engine 280 communicatively couples the processing system 200 to external devices and peripherals such as keyboards, mice, printers, external disks, and the like.
- I/O engine 280 One such device connected to the I/O engine 280 is the display 290, which visually presents the graphics and other visual content processed by the processing system 200, including one or more large primitives optimized via selective initialization of redundant pixel waves.
- a memory 225 is also communicatively coupled to the bus 210 and serves as the main data storage for the processing system 200 using a non-transitory computer-readable medium such as a dynamic random-access memory (DRAM).
- DRAM dynamic random-access memory
- the memory 225 is implemented using other types of memory including, for example, static random-access memory (SRAM), nonvolatile RAM, and the like.
- the memory 225 stores some or all of an operating system (OS) 226, which oversees and manages hardware resources; a graphics driver 228, which provides a bridge between software applications and the GPU 230, translating application requests into hardware-level operations; and applications 229, which include various software programs that might be run by the user, some of which may generate graphical data or tasks that utilize one or more facilities of the GPU 230.
- OS operating system
- graphics driver 228, which provides a bridge between software applications and the GPU 230, translating application requests into hardware-level operations
- applications 229 which include various software programs that might be run by the user, some of which may generate graphical data or tasks that utilize one or more facilities of the GPU 230.
- the GPU 230 includes, for example, any of a variety of parallel processors, vector processors, coprocessors, accelerated processing units (APUs), general-purpose GPUs (GPGPUs), non-scalar processors, highly parallel processors, artificial intelligence (Al) processors, inference engines, machine learning processors, other multithreaded processing units, scalar processors, serial processors, or any combination thereof.
- the GPU 230 handles specialized graphics and computation tasks, offloading such functions from the CPU 215. For example, the GPU 230 renders objects (e.g., groups of primitives) according to one or more shader programs to produce values of pixels that are provided to the display 290, which uses the pixel values to display an image that represents the rendered objects.
- objects e.g., groups of primitives
- the GPU 230 implements a plurality of compute units 245 that execute instructions concurrently or in parallel from, for example, one or more applications 229.
- the GPU 230 executes via the compute units 245 instructions from a shader program, raytracing program, graphics pipeline, or the like using a plurality of GPU cores 251 -253 to render one or more objects.
- the GPU 230 comprises a plurality of compute units 245 for processing graphics tasks and computation tasks of the GPU 230 in parallel.
- the CPU 215 and the GPU 230 have an equal number of processing cores, while in other embodiments, the CPU 215 and the GPU 230 have a different number of processing cores.
- three GPU cores 251 -253 are presented representing an arbitrary N number of GPU cores, with those GPU cores 251 -253 being organized by and associated with each of an arbitrary number of compute units (CUs) 245.
- Each CU 245 includes its own local data store (LDS) 250, which enables the shader cores 251 -253 to rapidly read and write data during processing.
- LDS local data store
- the LDS 250 is configured to store values, register files, operands, instructions, variables, result data (e.g., data resulting from the performance of one or more operations), flags, or any combination thereof necessary for, aiding in, or helpful for performing one or more operations indicated in one or more instructions from an application 229.
- the LDS 250 stores attributes of large primitives, optimizing how these attributes are initialized to avoid redundancies, such as for pixel waves utilized to render those large primitives.
- Each CU 245 contains multiple GPU cores 251 -253, which handle various tasks such as vertex shading, pixel shading, and other graphics-related computations.
- the GPU cores 251 -253 process the pixel waves and benefit from selective initialization of those pixel waves to improve efficiency.
- the number of compute units 245 and their respectively associated GPU cores 251 -253 may be selected as a matter of design choice.
- the GPU 230 can include any number of compute units 245 and/or processor cores 251 -253. Some implementations of the GPU 230 are used for general-purpose computing.
- the GPU 230 executes instructions such as program code (e.g., shader code, raytracing code) included in one or more of the applications 229 (e.g., shader programs, raytracing programs) stored in the memory 225, and the GPU 230 stores information in the memory 225 such as the results of the executed instruction.
- the memory 225 further includes some or all of an operating system (OS) 226, such as to provide an interface between the applications 229 and the graphics driver 228.
- OS operating system
- the SPI 235 comprises scheduling circuitry that determines how tasks are allocated among the compute units (CUs) 245 and ensures that data attributes, such as pixel wave attributes, are available when needed.
- the SRI 235 is responsible for managing and scheduling the execution of a list of commands sent to the GPU 230 for processing. These commands are typically a sequence of low-level instructions that specify various operations, ranging from drawing primitives and setting colors to updating textures.
- Each graphical primitive is at least partially defined by its vertices, each of which identifies a point in 3D space and may also include additional associated data like color, texture coordinates, normals, and other attributes critical for rendering.
- Each vertex's associated data or attributes are stored at specific locations or addresses in the Parameter Cache (PC) 240.
- PC Parameter Cache
- a unique identifier for any given primitive e.g., a triangle
- the SPI 235 ensures that the received graphical instructions are executed in the correct order and that any needed data from PC 240 are available for decoding the commands and translating those commands into the appropriate hardware instructions for execution by one or more CUs of the plurality of compute units 245.
- SPI 235 additionally coordinates the selective initialization of redundant pixel waves to optimize the pixel wave attribute initialization process.
- a multilevel cache hierarchy is implemented and represented in a simplified manner by cache 238.
- the PC 240 stores the attributes associated with different graphical primitives and used during the rendering process, including vertex data for each primitive.
- the GPU 230 further includes a crossbar (XBAR) 231 , which operates as an intermediary switch connecting and managing data traffic between the multiple compute units (CUs) 245, the SPI 235, and the cache 238.
- XBAR crossbar
- a single pixel wave may include pixels from multiple primitives, the likelihood of which is higher for pixel waves that are launched in order to render smaller primitives.
- all pixels are likely associated with a single such large primitive — for which a single LDS block typically contains all attribute data of that one large primitive.
- the SPI (Shader Processor Input) 235 utilizes one or more predefined criteria to identify large primitives being processed by the SPI 235, and thereby to identify potentially redundant pixel waves for purposes of avoiding reinitialization of the attributes associated with one or more of those redundant pixel waves.
- one or more of the following criteria are utilized: identifying primitives for which all pixels of a given pixel wave exclusively belong; identifying pixel waves associated with attributes that are confined to a singular LDS block; identifying pixel waves associated with attributes that are confined to a singular LDS block of a predetermined size (e.g., 512 bytes or other predetermined size); identifying primitives based on PC (Parameter Cache) 240 addresses corresponding to one or more defined vertices of the primitive; identifying primitives based on one or more subsequent pixel waves exhibiting a substantially identical set of addresses within the PC 240, indicative of their association with a previously identified large primitive; etc.
- PC Parameter Cache
- the SPI 235 upon receiving a primitive that satisfies one or more of these or other predefined criteria, the SPI 235 recognizes the presence of a large primitive. In certain embodiments, upon processing a pixel wave belonging to a different primitive, (such as may be determined by a variation in parameter cache addresses), the SPI 235 may invalidate e.g., erase PWATA entries for) a previously detected large primitive.
- FIG. 3 illustrates successive stages of a Pixel Wave Attribute Tracking Array during the processing of successive pixel waves in accordance with one or more embodiments.
- the PWATA facilitates efficient pixel wave attribute initialization for identified large primitives, such as to reduce the number of processing cycles by avoiding redundant initializations of those attributes.
- the PWATA is stored in the parameter cache (PC) 240 of the GPU 220, enabling rapid access to parameters stored for use in processing successive pixel waves 301 , 302, and 303.
- PC parameter cache
- contents of the PC 240 are typically provided as part of graphical instructions e.g., drawing commands or rendering instructions) sent to the GPU, and generally stored by the PC 240 as part of parsing those graphical instructions and their associated graphical primitives and other associated data.
- the PC 240 stores parameters of graphical primitives that are processed by the CUs 245 for rendering or other GPU-related tasks.
- these attributes typically include information such as vertex positions, colors, texture coordinates, normals, and other data that describe the primitives to be rendered.
- the PWATA serves to track which LDS blocks have already been initialized with the attributes of a particular large primitive.
- the SPI 235 may process other additional shader types (e.g., compute shaders, geometry shaders, etc.) along with the processing of pixel shaders, such as via interleaving or some other arrangement.
- additional shader types e.g., compute shaders, geometry shaders, etc.
- the SPI 235 launches a non-pixel shader wave, it clears certain PWATA entries for corresponding LDS blocks that are assigned to waves unrelated to the identified large primitive.
- FIG. 3 depicts three successive states associated with each of those successive pixel waves — in particular, the processing of a first pixel wave 301 results in a PWATA state 310; the processing of a second later pixel wave 302 (after some arbitrary quantity of zero or more additional pixel waves) results in PWATA state 320, and the processing of a third pixel wave 303 (which again may occur after some arbitrary quantity of zero or more additional pixel waves since earlier pixel wave 302) results in a PWATA state 330.
- each respective PWATA state 310, 320, 330 rows correspond to individual Compute Units (CU_001 through CU_n, with 'ri representing a total quantity of compute units 245) and columns correspond to LDS blocks (LDSB 001 through LDSB max, such that 'max' indicates a total quantity of storage blocks in the LDS corresponding to each CU of those CUs 245.
- each block of the LDS 250 stores a predefined quantity of data e.g., 512B or other quantity
- each corresponding location of the PWATA stores a single bit to track the contents of the respective LDS associated with a particular compute unit.
- the bits of the respective PWATA state 310, 320, 330 track where attribute data for those successive pixel waves is stored within each CU’s corresponding LDS.
- the PWATA state 310 Upon processing the first pixel wave 301 , the PWATA state 310 registers a specific bit in a position 315 that is associated with LDSB 004 of the CU_003 row. This bit signifies the initialization of a specific LDS block, corresponding to the position 315 in the PWATA, that stores the attributes of a large primitive associated with pixel wave 301 .
- the attributes which can be vertex data, colors, texture mappings, among others, are loaded by SPI 235 from PC 240 and written to a specific LDS block for access by the compute unit (CU_003) assigned to process the pixel wave 301 .
- the SPI 235 updates the PWATA state 310 to set the specific bit in position 315 associated with that particular LDS block for the assigned compute unit CU_003, thereby tracking the initialization of attributes associated with pixel wave 301.
- SPI 235 again coordinates the retrieval of attribute data.
- pixel wave 302 may be any of one or more successive pixel waves occurring subsequent to pixel wave 301 that are associated with the large primitive associated with that pixel wave 301 .
- the SPI 235 determines that the pixel wave 302 is associated with that same large primitive, and that the attribute data for the pixel wave 302 is stored in an LDS block corresponding to position 316.
- the SPI 235 determines that the attributes for the pixel wave 302 are already stored in the LDS block corresponding to PWATA state 320 at position 316. Accordingly, by identifying the positive bit in position 316 of PWATA state 320, the SPI 235 avoids re-initializing these LDS blocks with the same pixel wave attribute data as was previously stored during the processing of a previous pixel wave associated with the same identified large primitive.
- SPI 235 Upon receiving a later third pixel wave 303 for processing, SPI 235 determines, based on the parameter cache addresses associated with that pixel wave 303, that it is associated with a different primitive than that which was associated with the pixel waves 301 and 302. Accordingly, the SPI 235 clears the PWATA, resetting all bits to ‘0’ and then setting the bit (in this example, at position 318 of PWATA state 330) corresponding to an LDS block in which the attributes of pixel wave 303 are stored. As with pixel waves 301 and 302, attributes of the pixel wave 303 are loaded by SPI 235 from PC 240 and written to an LDS block for access by the compute unit (CU_003) assigned to process the pixel wave 303.
- CU_003 compute unit assigned to process the pixel wave 303.
- the GPU 230 (and in particular, SPI 235) utilizes the PWATA to avoid redundant attribute initialization processes associated with successive pixel waves for the same large primitive.
- FIG. 4 illustrates an operational flow routine 400 partially depicting operations of, for example, SPI 235 (with reference to FIG. 2) when processing instructions to render one or more primitives using one or more compute units (e.g., one or more of compute units 245 in FIG. 2), in accordance with one or more embodiments.
- the flow routine 400 facilitates the pixel wave attribute initialization process, aiming to reduce redundancy and thereby improve overall rendering efficiency.
- the routine 400 begins at block 405, in which the SPI receives graphical instructions to render one or more primitives, such as via a draw call to the incorporating GPU e.g., GPU 230 of FIG. 2).
- Such graphical instructions are typically encapsulated within drawing commands or rendering instructions, and convey details for each specified primitive such as vertex positions, colors, and texture coordinates.
- the routine proceeds to block 410.
- the SPI identifies a large primitive within those specified by the graphical instructions received in block 405.
- large primitives are identified based on various criteria, such as (as non-limiting examples): a quantity of pixels encompassed by the primitive; the associated pixel wave attributes occupying specific memory space constraints e.g., being stored within a single LDS block); a consistency of parameter cache addresses associated with one or more vertices of the primitive; etc.
- the routine proceeds to block 415.
- the SPI launches one or more pixel waves associated with the large primitive identified in block 410. These pixel waves correspond to the regions or subsets of the primitive that are to be rendered as a result of the graphical instructions received in block 405.
- the routine proceeds to block 420.
- the SPI checks a state of a pixel wave attribute tracking array (PWATA) to determine whether pixel wave attributes associated with the identified large primitive are already stored in one or more LDS blocks. If the PWATA indicates that the pixel wave attributes associated with the large primitive are already stored in the LDS, the routine 400 skips to block 440, bypassing the initialization steps and conserving processing resources.
- PWATA pixel wave attribute tracking array
- routine 400 proceeds to block 425 and initiates the reading of attributes from the parameter cache for the identified large primitive.
- the routine proceeds to block 430.
- the SRI updates the state of the PWATA to indicate the LDS blocks in which the attributes for the identified large primitive were stored in block 430. This enables the SPI to identify the storage status of those attributes when processing subsequent pixel waves.
- the routine proceeds to block 440.
- the pixel wave being processed is rendered using the attributes stored in local data storage, either after updating the PWATA in block 435 or if it was determined in block 420 that the pixel wave attributes had been previously stored in the LDS during processing of a previous pixel wave. In either case, the SPI utilizes the attributes retrieved from the LDS blocks of the assigned CUs. The routine proceeds to block 445.
- the SPI determines whether any additional pixel waves associated with the currently identified large primitive remain to be processed. If so, the routine proceeds to block 420 for processing the next pixel wave. Conversely, if all pixel waves of the identified large primitive have been processed, the routine returns to block 410 to identify and process any subsequent large primitives.
- the apparatus and techniques described above are implemented in a system including one or more integrated circuit (IC) devices (also referred to as integrated circuit packages or microchips), such as the systems, operations, and components described above with reference to FIGs. 2-4.
- IC integrated circuit
- EDA electronic design automation
- CAD computer aided design
- These design tools typically are represented as one or more software programs.
- the one or more software programs include code executable by a computer system to manipulate the computer system to operate on code representative of circuitry of one or more IC devices so as to perform at least a portion of a process to design or adapt a manufacturing system to fabricate the circuitry.
- This code can include instructions, data, or a combination of instructions and data.
- the software instructions representing a design tool or fabrication tool typically are stored in a computer readable storage medium accessible to the computing system.
- the code representative of one or more phases of the design or fabrication of an IC device may be stored in and accessed from the same computer readable storage medium or a different computer readable storage medium.
- a computer readable storage medium may include any non-transitory storage medium, or combination of non-transitory storage media, accessible by a computer system during use to provide instructions and/or data to the computer system.
- Such storage media can include, but is not limited to, optical media (e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc), magnetic media (e.g., floppy disk, magnetic tape, or magnetic hard drive), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or Flash memory), or microelectromechanical systems (MEMS)-based storage media.
- optical media e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc
- magnetic media e.g., floppy disk, magnetic tape, or magnetic hard drive
- volatile memory e.g., random access memory (RAM) or cache
- non-volatile memory e.g., read-only memory (ROM) or Flash
- the computer readable storage medium may be embedded in the computing system (e.g., system RAM or ROM), fixedly attached to the computing system (e.g., a magnetic hard drive), removably attached to the computing system (e.g., an optical disc or Universal Serial Bus (USB)-based Flash memory), or coupled to the computer system via a wired or wireless network (e.g., network accessible storage (NAS)).
- system RAM or ROM system RAM or ROM
- USB Universal Serial Bus
- NAS network accessible storage
- circuitry designed and configured to perform the corresponding operations described above.
- Such circuitry in at least some embodiments, is any one of, or a combination of, a hardcoded circuit (e.g., a corresponding portion of an application specific integrated circuit (ASIC) or a set of logic gates, storage elements, and other components selected and arranged to execute the ascribed operations), a programmable circuit (e.g., a corresponding portion of a field programmable gate array (FPGA) or programmable logic device (PLD)), or one or more processors executing software instructions that cause the one or more processors to implement the ascribed actions.
- ASIC application specific integrated circuit
- FPGA field programmable gate array
- PLD programmable logic device
- the circuitry for a particular element is selected, arranged, and configured by one or more computer-implemented design tools.
- the sequence of operations for a particular element is defined in a specified computer language, such as a register transfer language, and a computer-implemented design tool selects, configures, and arranges the circuitry based on the defined sequence of operations.
- a “memory device configured to store data” is intended to cover, for example, an integrated circuit that has circuitry that stores data during operation, even if the integrated circuit in question is not currently being used (e.g., a power supply is not connected to it).
- an entity described or recited as “configured to” perform some task refers to something physical, such as a device, circuitry, memory storing program instructions executable to implement the task, etc. This phrase is not used herein to refer to something intangible.
- the term “configured to” is not intended to mean “configurable to.” An unprogrammed field programmable gate array, for example, would not be considered to be “configured to” perform some specific function, although it could be “configurable to” perform that function after programming. Additionally, reciting in the appended claims that a structure is “configured to” perform one or more tasks is expressly intended not to be interpreted as having means-plus-function elements.
- certain aspects of the techniques described above may implemented by one or more processors of a processing system executing software.
- the software includes one or more sets of executable instructions stored or otherwise tangibly embodied on a non-transitory computer readable storage medium.
- the software can include the instructions and certain data that, when executed by the one or more processors, manipulate the one or more processors to perform one or more aspects of the techniques described above.
- the non-transitory computer readable storage medium can include, for example, a magnetic or optical disk storage device, solid state storage devices such as Flash memory, a cache, random access memory (RAM) or other non-volatile memory device or devices, and the like.
- the executable instructions stored on the non-transitory computer readable storage medium may be in source code, assembly language code, object code, or other instruction format that is interpreted or otherwise executable by one or more processors.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
Description
Claims
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202480044287.XA CN121444163A (en) | 2023-07-03 | 2024-07-02 | Pixel wave attribute initialization |
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202363524748P | 2023-07-03 | 2023-07-03 | |
| US63/524,748 | 2023-07-03 | ||
| US18/478,774 US20250014257A1 (en) | 2023-07-03 | 2023-09-29 | Pixel wave attribute initialization |
| US18/478,774 | 2023-09-29 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025008752A1 true WO2025008752A1 (en) | 2025-01-09 |
Family
ID=94171394
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/IB2024/056470 Ceased WO2025008752A1 (en) | 2023-07-03 | 2024-07-02 | Pixel wave attribute initialization |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20250014257A1 (en) |
| CN (1) | CN121444163A (en) |
| WO (1) | WO2025008752A1 (en) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130229414A1 (en) * | 2012-03-01 | 2013-09-05 | Qualcomm Incorporated | Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values |
| US10803549B1 (en) * | 2019-06-24 | 2020-10-13 | Intel Corporation | Systems and method for avoiding duplicative processing during generation of a procedural texture |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6321321B1 (en) * | 1999-06-21 | 2001-11-20 | Vlsi Technology, Inc. | Set-associative cache-management method with parallel and single-set sequential reads |
| US7826380B2 (en) * | 2005-03-30 | 2010-11-02 | International Business Machines Corporation | Apparatus, system, and method for data tracking |
| US9019280B2 (en) * | 2011-07-22 | 2015-04-28 | Qualcomm Incorporated | Area-based rasterization techniques for a graphics processing system |
| US9639472B2 (en) * | 2014-07-15 | 2017-05-02 | International Business Machines Corporation | Prefetch list management in a computer system |
| US11335055B2 (en) * | 2020-06-26 | 2022-05-17 | Imagination Technologies Limited | Intersection testing in ray tracing systems with skipping of nodes in sub-trees of hierarchical acceleration structures |
| US11468633B1 (en) * | 2021-03-30 | 2022-10-11 | Arm Limited | Methods and systems for tile-based graphics processing |
| US11710207B2 (en) * | 2021-03-30 | 2023-07-25 | Advanced Micro Devices, Inc. | Wave throttling based on a parameter buffer |
| CN116385253B (en) * | 2023-01-06 | 2024-07-23 | 格兰菲智能科技股份有限公司 | Method, device, computer equipment and storage medium for drawing primitives |
-
2023
- 2023-09-29 US US18/478,774 patent/US20250014257A1/en active Pending
-
2024
- 2024-07-02 WO PCT/IB2024/056470 patent/WO2025008752A1/en not_active Ceased
- 2024-07-02 CN CN202480044287.XA patent/CN121444163A/en active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130229414A1 (en) * | 2012-03-01 | 2013-09-05 | Qualcomm Incorporated | Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values |
| US10803549B1 (en) * | 2019-06-24 | 2020-10-13 | Intel Corporation | Systems and method for avoiding duplicative processing during generation of a procedural texture |
Also Published As
| Publication number | Publication date |
|---|---|
| CN121444163A (en) | 2026-01-30 |
| US20250014257A1 (en) | 2025-01-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10706608B2 (en) | Tree traversal with backtracking in constant time | |
| US10600142B2 (en) | Compression and decompression of indices in a graphics pipeline | |
| US11609791B2 (en) | Precise suspend and resume of workloads in a processing unit | |
| TW201439970A (en) | Technique for storing shared vertices | |
| CN103886538A (en) | Technique For Storing Shared Vertices | |
| US20190278574A1 (en) | Techniques for transforming serial program code into kernels for execution on a parallel processor | |
| US12608130B2 (en) | Compacted memory transactions for local data shares | |
| GB2555929A (en) | Task assembly | |
| CN113935476A (en) | Deep learning data set access method and system, electronic equipment and storage medium | |
| US20250014257A1 (en) | Pixel wave attribute initialization | |
| US20260086718A1 (en) | Systems and methods for providing extended memory access in a parallel processor | |
| US20250117330A1 (en) | Address remapping of discarded surfaces | |
| US20250104328A1 (en) | Raytracing structure traversal based on work items | |
| US20250383922A1 (en) | Task and data assignment in multi-chiplet processors | |
| US20240370965A1 (en) | Traversal recursion for acceleration structure traversal | |
| US20250384614A1 (en) | Profiling and debugging for real time ray tracing | |
| US12189534B2 (en) | Cache blocking for dispatches | |
| US20260104957A1 (en) | Error notification broadcast in multi-chiplet processors | |
| US12541454B2 (en) | Variable dispatch walk for successive cache accesses | |
| US20250391096A1 (en) | Ray tracing stack node traversal reduction | |
| US20250217195A1 (en) | Local launch in workgroup processors | |
| US20260086811A1 (en) | Out-of-order execution in multi-chiplet processors |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 24835518 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202617000393 Country of ref document: IN |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 1020267003412 Country of ref document: KR |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2024835518 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2024835518 Country of ref document: EP Effective date: 20260203 |
|
| WWP | Wipo information: published in national office |
Ref document number: 202617000393 Country of ref document: IN |