Index Buffer Rebuilding for Geometry Shader Data Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The lack of a geometry stage in Metal API hinders efficient communication among threads, affecting the ability to read input data into geometry shaders and write stream outputs, particularly due to varying index buffer locations and output primitive counts, which is not efficiently addressed by existing emulation methods.

Innovation Solution

A method is implemented to rebuild the index buffer using T-vectors, performing prefix scanning to determine complete primitives and calculate offsets, allowing for efficient reading of input data into geometry shaders and packing stream outputs while preserving order, enabling DirectX emulation on Metal API.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If Metal API is used without geometry stage, then compatibility with Metal platform is achieved, but ability to read input data into geometry shaders and write stream outputs is hindered

Engineering Contradiction:
ImproveMetal API compatibilityVSAvoidthread communication efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent introduces an intermediary index buffer rebuilding mechanism that mediates between Metal API's lack of geometry stage and DirectX's geometry shader requirements. The index buffer acts as a mediator structure that enables thread communication and data flow without requiring a native geometry stage, allowing Metal to emulate DirectX functionality.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the rendering pipeline by separating the index buffer processing into distinct rebuild operations. By dividing the index buffer into manageable segments and rebuilding them independently, the system achieves efficient thread communication without requiring a unified geometry stage, thus maintaining Metal API compatibility while improving productivity.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If index buffer locations vary and output primitive counts vary, then flexibility in handling different geometries is achieved, but efficient reading and writing into geometry shaders becomes difficult

Engineering Contradiction:
Improvegeometry handling flexibilityVSAvoidindex buffer management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies preliminary action by pre-calculating and storing primitive counts and index buffer locations during the index buffer rebuild phase. This preliminary computation enables subsequent geometry shader operations to efficiently read and write data without encountering variability issues, reducing the complexity of dynamic geometry handling.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent changes parameters by transforming the index buffer into a standardized format with consistent offsets and strides. By modifying the index buffer parameters (locations, counts, offsets) during the rebuild process, the system maintains flexibility in handling different geometries while presenting a uniform interface to geometry shaders, thereby reducing management complexity.

Inventive Principle:
Principle #35Parameter changes

3Measurement precision

If prefix scanning is performed to determine complete primitives and calculate offsets, then accurate primitive identification is achieved, but processing time increases

Engineering Contradiction:
Improveprimitive identification accuracyVSAvoidprocessing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent performs prefix scanning as a preliminary action during the index buffer rebuild phase, rather than during runtime geometry processing. By completing the computationally intensive prefix scanning operation in advance, the system achieves accurate primitive identification while minimizing the time impact on actual rendering operations.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements periodic action by performing prefix scanning only when the index buffer needs to be rebuilt, rather than continuously during geometry processing. This periodic execution of the scanning operation reduces overall processing time while maintaining accurate primitive identification when needed.

Inventive Principle:
Principle #19Periodic action

Data Source

PatentUS11417059B1System and method for reading arrays of data by rebuilding an index buffer while preserving order
Publication Date: 2022.08.16 PARALLELS INT GMBH
  • US11417059B1 patent drawing
  • US11417059B1 patent drawing
  • US11417059B1 patent drawing

AI summary

Disclosed herein are systems and methods for reading input data into a geometry shader by rebuilding an index buffer. In one aspect, an exemplary method comprises constructing T-vectors for one-element ranges of the index buffer by defining each T-vector as a 4-component vector, calculating T-vectors for ranges [0; i] for all vertices of the index buffer by prefix scanning, for each vertex and for each primitive featuring the vertex, determining if the primitive is complete, and for each complete primitive, calculating an offset in an output index buffer using a component of the T-vector used to indicate, for the vertex, a number of complete primitives inside the range and a component that indicates a number of vertices since a last primitive restart, and writing an index value in an output index buffer, and reading input data into the geometry shader in accordance with the written index values.