IP Library Granted Patent US 10,861,216
Granted Patent B2
US 10,861,216 · App. 15/482,709 · Granted Dec 8, 2020

Ray tracing apparatus and method for memory access and register operations

Inventors: Carsten Benthin (Voelklingen, DE); Ingo Wald (Salt Lake City, UT); Gabor Liktor (San Francisco, CA); Johannes Guenther (Munich, DE); Elmoustapha Ould-Ahmed-Vall (Phoenix, AZ)
Assignee: Intel Corporation
G06T15/06G06T9/001G06T9/40G06T15/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,861,216
App. No.
15/482,709
Granted
Dec 8, 2020
Kind
B2
Abstract

An apparatus and method for performing BVH compression and decompression concurrently with stores and loads, respectively. For example, one embodiment comprises: bounding volume hierarchy (BVH) construction circuitry to build a BVH based on a set of input primitives, the BVH comprising a plurality of uncompressed coordinates; traversal/intersection circuitry to traverse one or more rays through the BVH and determine intersections with the set of input primitives using the uncompressed coordinates; store with compression circuitry to compress the BVH including the plurality of uncompressed coordinates to generate a compressed BVH with compressed coordinates and to store the compressed BVH to a memory subsystem; and load with decompression circuitry to decompress the BVH including the compressed coordinates to generate a decompressed BVH with the uncompressed coordinates and to load the decompressed BVH with uncompressed coordinates to a cache and/or a set of registers accessible by the traversal/intersection circuitry.

Claims (37)

1. A graphics processing apparatus comprising:

bounding volume hierarchy (BVH) construction circuitry to build a BVH based on a set of input primitives, the BVH comprising a plurality of uncompressed coordinates associated with a plurality of BVH nodes including a root node and a plurality of child nodes, the plurality of BVH nodes grouped into a plurality of compression blocks based, at least in part, on spatial locality between each of the plurality of BVH nodes, each of the plurality of compression blocks comprising one cache line;

traversal/intersection circuitry to traverse one or more rays through the BVH and determine intersections with the set of input primitives using the uncompressed coordinates, wherein the traversal/intersection circuitry is to traverse the one or more rays through each and every one of a plurality of BVH nodes of a first compression block using the uncompressed coordinates before traversing the one or more rays through other nodes in a different compression block;

the BVH construction circuitry and the traversal/intersection circuitry configured to issue a store instruction to store the BVH without compression and a store with compression instruction to store the BVH with compression;

store with compression circuitry to execute the store with compression instruction issued by the BVH construction circuitry or the traversal/intersection circuitry to compress at least a portion of the BVH including the plurality of uncompressed coordinates to generate compressed coordinates and to responsively store the compressed coordinates to a memory subsystem; and

load with decompression circuitry to decompress the compressed coordinates to generate a decompressed BVH with decompressed coordinates and to responsively load the decompressed BVH to a cache and/or a set of registers accessible by the traversal/intersection circuitry.

2. The graphics processing apparatus as in claim 1 wherein the load with decompression circuitry is to perform the operations of decompressing the compressed coordinates and loading the decompressed BVH responsive to an execution of a load with decompression instruction issued by the BVH construction circuitry or the traversal/intersection circuitry.

3. The graphics processing apparatus as in claim 1 wherein the uncompressed coordinates comprise multi-bit floating point values and wherein the compressed coordinates comprise multi-bit integer values.

4. The graphics processing apparatus as in claim 3 wherein the uncompressed coordinates comprise 32-bit floating point values and the compressed coordinates comprise 8-bit integer values.

5. The graphics processing apparatus as in claim 1 wherein the BVH comprises a first plurality of nodes having coordinates to be stored without compression and a second plurality of nodes having coordinates to be stored with compression.

6. The graphics processing apparatus as in claim 5 wherein the first plurality of nodes include the root node and wherein the second plurality of nodes include at least one of the plurality of child nodes.

7. The graphics processing apparatus as in claim 6 wherein the store with compression circuitry is configured to compress coordinates of the at least one of the plurality of child nodes relative to uncompressed coordinates of the root node.

8. The graphics processing apparatus as in claim 1 , wherein the store with compression circuitry is to compress only the child nodes of the BVH but not the root node associated with the BVH.

9. A method comprising:

building, by bounding volume hierarchy (BVH) construction circuitry, a BVH based on a set of input primitives, the BVH comprising a plurality of uncompressed coordinates associated with a plurality of BVH nodes including a root node and a plurality of child nodes, the plurality of BVH nodes grouped into a plurality of compression blocks based, at least in part, on locality between each of the plurality of BVH nodes, each of the plurality of compression blocks comprising one cache line;

traversing, by traversal/intersection circuitry, one or more rays through the BVH to determine intersections with the set of input primitives using the uncompressed coordinates, wherein the traversing comprises traversing the one or more rays through each and every one of a plurality of BVH nodes of a first compression block using the uncompressed coordinates before traversing the one or more rays through other nodes in a different compression block;

issuing, by the BVH construction circuitry or the traversal/intersection circuitry, either a store instruction to store the BVH without compression or a store with compression instruction to store the BVH with compression;

executing, by store with compression circuitry, the store with compression instruction to compress at least a portion of the BVH including the plurality of uncompressed coordinates to generate compressed coordinates and to responsively store the compressed coordinates to a memory subsystem; and

decompressing, by load with decompression circuitry, the compressed coordinates to generate a decompressed BVH with decompressed coordinates and responsively loading the decompressed BVH to a cache and/or a set of registers accessible by traversal/intersection circuitry.

10. The method as in claim 9 wherein the operations of decompressing the compressed BVH and loading the decompressed BVH are performed by the load with decompression circuitry responsive to an execution of a load with decompression instruction issued by the BVH construction circuitry or the traversal/intersection circuitry.

11. The method as in claim 9 wherein the uncompressed coordinates comprise multi-bit floating point values and wherein the compressed coordinates comprise multi-bit integer values.

12. The method as in claim 11 wherein the uncompressed coordinates comprise 32-bit floating point values and the compressed coordinates comprise 8-bit integer values.

13. The method as in claim 9 wherein the BVH comprises a first plurality of nodes having coordinates to be stored without compression and a second plurality of nodes having coordinates to be stored with compression.

14. The method as in claim 13 wherein the first plurality of nodes include the root node and wherein the second plurality of nodes include at least one of the plurality of child nodes.

15. The method as in claim 14 wherein the store with compression circuitry is configured to compress coordinates of the at least one of the plurality of child nodes relative to uncompressed coordinates of the root node.

16. A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform the operations of:

building, by bounding volume hierarchy (BVH) construction circuitry, a BVH based on a set of input primitives, the BVH comprising a plurality of uncompressed coordinates associated with a plurality of BVH nodes including a root node and a plurality of child nodes, the plurality of BVH nodes grouped into a plurality of compression blocks based, at least in part, on locality between each of the plurality of BVH nodes, each of the plurality of compression blocks comprising one cache line;

traversing, by traversal/intersection circuitry, one or more rays through the BVH to determine intersections with the set of input primitives using the uncompressed coordinates, wherein the traversing comprises traversing the one or more rays through each and every one of a plurality of BVH nodes of a first compression block using the uncompressed coordinates before traversing the one or more rays through other nodes in a different compression block;

issuing, by the BVH construction circuitry or the traversal/intersection circuitry, either a store instruction to store the BVH without compression or a store with compression instruction to store the BVH with compression;

executing, by store with compression circuitry, the store with compression instruction to compress at least a portion of the BVH including the plurality of uncompressed coordinates to generate compressed coordinates and responsively store the compressed coordinates to a memory subsystem; and

decompressing, by load with decompression circuitry, the compressed coordinates to generate a decompressed BVH with decompressed coordinates and responsively loading the decompressed BVH to a cache and/or a set of registers accessible by traversal/intersection circuitry.

17. The machine-readable medium as in claim 16 wherein the operations of decompressing the compressed BVH and loading the decompressed BVH are performed by the load with decompression circuitry responsive an execution of to a load with decompression instruction issued by the BVH construction circuitry or the traversal/intersection circuitry.

18. The machine-readable medium as in claim 16 wherein the uncompressed coordinates comprise multi-bit floating point values and wherein the compressed coordinates comprise multi-bit integer values.

19. The machine-readable medium as in claim 18 wherein the uncompressed coordinates comprise 32 bit floating point values and the compressed coordinates comprise 8-bit integer values.

20. The machine-readable medium as in claim 16 wherein the BVH comprises a first plurality of nodes having coordinates to be stored without compression and a second plurality of nodes having coordinates to be stored with compression.

21. The machine-readable medium as in claim 20 wherein the first plurality of nodes include the root node and wherein the second plurality of nodes include at least one of the plurality of child nodes.

22. The machine-readable medium as in claim 21 wherein the store with compression circuitry is configured to compress coordinates of the at least one of the plurality of child nodes relative to uncompressed coordinates of the root node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2018
From: BENTHIN, CARSTEN; WALD, INGO; LIKTOR, GABOR; GUENTHER, JOHANNES; OULD-AHMED-VALL, ELMOUSTAPHA
To: INTEL CORPORATION
Reel/Frame 046880/0296 →
Continuity (1)
Related Publication 20180293784A1 · Oct 11, 2018