Emulating Geometry Shaders via Compute Shader Conversion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern graphics processing units (GPUs) that do not support geometry shaders and stream output stages pose challenges in virtualization scenarios, leading to performance degradation when CPU-based emulation is used for geometry shader execution, which is impractical for real-time graphics rendering.

Innovation Solution

Emulating geometry shaders and stream output using compute shaders, where a geometry shader/stream output emulation module converts geometry shaders into compute shaders and executes them on the GPU's compute shader stage, allowing GPUs without native support for these features to handle geometry and stream output operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If geometry shaders are emulated using CPU-based execution, then compatibility with GPUs lacking geometry shader support is improved, but rendering performance deteriorates significantly

Engineering Contradiction:
ImprovecompatibilityVSAvoidrendering performance
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent replaces CPU-based geometry shader emulation with GPU-based compute shader execution. Instead of using the CPU to execute geometry shader code (which causes performance degradation), the system translates geometry shader programs into compute shader programs that run on the GPU's compute shader stage, leveraging the GPU's parallel processing capabilities to maintain high rendering performance while providing compatibility for GPUs without native geometry shader support

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The patent enables the GPU's compute shader stage to perform multiple functions: it can execute compute shaders for general-purpose computing and also execute translated geometry shader programs. This multi-functionality allows the compute shader stage to serve as a universal execution platform that provides both computational flexibility and geometry processing capabilities on GPUs that lack dedicated geometry shader hardware

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

2Device complexity

If geometry shader and stream output stages are excluded from GPU design, then device complexity and power consumption are reduced, but functionality and adaptability are limited

Engineering Contradiction:
ImproveGPU design complexityVSAvoidfeature support
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent makes the GPU's compute shader stage universal by enabling it to execute both compute shaders and translated geometry shader programs. This allows the GPU to provide geometry processing and stream output functionality without adding dedicated geometry shader hardware, maintaining simple device design while achieving broad feature support and compatibility across different GPU architectures

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

Data Source

PatentUS11227425B2Emulation of geometry shaders and stream output using compute shaders
Publication Date: 2022.01.18 VMWARE INC
  • US11227425B2 patent drawing
  • US11227425B2 patent drawing
  • US11227425B2 patent drawing

AI summary

Techniques for emulating geometry shaders and stream output using compute shaders are provided. In one set of embodiments, a geometry shader/stream output (GS/SO) emulation module can receive a geometry shader defined by an application for execution via a geometry shader stage of a graphics processing unit (GPU) of a computer system, where the geometry shader comprises program code for processing an input primitive. The GS/SO emulation module can further convert the geometry shader into one or more compute shaders, where the one or more compute shaders incorporate the program code of the geometry shader. The GS/SO emulation module can then issue the one or more compute shaders to a graphics driver of the computer system for execution via a compute shader stage of the GPU.