Render Target Command Reordering in GPU Rendering

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional graphics processing unit (GPU) architectures face inefficiencies due to the need to frequently load and store data when changing render targets during rendering, which can be computationally and time-intensive, especially in mobile architectures with limited memory bandwidth.

Innovation Solution

Reordering commands associated with render targets based on dependencies between them to minimize load and store operations, allowing for more efficient execution by grouping commands that do not require data transitions between render targets.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If commands are executed in the initial order received, then the execution flow is simple, but the number of load and store operations increases due to frequent render target changes

Engineering Contradiction:
Improvecomputationally intensive operationsVSAvoidrendering efficiency
Core Design Contradiction:
Loss of energyVSProductivity

Solution Approach 1:

The system performs preliminary analysis of the command stream to identify render target dependencies and reorders commands before execution. This preliminary reordering action groups commands by render target, ensuring that all commands for a given render target are executed contiguously, thereby eliminating frequent load-store operations during rendering.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The command stream is segmented into separate command groups based on render target associations. Each segment contains commands that operate on the same render target, allowing the GPU to process each segment without intermediate data transitions, thus reducing the computational overhead of frequent render target switching.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If render targets are changed frequently during rendering, then command execution flexibility is maintained, but data loading and storing operations increase

Engineering Contradiction:
Improvecommand execution flexibilityVSAvoidtime intensive operations
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The system performs preliminary analysis of the command stream to identify render target dependencies and reorders commands before execution. This preliminary reordering action groups commands by render target, ensuring that all commands for a given render target are executed contiguously, thereby eliminating frequent load-store operations during rendering.

Inventive Principle:
Principle #10Preliminary action

3Loss of energy

If commands are reordered based on render target dependencies, then load and store operations are reduced, but command processing complexity increases

Engineering Contradiction:
Improvedata transition operationsVSAvoidcommand processing complexity
Core Design Contradiction:
Loss of energyVSDevice complexity

Solution Approach 1:

The system introduces an intermediary command reordering stage between command reception and GPU execution. This intermediary component analyzes render target dependencies, builds dependency graphs, and reorders commands accordingly. While this adds processing complexity, it significantly reduces the more expensive load-store operations during actual rendering execution.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentEP3183713B1Render target command reordering in graphics processing
Publication Date: 2019.09.18 QUALCOMM INC
  • EP3183713B1 patent drawingFigure 1
  • EP3183713B1 patent drawingFigure 2
  • EP3183713B1 patent drawingFigure 3A

AI summary

In an example, a method for rendering graphics data includes receiving a plurality of commands associated with a plurality of render targets, where the plurality of commands are received in an initial order. The method also includes determining an execution order for the plurality of commands including reordering one or more of the plurality of commands in a different order than the initial order based on data dependencies between commands. The method also includes executing the plurality of commands in the determined execution order.