US12511812B2ActiveUtilityA1

Methods and hardware logic for loading ray tracing data into a shader processing unit of a graphics processing unit

75
Assignee: IMAGINATION TECH LTDPriority: Mar 31, 2022Filed: Mar 26, 2023Granted: Dec 30, 2025
Est. expiryMar 31, 2042(~15.7 yrs left)· nominal 20-yr term from priority
Inventors:Daniel Barnard
G06T 1/60G06T 15/80G06T 15/06G06T 1/20G06T 2210/08G06T 15/005
75
PatentIndex Score
0
Cited by
31
References
20
Claims

Abstract

Shader processing units for a graphics processing unit that are configured to execute one or more ray tracing shaders that process ray data associated with one or more rays. The ray data for a ray includes a plurality of ray data elements. The shader processing unit comprises storage, and load logic. The load logic is configured to receive, as part of a ray tracing shader, a ray load instruction that comprises: (i) information identifying a load group of a plurality of load groups, each load group of the plurality of load groups comprising one or more ray data elements of the plurality of ray data elements, and (ii) information identifying one or more ray data elements of the identified load group to be retrieved from an external unit. In response to the ray load instruction, the load logic sends one or more load requests to the external unit which cause the external unit to retrieve the identified ray data elements of the identified load group for one or more rays. The received ray data elements are then stored in the storage of the shader processing unit for processing by the ray tracing shader.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A shader processing unit for a graphics processing unit, the shader processing unit configured to execute one or more shaders, the one or more shaders comprising one or more ray tracing shaders that process ray data associated with one or more rays, the ray data for a ray comprising a plurality of ray data elements, the shader processing unit comprising:
 storage; and   load logic configured to:
 receive a ray load instruction that comprises: (i) information identifying a load group of a plurality of load groups, each load group of the plurality of load groups comprising one or more ray data elements of the plurality of ray data elements, and (ii) information identifying one or more ray data elements of the identified load group to be retrieved from an external unit; 
 in response to receiving the ray load instruction, send one or more load requests to the external unit which cause the external unit to retrieve the identified ray data elements of the identified load group for one or more rays; 
 receive the identified ray data elements for the one or more rays from the external unit; and 
 store the received ray data elements in the storage for processing by a ray tracing shader of the one or more ray tracing shaders. 
   
     
     
         2 . The shader processing unit of  claim 1 , wherein the information identifying one or more ray data elements of the identified load group identifies individual ray data elements of the identified load group. 
     
     
         3 . The shader processing unit of  claim 1 , wherein the one or more ray data elements of each load group are divided into one or more sets of ray data elements, and the information identifying one or more ray data elements of the identified load group comprises information identifying one or more of the one or more sets of ray data elements of the identified load group. 
     
     
         4 . The shader processing unit of  claim 3 , wherein the information identifying one or more ray data elements of the identified load group comprises a mask that comprises a bit for each of the one or more sets of ray data elements which, when set to a certain value, identifies the associated set of ray data elements. 
     
     
         5 . The shader processing unit of  claim 3 , wherein when at least one of the identified sets of ray data elements comprises two or more ray data elements, the information identifying one or more ray data elements of the identified load group further comprises, for each of the at least one of the identified sets of ray data elements that comprises two or more ray data elements, information identifying one ray data element of that set of ray data elements. 
     
     
         6 . The shader processing unit of  claim 1 , wherein:
 the identified ray data elements for the one or more rays are received from the external unit in a plurality of load transactions, each load transaction comprising up to a predetermined maximum number of ray data elements;   the load logic is further configured to divide the identified ray data elements for the one or more rays into the plurality of load transactions; and   the one or more load requests sent from the load logic to the external unit comprises a load transaction request for each of the plurality of load transactions.   
     
     
         7 . The shader processing unit of  claim 6 , wherein, when the identified load group is of a first type, each load transaction comprises ray data elements associated with a same ray of the one or more rays. 
     
     
         8 . The shader processing unit of  claim 7 , wherein the ray data elements of each load group of the first type are divided into one or more blocks of ray data elements, and each load transaction comprises ray data elements in a same block of ray data elements. 
     
     
         9 . The shader processing unit of  claim 8 , wherein:
 the one or more ray data elements of each load group are divided into one or more sets of ray data elements, and the information identifying one or more ray data elements of the identified load group comprises information identifying one or more of the one or more sets of ray data elements of the identified load group; and   each block of ray data elements for a load group comprises one or more of the one or more sets of ray data elements of that load group.   
     
     
         10 . The shader processing unit of  claim 9 , wherein:
 the information identifying one or more ray data elements of the identified load group comprises a mask that comprises a bit for each of the one or more sets of ray data elements which, when set to a certain value, identifies the associated set of ray data elements; and   each block of ray data elements for a load group comprises sets of ray data elements of that load group associated with a contiguous block of mask bits.   
     
     
         11 . The shader processing unit of  claim 9 , wherein, when the identified load group is of the first type, each load transaction request comprises information identifying the load group identified in the ray load instruction, information identifying a block of the load group, information identifying the ray data elements of the block that are identified in the ray load instruction, and information identifying a ray of the one or more rays. 
     
     
         12 . The shader processing unit of  claim 7 , wherein the load logic is configured to, when the identified load group is of the first type, divide the identified ray data elements for the one or more rays into the plurality of load transactions by, for each of the one or more rays, determining whether each block of ray data elements comprises an identified ray data element, and for each block of ray data elements that comprises an identified ray data element, generating a load transaction request to retrieve the identified ray data elements in that block for that ray. 
     
     
         13 . The shader processing unit of  claim 7 , wherein when the identified load group is of a second type, each load transaction of the plurality of load transactions comprises a same ray data element for one or more rays. 
     
     
         14 . The shader processing unit of  claim 13 , wherein the ray load instruction is associated with a plurality of rays which are divided into one or more blocks of rays, and, when the identified load group is of the second type, each load transaction comprises the same ray data element for one or more rays in a same block of rays. 
     
     
         15 . The shader processing unit of  claim 14 , wherein the load logic is configured to, when the identified load group is of the second type, divide the identified ray data elements for the one or more rays into the plurality of load transactions by, for each of the identified ray data elements, determining which block of rays comprises an active ray, and for each block of rays that comprises an active ray, generating a load transaction request to retrieve that ray data element for the active rays in that block of rays. 
     
     
         16 . The shader processing unit of  claim 1 , wherein the ray load instruction is associated with a plurality of rays and the one or more rays for which the identified ray data elements are requested are active rays of the plurality of rays. 
     
     
         17 . The shader processing unit of  claim 1 , further comprising store logic configured to:
 receive a ray store instruction that comprises: (i) information identifying a store group of a plurality of store groups, each store group of the plurality of store groups comprising one or more ray data elements of the plurality of ray data elements, and (ii) information identifying one or more ray data elements of the identified store group to be stored in the external unit;   in response to receiving the ray store instruction, retrieve the identified ray data elements for one or more rays from the storage; and   send one or more store requests to the external unit which cause the external unit to store the identified ray data elements of the identified store group for the one or more rays.   
     
     
         18 . A method of processing a ray tracing shader that processes ray data associated with one or more rays at a shader processing unit of a graphics processing unit, the shader processing unit configured to execute one or more shaders, the one or more shaders comprising the ray tracing shader, the ray data for a ray comprising a plurality of ray data elements, the method comprising:
 receiving, at the shader processing unit, a ray load instruction that comprises: (i) information identifying a load group of a plurality of load groups, each load group of the plurality of load groups comprising one or more ray data elements of the plurality of ray data elements, and (ii) information identifying one or more ray data elements of the identified load group to be retrieved from an external unit;   in response to receiving the ray load instruction, sending one or more load requests from the shader processing unit to the external unit which cause the external unit to retrieve the identified ray data elements of the identified load group for one or more rays;   receiving, at the shader processing unit, the identified ray data elements for the one or more rays from the external unit; and   storing the received ray data elements in storage of the shader processing unit for processing by the ray tracing shader.   
     
     
         19 . A graphics processing unit comprising the shader processing unit as set forth in  claim 1 . 
     
     
         20 . A non-transitory computer readable storage medium having stored therein an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to manufacture the shader processing unit as set forth in  claim 1 .

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.