Early Culling Test for Graphics Primitives

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Graphics processing systems face inefficiencies due to sequential processing of primitives, leading to redundant operations as sampling positions are overwritten, resulting in 'overdraw' where primitives are not visible in the final render output.

Innovation Solution

Implementing an early culling test based on vertex positions before the primitive setup stage to discard primitives that are occluded, thereby reducing the load on the primitive setup and rasterization stages and minimizing redundant processing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If primitives are processed sequentially through the full pipeline (primitive setup, rasterisation, rendering), then complete rendering coverage is achieved, but redundant processing occurs due to overdraw where later primitives overwrite earlier ones

Engineering Contradiction:
Improverendering efficiencyVSAvoidredundant processing
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent applies preliminary action by performing an early culling test on vertex positions before the primitive setup stage. This test determines whether a primitive will be completely occluded by previously processed primitives based on vertex depth information. If the test predicts complete occlusion, the primitive is discarded before entering the full rendering pipeline, preventing redundant processing and energy waste on invisible primitives.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If an early culling test is performed before primitive setup to discard occluded primitives, then redundant processing is reduced, but additional testing complexity is introduced

Engineering Contradiction:
Improveprocessing throughputVSAvoidculling test mechanism
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent applies segmentation by dividing the rendering pipeline into distinct stages: vertex position loading, early culling test (new), primitive setup, rasterisation, and rendering. The early culling test is implemented as a separate, independent stage that operates on vertex position data before the traditional primitive setup stage. This segmentation allows the culling function to be optimized independently and avoids interfering with existing pipeline stages.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent extracts the culling function from the traditional rendering pipeline by implementing it as a preliminary test stage that operates on vertex data before primitive setup. This extraction allows the culling logic to be separated from the complex primitive setup and rendering operations, enabling independent optimization and reducing the complexity burden on any single stage.

Inventive Principle:
Principle #2Taking out (Extraction)

3Loss of time

If depth testing is performed at the vertex level before primitive setup, then occluded primitives can be identified early, but the test must be conservative to avoid false positives

Engineering Contradiction:
Improvetime to discard occluded primitivesVSAvoidculling test accuracy
Core Design Contradiction:
Loss of timeVSReliability

Solution Approach 1:

The patent applies partial action by performing depth testing at the vertex level rather than requiring complete primitive coverage analysis. The test checks whether any vertex of a primitive is occluded by previously processed primitives. If even one vertex is occluded, the entire primitive is discarded. This partial testing approach is conservative but efficient, discarding potentially occluded primitives early without requiring complex full-primitive analysis.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10997756B2Processing of primitives in a graphics processor
Publication Date: 2021.05.04 ARM LTD
  • US10997756B2 patent drawing
  • US10997756B2 patent drawing
  • US10997756B2 patent drawing

AI summary

When processing a primitive when generating a render output in a graphics processor, the vertices for the primitive are loaded by a vertex loader, but before a primitive setup stage generates per-primitive data for the primitive using the loaded vertices for the primitive, an early culling test is performed for the primitive using data of the loaded vertices for the primitive. When the primitive passes the early culling test, the primitive is sent onwards to the primitive setup stage and to a rasteriser for rasterising the primitive, but when the primitive fails the early culling test, it is discarded from further processing at the early culling test.