GPU Conditional Rendering via Shadow Indirect Buffer

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current graphics processing units (GPUs) face performance issues and memory bandwidth constraints when rendering three-dimensional scenes, as they require significant resources to determine visibility of primitives in each bin, leading to unnecessary execution of secondary commands when primitives are not visible, which can result in corruption of the final scene.

Innovation Solution

Implementing a conditional execution mechanism where the GPU determines visibility based on a visibility stream to decide between executing instructions in an indirect buffer or a shadow indirect buffer, ensuring that secondary commands are executed even if primitives are not visible, thereby improving rendering performance without affecting the final scene.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the GPU executes instructions in the indirect buffer based on visibility stream, then rendering performance is improved by skipping invisible primitives, but secondary operations may be incorrectly skipped causing scene corruption

Engineering Contradiction:
Improverendering performanceVSAvoidscene integrity
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The instruction buffer is segmented into two separate buffers: the indirect buffer containing primitive rendering instructions and the shadow indirect buffer containing secondary operations. This segmentation allows independent control of primitive rendering (which can be skipped) from secondary operations (which must always execute), resolving the contradiction between performance optimization and scene integrity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Secondary operations are extracted from the main indirect buffer and placed in a separate shadow indirect buffer. This extraction ensures that secondary operations are not affected by visibility-based skipping of primitive rendering instructions, allowing the GPU to skip invisible primitives while maintaining execution of necessary secondary operations like depth pre-pass and stencil operations.

Inventive Principle:
Principle #2Taking out (Extraction)

2Reliability

If the GPU processes all bins regardless of visibility, then scene integrity is maintained, but rendering performance deteriorates due to unnecessary processing

Engineering Contradiction:
Improvescene integrityVSAvoidrendering performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The GPU performs a preliminary visibility check using the visibility stream before executing instructions for each bin. Based on this preliminary assessment, the GPU conditionally executes either the indirect buffer or shadow indirect buffer, avoiding unnecessary processing of invisible primitives while ensuring secondary operations are always performed when needed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The execution path is made dynamic and conditional rather than static. The GPU dynamically selects between executing the indirect buffer (for visible primitives) or shadow indirect buffer (for secondary operations only) based on runtime visibility information, optimizing performance adaptively without compromising scene integrity.

Inventive Principle:
Principle #15Dynamics

3Productivity

If the GPU skips execution of indirect buffer instructions for invisible bins, then rendering efficiency is improved, but secondary commands are not executed causing scene corruption

Engineering Contradiction:
Improverendering efficiencyVSAvoidscene correctness
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The shadow indirect buffer acts as an intermediary that ensures secondary operations are executed even when primitive rendering is skipped. This intermediary buffer contains a subset of instructions specifically for secondary operations, serving as a fallback execution path that maintains scene correctness without sacrificing rendering efficiency.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

Different parts of the instruction set are treated differently based on their requirements: primitive rendering instructions are conditionally executed based on visibility, while secondary operations are unconditionally executed when needed. This local differentiation allows optimization of primitive rendering without affecting the execution of critical secondary operations.

Inventive Principle:
Principle #3Local quality

Data Source

PatentEP3005305B1Conditional execution of rendering commands based on per bin visibility information with added inline operations
Publication Date: 2019.03.06 QUALCOMM INC
  • EP3005305B1 patent drawingFigure 1
  • EP3005305B1 patent drawingFigure 2
  • EP3005305B1 patent drawingFigure 3

AI summary

A GPU may determine, based on a visibility stream, whether to execute instructions stored in an indirect buffer. The instructions include instructions for rendering primitives associated with a bin of a plurality of bins and include one or more secondary operations. The visibility stream indicate if one or more of the primitives associated with the bin will be visible in a finally rendered scene. The GPU may, responsive to determining not to execute the instructions stored in the indirect buffer, execute one or more secondary operations stored in a shadow indirect buffer. The GPU may, responsive to determining to execute the instructions stored in the indirect buffer, execute the instructions for rending the primitives associated with the bin of the plurality of bins and executing the one or more secondary operations stored in the indirect buffer.