Index Buffer Pre-processing for Graphics Pipeline Throughput

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

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

Innovation Solution

The method involves pre-processing index buffers by identifying unique vertices and generating vertex and indirect index buffers, allowing for cooperative execution of threads to reuse buffers until the input mesh topology changes, thereby optimizing processing and reducing resource wastage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the primitive distributor is used to collect and construct batches of work, then the graphics processing pipeline can process vertex data, but the throughput is limited to 16 primitives per clock cycle regardless of memory bandwidth or number of streaming multiprocessors

Engineering Contradiction:
ImprovethroughputVSAvoidfixed-function hardware unit
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent replaces the fixed-function primitive distributor with a dynamic, programmable mesh shader that can adapt its operation based on input data characteristics. The mesh shader dynamically determines vertex processing strategies, including whether to perform deduplication operations and how to organize vertex batches, allowing the system to scale with available hardware resources rather than being constrained by a fixed throughput ceiling.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The invention changes the operational parameters of the vertex processing stage by introducing a programmable shader that can modify processing behavior based on conditions. The mesh shader can adjust batch sizes, deduplication timing, and vertex selection criteria dynamically, transforming the rigid parameter set of the primitive distributor into flexible, adaptive parameters that optimize throughput for different workloads.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If each vertex is independently processed by a different thread, then parallel processing can be achieved, but culling operations cannot be performed to discard non-visible primitives

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

Solution Approach 1:

The patent merges the independent thread processing model with cooperative culling capabilities by having threads process vertices in groups or batches rather than completely independently. The mesh shader coordinates threads to share information about primitive visibility, allowing culling decisions to be made based on collective thread knowledge while maintaining parallel execution benefits.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The mesh shader acts as an intermediary between the independent thread processors and the culling logic. It collects vertex data from multiple threads, performs coordinated culling operations based on accumulated information, and distributes the filtered results back to threads for further processing, enabling culling without sacrificing parallel processing efficiency.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If deduplication operations are performed repeatedly for each frame, then unique vertices can be identified, but processing resources and power are wasted

Engineering Contradiction:
Improvevertex buffer accuracyVSAvoidprocessing power consumption
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent performs deduplication operations in advance during mesh shader execution before the main rendering pipeline processes the data. By identifying and eliminating duplicate vertices during the initial mesh processing stage rather than repeatedly during subsequent rendering frames, the system establishes an optimized vertex buffer that can be reused, significantly reducing redundant processing power consumption while maintaining vertex buffer accuracy.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10878611B2Techniques for pre-processing index buffers for a graphics processing pipeline
Publication Date: 2020.12.29 NVIDIA CORP
  • US10878611B2 patent drawing
  • US10878611B2 patent drawing
  • US10878611B2 patent drawing

AI summary

In various embodiments, a deduplication application pre-processes index buffers for a graphics processing pipeline that generates rendered images via a shading program. In operation, the deduplication application causes execution threads to identify a set of unique vertices specified in an index buffer based on an instruction. The deduplication application then generates a vertex buffer and an indirect index buffer based on the set of unique vertices. The vertex buffer and the indirect index buffer are associated with a portion of an input mesh. The graphics processing pipeline then renders a first frame and a second frame based on the vertex buffer, the indirect index buffer, and the shading program. Advantageously, the graphics processing pipeline may re-use the vertex buffer and indirect index buffer until the topology of the input mesh changes.