Merged Vertex Geometry Shader Execution Modes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Graphics processing units (GPUs) face challenges in efficiently executing shader programs, particularly in reducing processing resources and power consumption while maintaining programming flexibility, due to the limitations of traditional single input/single output programming models that do not allow vertex shader programs to generate multiple output vertices.

Innovation Solution

Implementing techniques that enable shader programs to generate multiple output vertices for each input vertex, allowing for reduced thread usage and improved resource allocation, and enabling programmable vertex and geometry shading with merged vertex/geometry shader programs that can switch between non-replicated and replicated execution modes based on storage and performance requirements.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a shader program generates only a single output vertex for each input vertex, then the processing model is simple and well-defined, but the number of threads required increases, leading to higher processing resource usage and power consumption

Engineering Contradiction:
Improveprocessing model simplicityVSAvoidpower consumption
Core Design Contradiction:
Device complexityVSUse of energy by moving object

Solution Approach 1:

The patent merges vertex shader processing and geometry shader processing into a single unified shader program that can execute on a single shader thread. This integration allows the system to generate multiple output vertices from a single input vertex without requiring multiple separate threads, thereby reducing the overall thread count and associated power consumption while maintaining processing clarity through a unified execution model

Inventive Principle:
Principle #5Merging (Combining)

2Productivity

If a shader program generates multiple output vertices for each input vertex, then the number of threads required is reduced, but the programming model becomes more complex

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidprogramming model complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements a dynamic programming model where the shader program can adaptively determine the number of output vertices to generate based on runtime conditions. The system dynamically switches between generating single or multiple output vertices per input vertex, allowing the programming model to remain flexible and efficient without requiring complex static definitions, thus improving productivity while managing complexity through dynamic adaptation

Inventive Principle:
Principle #15Dynamics

3Ease of operation

If multiple threads are used to process vertices, then each thread can handle a single input/output vertex pair simply, but the total processing resources and memory usage increase

Engineering Contradiction:
Improvethread operation simplicityVSAvoidprocessing resources
Core Design Contradiction:
Ease of operationVSQuantity of substance

Solution Approach 1:

The patent creates a universal shader program that can handle both vertex processing and geometry generation within a single thread. This multi-functional approach allows one thread to perform the work that previously required multiple specialized threads, reducing the total quantity of processing resources and memory usage while maintaining operational simplicity through a unified, versatile execution model

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

Data Source

PatentEP3489907B1Shader program execution techniques for use in graphics processing
Publication Date: 2020.09.23 QUALCOMM INC
  • EP3489907B1 patent drawingFigure 1
  • EP3489907B1 patent drawingFigure 2
  • EP3489907B1 patent drawingFigure 3

AI summary

This disclosure describes techniques for executing shader programs in a graphics processing unit (GPU). In some examples, the techniques for executing shader programs may include executing, with a shader unit of a graphics processor, a shader program that performs vertex shader processing and that generates multiple output vertices for each input vertex that is received by the shader program. In further examples, the techniques for executing shader programs may include executing a merged vertex/geometry shader program using a nonreplicated mode of execution. The nonreplicated mode of execution may involve assigning each of a plurality of primitives to one merged vertex/geometry shader program instance per primitive and causing each of the instances to output a plurality of vertices. In additional examples, the techniques for executing shader programs may include techniques for selecting one of a nonreplicated mode and a replicated mode for executing a merged vertex/geometry shader program.