# US 12,602,844 B2 · Graphics processor

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

- Number: US 12,602,844 B2
- Document ID: US12602844B2
- Status: Granted
- Kind: B2
- Application number: 18/398,645
- Filed: 2023-12-28
- Published: 2025-07-03
- Granted: 2026-04-14
- Earliest claimed: 2023-12-28
- Assignees: Arm Limited
- Applicants: Arm Limited
- Inventors: Olof Henrik Uhrenholt
- Web page: https://patentgrep.com/patent/US12602844B2

## CPC

- G06T 11/20: Drawing from basic elements
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 11/40: Filling planar surfaces by adding surface attributes, e.g. adding colours or textures
- G06T 2210/12: Bounding box
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

A tile-based graphics processor performs first and second processing passes to generate a render output. The first processing pass generates and writes out information representative of a set of bounding boxes, and the second processing pass uses the bounding box information to determine which primitives to process for which rendering tiles.

## Claims

### Claim 1

A tile-based graphics processor that is operable to generate a render output by processing primitives to generate rendering tiles that the render output is divided into; the tile-based graphics processor comprising:
a first processing circuit, wherein the first processing circuit comprises:
a plurality of programmable execution units; and
a plurality of backend circuits, wherein each backend circuit is associated with a respective programmable execution unit of the plurality of programmable execution units; wherein
the first processing circuit is operable to:
generate a multi-level hierarchical bounding box data structure comprising a set of bounding boxes representative of positions of a set of primitives to be processed to generate a render output, wherein each of the plurality of backend circuits concurrently write to the multi-level hierarchical bounding box data structure using atomic memory operations, wherein the atomic memory operations include one or more of a commutative operation and an associative operation;
write out information representative of the set of bounding boxes; and
a second processing circuit operable to, for one or more rendering tiles that a render output is divided into:
use the multi-level hierarchical bounding box data structure generated by the first processing circuit to determine primitives of a set of primitives to process to generate the respective rendering tile; and
process the determined primitives to generate the respective rendering tile.

### Claim 2 (depends on 1)

The processor of claim 1, wherein the first processing circuit is operable to:
assign primitives of the set of primitives to one or more packets of one or more primitives; and
process, by each of the backend circuits, a respective one or more packets to generate the set of bounding boxes.

### Claim 3 (depends on 2)

The processor of claim 2, wherein each backend circuit is operable to process the respective one or more packets to generate the set of bounding boxes by:
generating, for each primitive of a packet, a primitive bounding box that bounds the respective primitive; and
generating, for each packet, a packet bounding box that bounds all of the one or more primitives of the respective packet.

### Claim 4 (depends on 3)

The processor of claim 3, wherein each backend circuit is operable to process the one or more packets to generate the set of bounding boxes by further generating, for one or more sets of plural packets, a respective higher-level bounding box of the multi-level hierarchical bounding box data structure that bounds all of the primitives of the plural packets of the respective set of plural packets using the atomic memory operations.

### Claim 5 (depends on 1)

The processor of claim 1, wherein each backend circuit is operable to:
determine if the generated higher-level bounding box has been expanded in comparison to a next highest-level bounding box.

### Claim 6 (depends on 5)

The processor of claim 5, in which each bounding box is defined as a four-component vector representing a maximum and minimum dimensions of each two-dimensional bounding box, and each backend circuit is further operable to:
compare each component of the four-component vector representing the generated higher-level bounding box to the respective component of the four-component vector representing the next highest-level bounding box.

### Claim 7 (depends on 2)

The processor of claim 2, wherein the first processing circuit is operable to process plural packets at the same time.

### Claim 8 (depends on 1)

The processor of claim 1, wherein the multi-level hierarchical bounding box data structure generated by the first processing circuit comprises a pointer tree and a primitive list.

### Claim 9 (depends on 1)

The processor of claim 1, wherein the second processing circuit is operable to traverse the hierarchy of bounding boxes to determine the primitives to process to generate the rendering tile.

### Claim 10

A method of operating a tile-based graphics processor that is operable to generate a render output by processing primitives to generate rendering tiles that the render output is divided into; the method comprising generating a render output by:
performing a first processing pass comprising:
generating a multi-level hierarchical bounding box data structure comprising a set of bounding boxes representative of positions of a set of primitives to be processed to generate a render output, wherein each of a plurality of backend circuits concurrently write to the multi-level hierarchical bounding box data structure using atomic memory operations, wherein the atomic memory operations include one or more of a commutative operation and an associative operation; and
writing out information representative of the set of bounding boxes; and
performing a second processing pass comprising, for one or more rendering tiles that the render output is divided into:
using the multi-level hierarchical bounding box data structure generated by the first processing pass to determine primitives of a set of primitives to process to generate the respective rendering tile; and
processing the determined primitives to generate the respective rendering tile.

### Claim 11 (depends on 10)

The method of claim 10, wherein performing first processing pass comprises:
assigning primitives of the set of primitives to one or more packets of one or more primitives; and
processing, by each of the backend circuits, a respective one or more packets to generate the set of bounding boxes.

### Claim 12 (depends on 11)

The method of claim 11, wherein processing, by each backend circuit, the respective one or more packets to generate the set of bounding boxes by:
generating, for each primitive of a packet, a primitive bounding box that bounds the respective primitive; and
generating, for each packet, a packet bounding box that bounds all of the one or more primitives of the respective packet.

### Claim 13 (depends on 12)

The method of claim 12, wherein processing, by each backend circuit, the one or more packets to generate the set of bounding boxes further comprises generating, for one or more sets of plural packets, a respective higher-level bounding box of the multi-level hierarchical bounding box data structure that bounds all of the primitives of the plural packets of the respective set of plural packets using the atomic operations.

### Claim 14 (depends on 11)

The method of claim 11, further comprising:
determining, by each backend circuit, if the generated higher-level bounding box has been expanded in comparison to a next highest-level bounding box.

### Claim 15 (depends on 14)

The method of claim 14, in which each bounding box is defined as a four-component vector representing a maximum and minimum dimensions of each two-dimensional bounding box, and the method further comprises:
comparing, by each backend circuit, each component of the four-component vector representing the generated higher-level bounding box to the respective component of the four-component vector representing the next highest-level bounding box.

### Claim 16 (depends on 11)

The method of claim 11, further comprising processing plural packets at the same time.

### Claim 17 (depends on 10)

The method of claim 10, wherein the multi-level hierarchical bounding box data structure comprises a pointer tree and a primitive list.

### Claim 18 (depends on 17)

The method of claim 17, wherein each bounding box in a higher-level bounding box is associated with a pointer to the set of plural bounding boxes of the next highest-level in the multi-level hierarchical bounding box data structure.

### Claim 19 (depends on 10)

The method of claim 10, wherein performing the second processing pass comprises traversing the hierarchy of bounding boxes to determine the primitives to process to generate the rendering tile.

### Claim 20

A non-transitory computer program medium comprising computer software code for performing a method for generating a render output when the program is run on a data processing system, the method including:
performing a first processing pass comprising:
generating a multi-level hierarchical bounding box data structure comprising a set of bounding boxes representative of positions of a set of primitives to be processed to generate a render output, wherein each of a plurality of backend circuits concurrently write to the multi-level hierarchical bounding box data structure using atomic memory operations, wherein the atomic memory operations include one or more of a commutative operation and an associative operation;
writing out information representative of the set of bounding boxes; and performing a second processing pass comprising, for one or more rendering tiles that the render output is divided into:
using the multi-level hierarchical bounding box data structure generated by the first processing pass to determine primitives of a set of primitives to process to generate the respective rendering tile; and
processing the determined primitives to generate the respective rendering tile.
