# US 2020/0402292 A1 · Coarse Depth Test in Graphics Processing Systems

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

- Number: US 2020/0402292 A1
- Document ID: US20200402292A1
- Status: Published application
- Kind: A1
- Application number: 16/906,170
- Filed: 2020-06-19
- Published: 2020-12-24
- Earliest claimed: 2019-06-19
- Assignees: Imagination Technologies Limited
- Applicants: Imagination Technologies Limited
- Inventors: Lorenzo Belli; Robert Brigg
- Web page: https://patentgrep.com/patent/US20200402292A1

## CPC

- G06T 15/005: {General purpose rendering architectures}
- G06T 15/405: {using Z-buffer}
- G06F 7/24: Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers {sorting methods in general}(G06F7/36 takes precedence)
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06T 1/60: Memory management
- G06T 7/50: Depth or shape recovery
- G06T 11/40: Filling planar surfaces by adding surface attributes, e.g. adding colours or textures
- G06T 15/20: Perspective computation
- G06T 15/40: Hidden part removal
- G06T 17/10: Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
- G06T 2207/10028: Range image; Depth image; 3D point clouds
- G06T 2207/20021: Dividing image into blocks, subimages or windows
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods and coarse depth test logic perform coarse depth testing in a graphics processing system in which a rendering space is divided into a plurality of tiles. A depth range for a tile is obtained, which identifies a depth range based on primitives previously processed for the tile. A determination is made based on the depth range for the tile as to whether all or a portion of a primitive is hidden in the tile. If at least a portion of the primitive is not hidden in the tile, a determination is as to whether the primitive, or one or more primitive fragments thereof has better depth than the primitives previously processed for the tile according to a depth compare mode. If so, the primitive or the primitive fragment is identified as not requiring a read of a depth buffer to perform full resolution depth testing, such that a determination that at least a portion of the primitive is hidden in the tile causes full resolution depth testing not to be performed on at least that portion of the primitive.

## Claims

### Claim 1

A method of performing coarse depth testing in a graphics processing system in which a rendering space is subdivided into a plurality of tiles, the method comprising:
receiving a set of one or more primitives related to one of the plurality of tiles;
obtaining a depth range for the tile, the depth range for the tile identifying a depth range based on primitives previously processed for the tile; and
for at least one primitive in the set of one or more primitives:
making a determination, based on the depth range for the tile, as to whether all or a portion of the primitive is hidden in the tile,
in response to making a determination that at least a portion of the primitive is not hidden in the tile, making a determination, based on the depth range for the tile, as to whether the primitive, or one or more primitive fragments generated therefrom, has better depth than the primitives previously processed for the tile according to a depth compare mode, and
in response to making a determination that the primitive or a primitive fragment has better depth than the primitives previously processed for the tile, identifying the primitive or the primitive fragment as not requiring a read of a depth buffer to perform full resolution depth testing;
wherein if a determination is made that at least a portion of the primitive is hidden in the tile, full resolution depth testing is not performed on at least that portion of the primitive in respect of the tile.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
maintaining a record of each pixel sample in the tile for which a best depth value is available;
in response to making a determination that a primitive or a primitive fragment does not have better depth than the primitives previously processed for the tile, making a determination as to whether the record indicates that the best depth value is available for each pixel sample in the tile associated with that primitive or primitive fragment;
in response to making a determination that the record indicates that the best depth value is available for each pixel sample in the tile associated with that primitive or primitive fragment, identifying the primitive or primitive fragment as not requiring a read of a depth buffer to perform full resolution depth testing; and
in response to making a determination that a primitive or primitive fragment has better depth than the primitives previously processed for the tile, updating the record to indicate that the best depth value is available for each pixel sample in the tile associated with that primitive or primitive fragment.

### Claim 3 (depends on 2)

The method of claim 2, further comprising, in response to not identifying a primitive or a primitive fragment as not requiring a read of the depth buffer to perform full resolution depth testing, updating the record to indicate that the best depth value is available for each pixel sample of the tile.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
maintaining a record of each pixel sample in the tile for which a best depth value is available;
in response to making a determination that a primitive or a primitive fragment has better depth than the primitives previously processed for the tile:
determining whether the record indicates that the best depth value is available for each pixel sample in the tile associated with that primitive or that primitive fragment,
in response to making a determination that the record indicates that the best depth value is not available for any of the pixel samples in the tile associated with that primitive or that primitive fragment, identifying the primitive or primitive fragment as not requiring a full resolution depth test, and
updating the record to indicate that the best depth value is available for each pixel sample in the tile associated with that primitive or that primitive fragment; and
in response to not identifying a primitive or primitive fragment as not requiring a read of the depth buffer to perform full resolution depth testing, updating the record to indicate that the best depth value is available for each pixel sample of the tile.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
maintaining a record of each pixel sample in the tile for which a best depth value is available;
in response to making a determination that a primitive or a primitive fragment has better depth than the primitives previously processed for the tile:
making a determination as to whether the record indicates that the best depth value is available for each pixel sample in the tile associated with that primitive or that primitive fragment,
for each pixel sample in the tile associated with that primitive or that primitive fragment in which the best depth value is not available, identifying a corresponding primitive fragment as not requiring a full resolution depth test, and
updating the record to indicate that the best depth value is available for each pixel sample in the tile associated with that primitive or that primitive fragment; and
in response to not identifying a primitive or a primitive fragment as not requiring a read of the depth buffer to perform full resolution depth testing, updating the record to indicate that the best depth value is available for each pixel sample of the tile.

### Claim 6 (depends on 2)

The method of claim 2, wherein the record is a pixel sample map comprising a bit for each pixel sample of the tile that indicates whether or not the best depth value is available for that pixel sample.

### Claim 7 (depends on 1)

The method of claim 1, wherein the determination as to whether all or a portion of a primitive is hidden in the tile by the primitives previously processed for the tile is performed prior to rasterization of that primitive into primitive fragments.

### Claim 8 (depends on 1)

The method of claim 1, wherein the depth range for the tile is defined by a maximum depth value for the tile and a minimum depth value for the tile.

### Claim 9 (depends on 8)

The method of claim 8, wherein making a determination as to whether all of a primitive is hidden in the tile by the primitives previously processed for the tile comprises comparing one of the maximum depth value for the tile and the minimum depth value for the tile with one of a maximum depth value of the primitive in the tile and a minimum depth value of the primitive in the tile.

### Claim 10 (depends on 8)

The method of claim 8, wherein making a determination as to whether a primitive has better depth than the primitives previously processed for the tile comprises comparing one of the maximum depth value for the tile and the minimum depth value for the tile with one of a maximum depth value of the primitive in the tile and a minimum depth value of the primitive in the tile.

### Claim 11 (depends on 8)

The method of claim 8, wherein a less than depth compare mode is used and making a determination as to whether a primitive is hidden in the tile by the primitives previously processed for the tile comprises determining if a minimum depth value of that primitive in the tile is greater than the maximum depth value of the tile.

### Claim 12 (depends on 8)

The method of claim 8, wherein a less than depth compare mode is used and making a determination as to whether a primitive has better depth than the primitives previously processed for the tile comprises determining if a maximum depth value of that primitive in the tile is less than the minimum depth value of the tile.

### Claim 13 (depends on 9)

The method of claim 9, wherein the maximum or minimum depth of a primitive in a tile is determined to be a maximum or minimum depth of:
an intersection of an edge of the primitive with an edge of the tile;
the primitive at a position of a corner of the tile within the primitive; and
a vertex of the primitive in the tile.

### Claim 14 (depends on 9)

The method of claim 9, wherein the maximum or minimum depth of a primitive in a tile is determined as a maximum or minimum of the depths of a plane on which the primitive lies at each corner of the tile.

### Claim 15 (depends on 1)

The method of claim 1, wherein the determination as to whether all or a portion of a primitive is hidden in the tile by the primitives previously processed for the tile is performed after that primitive has been rasterized into primitive fragments and determining whether all or a portion of that primitive is hidden in the tile comprises, for each primitive fragment of that primitive making a determination, based on the depth range for the tile, whether that primitive fragment is hidden by the primitives previously processed for the tile; and
a determination as to whether a primitive fragment has better depth than the primitives previously processed for the tile is only made if it is determined that the primitive fragment is not hidden.

### Claim 16 (depends on 15)

The method of claim 15, wherein if a determination is made that a primitive fragment is hidden in the tile by the primitives previously processed for the tile full resolution depth testing is not performed on that primitive fragment.

### Claim 17 (depends on 1)

The method of claim 1, further comprising, using the same depth range for the tile for all primitives in the set, or for all primitive fragments generated therefrom.

### Claim 18

Coarse depth test logic configured to perform coarse depth testing in a graphics processing system in which a rendering space is subdivided into a plurality of tiles, the coarse depth test logic comprising:
hidden depth test logic configured to:
receive a set of one or more primitives related to one of the plurality of tiles;
obtain a depth range for the tile, the depth range for the tile identifying a depth range based on primitives previously processed for the tile; and
for at least one primitive in the set of one or more primitives:
make a determination, based on the depth range for the tile, as to whether all or a portion of the primitive is hidden in the tile, wherein if a determination is made that at least a portion of the primitive is hidden in the tile, full resolution depth testing is not performed on that portion of the primitive in respect of the tile, and
in response to making a determination that at least a portion of the primitive is not hidden in the tile, outputting at least that portion of the primitive; and
front depth test logic configured to receive the primitives output by the hidden depth test logic, or one or more primitive fragments generated therefrom, and for at least one of the received primitives or at least one of the primitive fragments:
make a determination, based on the depth range for the tile, as to whether the primitive or primitive fragment has better depth than the primitives previously processed for the tile according to a depth compare mode, and
in response to making a determination that the primitive or primitive fragment has better depth than the primitives previously processed for the tile, identifying the primitive or primitive fragment as not requiring a read of a depth buffer to perform full resolution depth testing.

### Claim 19 (depends on 1)

A non-transitory computer readable storage medium having stored thereon computer readable instructions that, when executed at a computer system, cause the computer system to perform the coarse depth testing as set forth in claim 1.

### Claim 20 (depends on 18)

A non-transitory computer readable storage medium having stored thereon a computer readable dataset description of the coarse depth test logic as set forth in claim 18 that, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to manufacture an integrated circuit embodying said coarse depth test logic.
