Early Depth Testing for Graphics Processing Overdraw

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current graphics processing systems face inefficiencies due to redundant rendering operations caused by processing primitives sequentially, leading to increased memory bandwidth requirements and reduced frame rates, especially in complex render outputs where overdraw occurs frequently.

Innovation Solution

Implementing a graphics processor with a rasteriser and renderer that perform early depth tests for primitives, using both patch and sampling position depth buffers to identify and discard occluded fragments, and selectively storing and restoring depth values to optimize processing and reduce storage requirements.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If primitives are processed sequentially without early depth testing, then all fragments are rendered, but redundant rendering operations increase memory bandwidth usage and reduce frame rates

Engineering Contradiction:
Improveframe rateVSAvoidmemory bandwidth usage
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent performs early depth testing on patches before generating fragments, allowing the system to identify and discard occluded areas in advance. This preliminary action prevents redundant fragment processing and reduces memory bandwidth consumption by avoiding the rendering of fragments that would be occluded by closer primitives.

Inventive Principle:
Principle #10Preliminary action

2Measurement precision

If per-sample depth buffers are stored for all sampling positions, then accurate depth testing is achieved, but storage requirements increase

Engineering Contradiction:
Improvedepth testing accuracyVSAvoidstorage requirements
Core Design Contradiction:
Measurement precisionVSQuantity of substance

Solution Approach 1:

The patent divides the render output into patches and performs depth testing at the patch level rather than at every individual sample position. This segmentation allows the system to maintain depth information for patches while reducing the overall storage requirements compared to maintaining per-sample depth buffers for all positions.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs depth testing on patches even when not all sample positions within a patch will be rendered. This partial action ensures accurate depth testing for visible samples while accepting that some depth buffer entries may not be fully utilized, thereby balancing precision with storage efficiency.

Inventive Principle:
Principle #16Partial or excessive action

3Adaptability or versatility

If rendering is stopped and resumed, then processing can be interrupted, but restoring depth buffers increases complexity

Engineering Contradiction:
Improveprocessing interruption capabilityVSAvoidbuffer restoration complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent extracts and stores only the necessary patch-level depth information when rendering is interrupted, rather than storing complete per-sample depth buffers. This extraction approach simplifies the restoration process by reducing the amount of data that needs to be saved and restored, thereby lowering system complexity while maintaining the ability to interrupt and resume rendering.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS11030783B1Hidden surface removal in graphics processing systems
Publication Date: 2021.06.08 ARM LTD
  • US11030783B1 patent drawing
  • US11030783B1 patent drawing
  • US11030783B1 patent drawing

AI summary

A graphics processor that performs early depth tests for primitives in respect of patches of a render output, and depth tests for sampling positions of the render output, maintains a per patch depth buffer that stores depth values for patches for use by the patch early depth test and a per sample depth buffer. When processing of a render output is stopped before the render output is finished, the per sample depth values in the per sample depth buffer are written to storage so that those values can be restored, but the per patch depth value information in the per patch depth buffer is discarded. Then, when processing of the render output is resumed, the per sample depth buffer values are loaded into a per sample depth buffer, and the loaded per sample depth buffer values are also used to restore the per patch depth buffer.