IP Library › Granted Patent US 12,406,323
Granted Patent B2
US 12,406,323 · App. 18/453,092 · Granted Sep 2, 2025

Splitting virtual graphics processing unit (GPU) driver between host and guest operating systems

Inventors: Colin Downs-Razouk (San Francisco, CA); Rahul Chaturvedi (San Francisco, CA); Mateusz Maria Przybylski (Folsom, CA); Kaiyi Li (San Francisco, CA); Ivan Neulander (Los Angeles, CA)
Assignee: Google LLC
G06T1/20G06F9/545
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,406,323
App. No.
18/453,092
Granted
Sep 2, 2025
Kind
B2
Abstract

In general, techniques are described for providing a virtual graphics processing unit driver by receiving, in a user mode of a guest process executed by a computing system, one or more graphics commands from an application of the guest process; triggering, in the user mode of the guest process, an operating system call in response to the one or more graphics commands; translating, in a kernel mode of the guest process, the operating system call into a first virtual buffer; translating, in the user mode of a host process executed by the computing system, the first virtual buffer into the operating system call; and sending, in the user mode of the host process, the operating system call to a graphics processing unit driver in a kernel mode of the host process.

Claims (63)

1. A method comprising:

receiving, in a user mode of a guest process executed by a computing system, one or more graphics commands from an application of the guest process;

triggering, in the user mode of the guest process, an operating system call in response to the one or more graphics commands;

translating, in a kernel mode of the guest process, the operating system call into a first virtual buffer;

translating, in the user mode of a host process executed by the computing system, the first virtual buffer into the operating system call; and

sending, in the user mode of the host process, the operating system call to a graphics processing unit driver executing in a kernel mode of the host process.

2. The method of claim 1 , comprising:

sending an address of the first virtual buffer from the guest process to the host process in response to translating the operating system call into the first virtual buffer.

3. The method of claim 1 , wherein the guest process emulates a first operating system and the host process executes a second operating system, the first operating system different than the second operating system.

4. The method of claim 1 , comprising:

sending, by the graphics processing unit driver in the kernel mode of the host process, one or more graphics processing unit commands, based at least in part on the operating system call, to a graphics processing unit.

5. The method of claim 4 , comprising:

receiving, by the graphics processing unit driver in the kernel mode of the host process, one or more responses from the graphics processing unit for the one or more graphics processing unit commands.

6. The method of claim 1 , comprising:

sending, in the kernel mode of the host process, an operating system call response to a virtual device in user mode of the host process;

translating, in the user mode of the host process, the operating system call response into a second virtual buffer;

translating, in the kernel mode of the guest process, the second virtual buffer into the operating system call response; and

sending, in kernel mode of the guest process, the operating system call response to a virtual graphics processing unit driver in user mode of the guest process.

7. The method of claim 6 , comprising:

sending, in the user mode of the guest process, one or more graphics command responses to the application.

8. The method of claim 6 , comprising:

sending the address of the second virtual buffer to the guest process in response to translating the operating system call response into the second virtual buffer.

9. An apparatus comprising:

a memory to store a host operating system; and

processing circuitry to:

execute the host operating system, the host operating system including a guest process and a host process, to:

receive, in a user mode of the guest process, one or more graphics commands from an application of the guest process;

trigger, in the user mode of the guest process, an operating system call in response to the one or more graphics commands;

translate, in a kernel mode of the guest process, the operating system call into a first virtual buffer;

translate, in the user mode of the host process executed by the computing system, the first virtual buffer into the operating system call; and

send, in the user mode of the host process, the operating system call to a graphics processing unit driver executing in a kernel mode of the host process.

10. The apparatus of claim 9 , comprising the processor circuitry to:

send an address of the first virtual buffer from the guest process to the host process in response to translating the operating system call into the first virtual buffer.

11. The apparatus of claim 9 , wherein the guest process emulates an operating system different than the host operating system.

12. The apparatus of claim 9 , comprising the processor circuitry to:

send, by the graphics processing unit driver in the kernel mode of the host process, one or more graphics processing unit commands, based at least in part on the operating system call, to a graphics processing unit.

13. The apparatus of claim 12 , comprising the processor circuitry to:

receive, by the graphics processing unit driver in the kernel mode of the host process, one or more responses from the graphics processing unit for the one or more graphics processing unit commands.

14. The apparatus of claim 9 , comprising the processor circuitry to:

send, in the kernel mode of the host process, an operating system call response to a virtual device in user mode of the host process;

translate, in the user mode of the host process, the operating system call response into a second virtual buffer;

translate, in the kernel mode of the guest process, the second virtual buffer into the operating system call response; and

send, in kernel mode of the guest process, the operating system call response to a virtual graphics processing unit driver in user mode of the guest process.

15. The apparatus of claim 14 , comprising the processor circuitry to:

send, in the user mode of the guest process, one or more graphics command responses to the application.

16. The apparatus of claim 9 , comprising the processor circuitry to:

send the address of the second virtual buffer to the guest process in response to translating the operating system call response into the second virtual buffer.

17. A non-transitory computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to:

execute a host operating system, the host operating system including a guest process and a host process, to:

receive, in a user mode of the guest process, one or more graphics commands from an application of the guest process;

trigger, in the user mode of the guest process, an operating system call in response to the one or more graphics commands;

translate, in a kernel mode of the guest process, the operating system call into a first virtual buffer;

translate, in the user mode of the host process executed by the computing system, the first virtual buffer into the operating system call; and

send, in the user mode of the host process, the operating system call to a graphics processing unit driver executing in a kernel mode of the host process.

18. The non-transitory computer-readable storage medium of claim 17 , comprising having instructions stored thereon that, when executed, cause one or more processors to:

send an address of the first virtual buffer from the guest process to the host process in response to translating the operating system call into the first virtual buffer.

19. The non-transitory computer-readable storage medium of claim 17 , comprising having instructions stored thereon that, when executed, cause one or more processors to:

send, in the kernel mode of the host process, an operating system call response to a virtual device in user mode of the host process;

translate, in the user mode of the host process, the operating system call response into a second virtual buffer;

translate, in the kernel mode of the guest process, the second virtual buffer into the operating system call response; and

send, in kernel mode of the guest process, the operating system call response to a virtual graphics processing unit driver in user mode of the guest process.

20. The non-transitory computer-readable storage medium of claim 17 , comprising having instructions stored thereon that, when executed, cause one or more processors to:

send, in the user mode of the guest process, one or more graphics command responses to the application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2023
From: DOWNS-RAZOUK, COLIN; CHATURVEDI, RAHUL; PRZYBYLSKI, MATEUSZ MARIA; LI, KAIYI; NEULANDER, IVAN
To: GOOGLE LLC
Reel/Frame 064653/0334 →
Continuity (1)
Related Publication 20250069180A1 · Feb 27, 2025
References Cited (6)
US 11175936B2 · Nair · 2021 [cited by examiner]
US 20110102443A1 · Dror et al. · 2011 [cited by applicant]
US 20130293557A1 · Diard · 2013 [cited by applicant]
US 20140173628A1 · Ramakrishnan Nair · 2014 [cited by examiner]
International Search Report and Written Opinion of International Application No. PCT/US2024/039831 dated Nov. 28, 2024, 12 pp. [cited by applicant]
Wang et al., “SEGIVE: A practical framework of secure GPU execution in virtualization environment”, 2020 IEEE 39th International Performance Computing and Communications Conference (IPCCC), IEEE, Nov. 6, 2020, 10 pp. [cited by applicant]