Methods and hardware logic for loading ray tracing data into a shader processing unit of a graphics processing unit
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-modifiedWhat 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.