Fragment Shader Test Instruction for Early Per-Fragment Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current graphics processing systems are inefficient in performing per-fragment operations such as alpha-to-coverage, alpha tests, stencil tests, and depth tests, as these operations are typically carried out after fragment shading, leading to increased processing resources and memory bandwidth usage.

Innovation Solution

Incorporating a test instruction in the fragment shader program that allows for the early triggering of per-fragment operations during fragment shading, enabling these tests to be performed while the fragment shader is still executing, thereby reducing the need for late-stage tests and optimizing resource usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If per-fragment operations are performed after fragment shading, then the operations can be executed in the conventional pipeline order, but processing resources and memory bandwidth usage increase

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidprocessing resource usage
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

The patent applies preliminary action by performing per-fragment operations (depth test, stencil test, alpha test) during fragment shading execution rather than after completion. The fragment shader executes test instructions at intermediate points, allowing early discarding of fragments that fail tests, thereby reducing subsequent processing workload and resource consumption.

Inventive Principle:
Principle #10Preliminary action

2Device complexity

If per-fragment operations are performed after fragment shading, then the pipeline structure remains conventional, but memory bandwidth usage increases

Engineering Contradiction:
Improvepipeline structureVSAvoidmemory bandwidth usage
Core Design Contradiction:
Device complexityVSQuantity of substance

Solution Approach 1:

The patent extracts per-fragment operations from the post-shading stage and integrates them into the fragment shading execution flow. By taking out these operations and performing them during shader execution, the patent reduces the number of fragments that need to be processed in later stages, thereby reducing memory bandwidth requirements for subsequent processing stages.

Inventive Principle:
Principle #2Taking out (Extraction)

3Use of energy by moving object

If per-fragment operations are performed during fragment shading, then processing resources are reduced, but the fragment shader program complexity increases

Engineering Contradiction:
Improveprocessing resource usageVSAvoidshader program structure
Core Design Contradiction:
Use of energy by moving objectVSDevice complexity

Solution Approach 1:

The patent merges per-fragment operations with fragment shading execution by integrating test instructions directly into the shader program. This combining of operations into a single unified execution flow eliminates the need for separate processing stages, reducing overall system complexity despite adding instructional complexity to the shader program itself.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS10832464B2Graphics processing systems for performing per-fragment operations when executing a fragment shader program
Publication Date: 2020.11.10 ARM LTD
  • US10832464B2 patent drawing
  • US10832464B2 patent drawing
  • US10832464B2 patent drawing

AI summary

A graphics processing pipeline (30) includes a programmable fragment shader (40) that is operable to, in response to a “test” instruction included in a fragment shader program that it is executing, trigger, if appropriate, the performance of an alpha-to-coverage operation (41), a late stencil test (42), and a late depth test (43) for a fragment being processed, and to then return updated coverage information to the fragment shader (40). This allows alpha-to-coverage and late stencil and depth test operations to be triggered and performed during shader execution, rather than having to wait until shader execution has been completed before performing those operations.