Scene Program Graphics Pipeline Offloading

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The disparity in performance between CPU and GPU processing cores leads to the CPU becoming a bottleneck in graphics rendering, as current graphics APIs are single-threaded, limiting the ability to leverage additional CPU cores for generating and transmitting graphics commands efficiently.

Innovation Solution

A method that involves receiving calls from application programs to execute scene programs, identifying machine code and high-level versions, determining execution order based on state information, and launching threads to execute machine code versions, thereby offloading graphics processing tasks from the CPU to the GPU and optimizing the graphics pipeline.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the CPU generates and transmits graphics rendering commands serially through a single-threaded API, then the interface between application programs and GPU is simple, but the CPU becomes a bottleneck and cannot keep up with GPU processing speed

Engineering Contradiction:
ImproveGPU processing speedVSAvoidCPU command generation efficiency
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent segments the graphics rendering command generation process into multiple independent threads that can execute in parallel. Instead of a single-threaded API, the system creates multiple CPU threads that can simultaneously generate and transmit graphics commands to the GPU, thereby increasing CPU productivity and eliminating the bottleneck while maintaining API simplicity through automated thread management.

Inventive Principle:
Principle #1Segmentation

2Productivity

If multiple processing cores are integrated into the CPU, then CPU processing capability increases, but the single-threaded API cannot utilize additional cores to generate graphics commands faster

Engineering Contradiction:
ImproveCPU processing capabilityVSAvoidAPI threading capability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent introduces dynamic threading capability to the previously static single-threaded API. The system dynamically creates and manages multiple CPU threads based on available cores and workload requirements, allowing the API to adaptively utilize multiple processing cores for parallel graphics command generation while maintaining backward compatibility with existing single-threaded applications.

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If the CPU executes the overall structure of software application programs, then general-purpose processing is achieved, but the CPU cannot generate graphics commands at the speed the GPU can process them

Engineering Contradiction:
ImproveCPU general-purpose processingVSAvoidGraphics command generation speed
Core Design Contradiction:
Adaptability or versatilityVSSpeed

Solution Approach 1:

The patent segments the graphics command generation workload across multiple CPU threads, allowing parallel execution of command generation tasks. This segmentation enables the CPU to generate graphics commands at higher speeds by utilizing multiple cores simultaneously, while the CPU maintains its general-purpose processing capability for executing application program structures.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9218691B1System and method for enabling scene program functionality
Publication Date: 2015.12.22 NVIDIA CORP
  • US9218691B1 patent drawing
  • US9218691B1 patent drawing
  • US9218691B1 patent drawing

AI summary

One embodiment of the present invention sets forth a technique for specifying scene programs, where the effect of executing a particular scene program is to generate a sequence of graphics commands. The application programming interface is extended to include calls used to specify a high-level scene program. Upon receiving a high-level scene program, the graphics driver generates a machine code scene program. When an application program emits a call to execute one or more machine code scene programs, the graphics driver transmits corresponding scene programs execution commands to the graphics pre-processing unit. For each scene program execution command, the graphics pre-processing unit processes instructions, programmatically reconfigures the graphics pipeline based on the execution of the machine code scene program, and launches one or more parallel threads that execute commands within the graphics pipeline. Advantageously, using scene programs, application developers may tailor application programs to more effectively dispatch tasks to the GPU.