Virtualized Graphics Library GPU Acceleration

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing virtual machine environments struggle to provide efficient graphic processing services without direct access to a graphics processing unit (GPU), leading to performance issues due to software-implemented OpenGL ES support, which requires significant CPU resources and is not flexible enough to support different GPUs.

Innovation Solution

A virtual machine monitor (VMM) is configured to maintain a virtual machine with a virtualized graphics library (vGLib) that allocates memory sections for graphic commands and shares access with the host OS, allowing the host OS to utilize a graphics library (GLib) and GPU for processing, thereby facilitating GPU acceleration and supporting various GPUs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If software-implemented OpenGL ES support is used in a VM without direct GPU access, then the VM can execute graphic applications, but CPU throughput is significantly consumed and performance is slowed down

Engineering Contradiction:
ImproveGPU support capabilityVSAvoidapplication performance
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

A virtual GPU driver is introduced as an intermediary component between the VM and the physical GPU. The virtual GPU driver intercepts OpenGL ES commands from the VM, translates them into appropriate host OS graphics API calls, and submits them to the physical GPU through the host OS graphics library. This mediator enables GPU acceleration while maintaining VM isolation and compatibility.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The graphics processing functionality is segmented into distinct layers: the virtual GPU driver in the VM, the host OS graphics library, and the physical GPU hardware. This segmentation allows each component to operate independently with well-defined interfaces, enabling the VM to access GPU resources without direct hardware access while maintaining system stability and flexibility.

Inventive Principle:
Principle #1Segmentation

2Productivity

If a VM is implemented with a virtualized GPU or virtualized GPU driver, then GPU acceleration can be provided, but the solution is not flexible enough to support different GPUs for different embedded systems

Engineering Contradiction:
ImproveGPU processing capabilityVSAvoidGPU compatibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The virtual GPU driver is designed with universal functionality to support multiple types of physical GPUs. It implements a standardized interface layer that can translate OpenGL ES commands to work with different GPU architectures through the host OS graphics library, which itself supports multiple GPU vendors and models. This universal design allows the same VM configuration to leverage different GPU hardware without requiring VM-specific modifications.

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

Solution Approach 2:

The system utilizes parameter changes in the host OS graphics library configuration to adapt to different GPU types. The virtual GPU driver communicates with the host OS graphics library, which can dynamically adjust its behavior and parameters based on the detected physical GPU, thereby providing flexible support for different GPU hardware while maintaining a consistent virtual interface to the VM.

Inventive Principle:
Principle #35Parameter changes

3Adaptability or versatility

If the VM uses software implementations for OpenGL ES support, then it can run graphic applications, but a lot of CPU throughput is required

Engineering Contradiction:
ImproveOpenGL ES supportVSAvoidCPU throughput consumption
Core Design Contradiction:
Adaptability or versatilityVSUse of energy by moving object

Solution Approach 1:

The virtual GPU driver serves as an intermediary that redirects OpenGL ES commands from software processing to hardware acceleration. Instead of the CPU executing all graphics operations through software implementations, the virtual GPU driver intercepts these commands and submits them to the physical GPU, which performs the computationally intensive graphics processing in parallel, dramatically reducing CPU throughput requirements.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system replaces the mechanical CPU-based software rendering mechanism with a GPU-based hardware acceleration mechanism. The virtual GPU driver facilitates this substitution by translating CPU-generated OpenGL ES commands into GPU-executable operations, leveraging the GPU's specialized architecture for parallel graphics processing and thereby reducing the computational burden on the CPU.

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

Data Source

PatentUS10127628B2Method and system to virtualize graphic processing services
Publication Date: 2018.11.13 VMWARE INC
  • US10127628B2 patent drawing
  • US10127628B2 patent drawing
  • US10127628B2 patent drawing

AI summary

Methods and systems configured to virtualize graphic processing services in a virtual machine environment are disclosed. A virtual machine monitor (VMM) may be configured to maintain a virtual machine (VM) based on a host operating system (OS) executing in the system. The VM may contain a virtualized graphics library (vGLib) configured to support a graphic command from an application executing in the VM. The host OS may contain a graphics library (GLib) configured to support the graphic command and utilize a graphics processing unit (GPU) in the system to process the graphic command. Upon receiving the graphic command from the application, the vGLib may be configured to allocate a memory section in the VM to store the graphic command. And the VMM may be further configured to share access to the memory section with the host OS, thereby allowing the host OS to retrieve the graphic command from the memory section and deliver the graphic command to the GLib for processing.