# US 12,002,145 B2 · Apparatus and method for efficient graphics processing including ray tracing

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,002,145 B2
- Document ID: US12002145B2
- Status: Granted
- Kind: B2
- Application number: 17/133,573
- Filed: 2020-12-23
- Published: 2022-02-17
- Granted: 2024-06-04
- Earliest claimed: 2020-08-17
- Assignees: Intel Corporation
- Applicants: Intel Corpoation
- Inventors: Sven Woop; Michael J. Doyle; Sreenivas Kothandaraman; Karthik Vaidyanathan; Abhishek R. Appu; Carsten Benthin; Prasoonkumar Surti; Holger Gruen; Stephen Junkins; Adam Lake; Bret G. Alfieri; Gabor Liktor; Joshua Barczak; Won-Jong Lee
- Web page: https://patentgrep.com/patent/US12002145B2

## CPC

- G06T 15/06: Ray-tracing
- G06F 9/5016: {the resource being the memory}
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 1/60: Memory management
- G06T 9/001: {Model-based coding, e.g. wire frame}
- G06T 15/005: {General purpose rendering architectures}
- G06T 2210/21: Collision detection, intersection
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Apparatus and method for efficient graphics processing including ray tracing. For example, one embodiment of a graphics processor comprises: execution hardware logic to execute graphics commands and render images; an interface to couple functional units of the execution hardware logic to a tiled resource; and a tiled resource manager to manage access by the functional units to the tiled resource, a functional unit of the execution hardware logic to generate a request with a hash identifier (ID) to request access to a portion of the tiled resource, wherein the tiled resource manager is to determine whether a portion of the tiled resource identified by the hash ID exists, and if not, to allocate a new portion of the tiled resource and associate the new portion with the hash ID.

## Claims

### Claim 1

A graphics processor comprising:
execution hardware logic to execute graphics commands and render images;
an interface to couple functional units of the execution hardware logic to a tiled resource; and
a tiled resource manager to manage access by the functional units to the tiled resource, a functional unit of the execution hardware logic to generate a request with a hash identifier (ID) to request access to a portion of the tiled resource,
wherein the tiled resource manager is to determine whether a portion of the tiled resource identified by the hash ID exists; if not, to allocate a new portion of the tiled resource and associate the new portion with the hash ID, and upon no new portion of the tiled resources being found, to evict an existing portion of the tiled resource and to reallocate the existing portion as the new portion associated with the hash ID.

### Claim 2 (depends on 1)

The graphics processor of claim 1 wherein the tiled resource manager is to implement a least recently used (LRU) eviction policy to evict the existing portion of the tiled resource used least recently.

### Claim 3 (depends on 1)

The graphics processor of claim 1 wherein if a portion of the tiled resource identified by the hash ID exists, then the tiled resource manager is to provide access to the portion of the tiled resource.

### Claim 4 (depends on 3)

The graphics processor of claim 3 wherein the portion of the tiled resource comprises a fixed-size resource tile.

### Claim 5 (depends on 4)

The graphics processor of claim 4 wherein the tiled resource comprises a memory buffer subdivided into tiles.

### Claim 6 (depends on 5)

The graphics processor of claim 5 further comprising:
ray traversal hardware logic coupled to the memory buffer, the ray traversal hardware logic to trace a ray through an acceleration data structure, the ray having an associated instance identifier (ID),
wherein the hash ID is generated based in the instance ID.

### Claim 7 (depends on 6)

The graphics processor of claim 6 wherein the hash ID is generated based on a combination of the instance ID and a frame counter.

### Claim 8 (depends on 1)

The graphics processor of claim 1 wherein if a new portion of the tiled resource is allocated, then the execution hardware logic is to execute a user compute shader, the user compute shader to store triangles in the portion of the tiled resource.

### Claim 9 (depends on 3)

The graphics processor of claim 3 wherein if the portion of the tiled resource is not new, then the execution hardware logic is to execute an intersection shader to perform ray/triangle intersections, the intersection shader to be provided a pointer to the portion of the tiled resource.

### Claim 10

A method comprising:
executing graphics commands and rendering images by execution hardware logic, the execution hardware logic coupled to a tiled resource;
generating a request with a hash identifier (ID) to request access to a portion of the tiled resource, the request generated by a functional unit of the execution hardware logic;
determining whether a portion of the tiled resource identified by the hash ID exists;
if a portion of the tiled resource identified by the hash ID does not exist and a new portion of the tiled resource is found, allocating the new portion of the tiled resource and associating the new portion with the hash ID; and
if a portion of the tiled resource identified by the hash ID does not exist and the new portion of the tiled resource is not found, evicting an existing portion of the tiled resource, and reallocating the existing portion as the new portion associated with the hash ID.

### Claim 11 (depends on 10)

The method of claim 10 wherein evicting comprises implementing a least recently used (LRU) eviction policy to remove an existing portion of the tiled resource used least recently.

### Claim 12 (depends on 10)

The method of claim 10 wherein if a portion of the tiled resource identified by the hash ID exists, then providing access to the portion of the tiled resource.

### Claim 13 (depends on 12)

The method of claim 12 wherein the portion of the tiled resource comprises a fixed-size resource tile.

### Claim 14 (depends on 13)

The method of claim 13 wherein the tiled resource comprises a memory buffer subdivided into tiles.

### Claim 15 (depends on 14)

The method of claim 14 further comprising:
tracing a ray through an acceleration data structure by ray traversal hardware logic coupled to the memory buffer, the ray having an instance identifier (ID) associated therewith, wherein the hash ID is generated based in the instance ID.

### Claim 16 (depends on 15)

The method of claim 15 wherein the hash ID is generated based on a combination of the instance ID and a frame counter.

### Claim 17 (depends on 10)

The method of claim 10 wherein if a new portion of the tiled resource is allocated, then executing a user compute shader, the user compute shader to store triangles in the portion of the tiled resource.

### Claim 18 (depends on 12)

The method of claim 12 wherein if the portion of the tiled resource is not new, then executing an intersection shader to perform ray/triangle intersections, the intersection shader to be provided a pointer to the portion of the tiled resource.

### Claim 19

A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform:
executing graphics commands and rendering images by execution hardware logic, the execution hardware logic coupled to a tiled resource;
generating a request with a hash identifier (ID) to request access to a portion of the tiled resource, the request generated by a functional unit of the execution hardware logic;
determining whether a portion of the tiled resource identified by the hash ID exists;
if a portion of the tiled resource identified by the hash ID does not exist and a new portion of the tiled resource is found, allocating the new portion of the tiled resource and associating the new portion with the hash ID; and
if a portion of the tiled resource identified by the hash ID does not exist and the new portion of the tiled resource is not found, evicting an existing portion of the tiled resource, and reallocating the existing portion as the new portion associated with the hash ID.

### Claim 20 (depends on 19)

The non-transitory machine-readable medium of claim 19 wherein evicting comprises implementing a least recently used (LRU) eviction policy to remove an existing portion of the tiled resource used least recently.

### Claim 21 (depends on 19)

The non-transitory machine-readable medium of claim 19 wherein if a portion of the tiled resource identified by the hash ID exists, then the machine is to provide access to the portion of the tiled resource.

### Claim 22 (depends on 21)

The non-transitory machine-readable medium of claim 21 wherein the portion of the tiled resource comprises a fixed-size resource tile.
