Graphics Processing Pipeline Mesh Shader Primitive Distribution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional graphics processing pipelines are limited by the fixed throughput of the primitive distributor and have an inflexible programming model, leading to inefficient processing and unnecessary resource usage due to the inability to perform operations like primitive culling early in the pipeline.

Innovation Solution

The implementation of a graphics processing pipeline that uses mesh shaders and task shaders to process geometry in a more flexible and efficient manner, allowing cooperative execution of threads to generate meshlets and perform operations like culling, thereby bypassing the limitations of traditional primitive distributors and vertex processing units.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a primitive distributor is used to collect and distribute vertex data, then the graphics processing pipeline can process primitives in an organized manner, but the throughput is limited by the fixed throughput of the primitive distributor

Engineering Contradiction:
ImprovethroughputVSAvoidscalability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent extracts the primitive distribution function from a dedicated fixed-function hardware unit and relocates it to the programmable vertex processing units. This allows the distribution logic to be flexible and adaptable to different workloads while maintaining organized data collection and distribution capabilities. The vertex processing units can now dynamically determine how to distribute vertex data based on the specific rendering requirements, eliminating the throughput bottleneck of the traditional primitive distributor.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent makes the vertex processing units multi-functional by enabling them to perform both vertex processing and primitive distribution functions. Instead of having separate dedicated units for each function, the same programmable hardware can dynamically switch between processing vertices and distributing primitive data, increasing overall system versatility and allowing the pipeline to adapt to different rendering scenarios without being constrained by fixed-function throughput limitations.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Productivity

If each vertex is independently processed by a different thread, then parallel processing efficiency is improved, but the programming model becomes inflexible and prevents early culling operations

Engineering Contradiction:
Improveparallel processing efficiencyVSAvoidprogramming model flexibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent merges the independent vertex processing threads into cooperative thread arrays that can work together on primitive-level operations. Instead of completely isolated thread execution, the system combines multiple threads into cooperative groups that can share information and coordinate their actions, enabling culling operations that require knowledge of multiple vertices while still maintaining parallel processing efficiency through the cooperative thread model.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent enables preliminary culling operations to be performed during the vertex processing stage itself, before data is passed to downstream units. By allowing cooperative threads to perform visibility tests and discard non-visible primitives early in the pipeline, the system eliminates unnecessary processing in later stages, improving overall efficiency while requiring a more flexible programming model that supports inter-thread communication and coordination.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If vertex processing units process vertices independently, then processing simplicity is maintained, but the inability to perform culling operations wastes processing resources and power

Engineering Contradiction:
Improveprocessing simplicityVSAvoidpower waste
Core Design Contradiction:
Ease of operationVSLoss of energy

Solution Approach 1:

The patent enables the vertex processing units to perform self-service culling operations without requiring additional dedicated hardware units. The same programmable vertex processing units that process vertex data can also independently perform visibility tests and discard non-visible primitives, eliminating the need for separate culling hardware and reducing overall system power consumption while maintaining processing effectiveness.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS10600229B2Techniques for representing and processing geometry within a graphics processing pipeline
Publication Date: 2020.03.24 NVIDIA CORP
  • US10600229B2 patent drawing
  • US10600229B2 patent drawing
  • US10600229B2 patent drawing

AI summary

In various embodiments, a parallel processor implements a graphics processing pipeline that generates rendered images via a shading program. In operation, the parallel processor causes a first set of execution threads to execute the shading program on a first portion of the input mesh to generate first geometry stored in an on-chip memory. The parallel processor also causes a second set of execution threads to execute the mesh shading program on a second portion of the input mesh to generate second geometry stored in the on-chip memory. Subsequently, the parallel processor reads the first geometry and the second geometry from the on-chip memory, and performs operations on the first geometry and the second geometry to generate a rendered image derived from the input mesh. Advantageously, unlike conventional graphics processing pipelines, the performance of the graphics processing pipeline is not limited by a primitive distributor.