Graphics Processing Index Buffer Primitive Restart Elimination

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In graphics processing systems, identifying and processing primitives with primitive restarts in index buffers is challenging due to the potential for incomplete primitives, which complicates graphics operations that require complete primitives as input.

Innovation Solution

A method and apparatus for processing indices in graphics processing systems that determine the end and start positions of primitive sequences within the index buffer, allowing for the identification of complete primitives and the elimination of primitive restarts, enabling efficient reordering of indices to create a new set without restarts, facilitating parallel processing and geometry shading operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If primitive restarts are included in the index buffer to enable compact index representations and avoid vertex duplication, then memory usage and data compression are improved, but the complexity of identifying complete primitives and processing graphics operations deteriorates

Engineering Contradiction:
Improvememory usageVSAvoidcomplexity of identifying complete primitives
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent applies preliminary action by pre-calculating and storing the end position of each primitive sequence in a lookup table during a first pass through the index buffer. This allows the graphics processing system to quickly determine complete primitives during subsequent processing without repeatedly analyzing the entire index buffer, thus resolving the contradiction between compact indexing and processing complexity

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary data structure (lookup table storing end positions of primitive sequences) that mediates between the compact index buffer format and the requirements for complete primitive processing. This intermediary enables efficient identification of complete primitives by providing pre-computed boundary information, eliminating the need for complex real-time analysis

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If primitive restarts are used to combine multiple independent triangle strips, then adaptability and versatility of the index buffer are improved, but the difficulty of detecting complete primitives for graphics operations deteriorates

Engineering Contradiction:
Improveability to combine multiple independent triangle stripsVSAvoiddifficulty of detecting complete primitives
Core Design Contradiction:
Adaptability or versatilityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent performs preliminary action by scanning the index buffer in advance to identify all primitive restart positions and pre-storing the end positions of each primitive sequence in a lookup table. This preparation enables the system to easily detect complete primitives during actual graphics processing, resolving the contradiction between versatility and detection difficulty

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements feedback by using the lookup table of pre-computed end positions to guide the identification of complete primitives during processing. The system references the stored end positions to determine when a primitive sequence is complete, creating a feedback mechanism that simplifies detection while maintaining the ability to handle multiple independent triangle strips

Inventive Principle:
Principle #23Feedback

3Quantity of substance

If the index buffer contains primitive restarts to enable efficient triangle strip compression, then data compactness is improved, but the time required to process and identify complete primitives deteriorates

Engineering Contradiction:
Improvedata compactnessVSAvoidtime required to process indices
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent applies preliminary action by performing a first pass through the index buffer to pre-identify all primitive restart positions and store end positions in a lookup table. This pre-processing eliminates the need for time-consuming repeated analysis during actual graphics processing, thus resolving the contradiction between data compactness and processing time

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates a copy of the essential information from the index buffer (end positions of primitive sequences) in a lookup table. This copy contains the critical data needed for identifying complete primitives, allowing rapid access during processing without re-parsing the entire index buffer, thus reducing processing time while maintaining compact data representation

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10235793B2Graphics processing systems
Publication Date: 2019.03.19 ARM LTD
  • US10235793B2 patent drawing
  • US10235793B2 patent drawing
  • US10235793B2 patent drawing

AI summary

An input set of indices, which contains primitive restarts, is input into splitter stage, where it is split into blocks of index positions. Each of these blocks is processed by scanner stages and scan combiner stage, to determine for each index position, the index position of the end of the sequence of primitives in the set of indices that the index position is part of. The determined index positions of the ends of the sequences of primitives in the set of indices for the index positions are then used to determine for each index position, whether a triangular primitive should be output or not, at a triangle output decision stage. A parallel scan stage then determines each triangle's position in the output set of indices, and the triangle's vertex indices are then written out at index write-out stage to an output set of indices, which contains no primitive restarts.