IP Library Granted Patent US 9,875,076
Granted Patent B1
US 9,875,076 · App. 15/220,373 · Granted Jan 23, 2018

Remoting client having GPU off-loader

Inventors: Andrew Fausak (San Jose, CA); Oleg Rombakh (Los Gatos, CA); Richard Goldberg (Los Gatos, CA)
Assignee: WYSE TECHNOLOGY L.L.C.
G06F3/1454G06F9/4445G06T1/60
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 9,875,076
App. No.
15/220,373
Granted
Jan 23, 2018
Kind
B1
Abstract

A remoting client can be configured to offload various graphics-based remoting protocol processes to the GPU to thereby free up the CPU for performing other remoting tasks. In this way, a remoting client can be executed on a client terminal that has a less powerful CPU even when a graphics-rich desktop is virtualized on the client terminal. When the remoting client receives remoting communications containing graphics display data, the remoting client can write the graphics display data to a location in memory that is accessible to the GPU and can then pass the graphics display data to the GPU for further processing. The CPU is therefore freed from having to fully process the graphics display data including from having to copy the graphics display data to a display buffer.

Claims (43)

1. A method, implemented by a remoting client executing on a client terminal that includes a display device, for offloading processing of graphics display data to a graphics processing unit (GPU) to thereby minimize load on a central processing unit (CPU), the method comprising:

receiving, by the remoting client, one or more remoting communications that include one or more sets of graphics display data pertaining to a remoted display;

for each set of graphics display data, storing the set in a memory location that is accessible to the GPU;

instructing the GPU to copy each set of graphics display data to a render texture representing the remoted display;

after the GPU has copied each set of graphics display data to the render texture, instructing the GPU to render the contents of the render texture to a display buffer; and

after the GPU has rendered the contents of the render texture to the display buffer, instructing the GPU to copy the display buffer to a display surface thereby causing the rendered contents to be displayed on the display device.

2. The method of claim 1 , wherein the one or more sets of graphics display data are encoded, and wherein storing each set of graphics display data in a memory location accessible to the GPU comprises decoding each set.

3. The method of claim 1 , wherein instructing the GPU to copy each set of graphics display data to a render texture representing the remoted display comprises calling, for each set, a function that causes the GPU to perform direct memory access to copy the set to the render texture.

4. The method of claim 3 , wherein the render texture is stored in GPU memory.

5. The method of claim 1 , wherein each set of graphics display data is a tile pertaining to a particular area of a frame.

6. The method of claim 1 , wherein the remoting client instructs the GPU to render the contents of the render texture to the display buffer in response to receiving an end of frame indication.

7. The method of claim 1 , wherein the remoting client instructs the GPU to render the contents of the render texture to the display buffer after a specified duration of time has elapsed since a previous instruction to render the contents of the render texture to the display buffer was provided to the GPU.

8. The method of claim 1 , wherein the remoting client instructs the GPU to render the contents of the render texture to the display buffer after having instructed the GPU to copy multiple sets of graphics display data to the render texture.

9. The method of claim 1 , wherein the remoted display encompasses an entire desktop or a single application.

10. The method of claim 1 , further comprising:

receiving, by the remoting client, one or more additional remoting communications that include one or more additional sets of graphics display data pertaining to the remoted display;

for each additional set of graphics display data, storing the additional set in a memory location that is accessible to the GPU;

after the GPU has rendered the contents of the render texture to the display buffer, instructing the GPU to copy each additional set of graphics display data to the render texture; and

after the GPU has copied each additional set of graphics display data to the render texture, instructing the GPU to render the contents of the render texture to the display buffer and then instructing the GPU to copy the display buffer to the display surface.

11. One or more computer storage media storing computer executable instructions which when executed on a client terminal implement a remoting client that is configured to perform a method for offloading processing of graphics display data to a GPU to thereby minimize load on a CPU, the method comprising:

receiving a first set of one or more remoting communications from a remoting service, the first set of one or more remoting communications including a first set of tiles pertaining to a first frame of a remoted display;

storing each of the tiles in the first set in a memory location accessible to the GPU;

instructing the GPU to copy each of the tiles in the first set to a render texture representing the remoted display;

instructing the GPU to render the contents of the render texture to a display buffer such that each of the tiles in the first set is rendered to the display buffer to produce the first frame; and

instructing the GPU to copy the display buffer to a display surface such that the first frame is displayed.

12. The computer storage media of claim 11 , wherein the method further comprises:

receiving a second set of one or more remoting communications from the remoting service, the second set of one or more remoting communications including a second set of tiles pertaining to a second frame of the remoted display;

storing each of the tiles in the second set in a memory location accessible to the GPU;

instructing the GPU to copy each of the tiles in the second set to the render texture;

instructing the GPU to render the contents of the render texture to the display buffer such that each of the tiles in the second set is rendered to the display buffer to produce the second frame; and

instructing the GPU to copy the display buffer to the display surface such that the second frame is displayed.

13. The computer storage media of claim 12 , wherein the tiles in the first and second set are encoded, and wherein storing the tiles in the memory location accessible to the GPU comprises decoding the tiles.

14. The computer storage media of claim 12 , wherein the remoting client instructs the GPU to render the contents of the render texture to the display buffer and to copy the display buffer to the display surface in response to receiving an end of frame indication.

15. The computer storage media of claim 12 , wherein the remoting client instructs the GPU to copy each of the tiles in the second set to the render texture after each of the tiles in the first set has been rendered to the display buffer to produce the first frame.

16. The computer storage media of claim 11 , wherein the remoted display encompasses an entire desktop or a single application.

17. The computer storage media of claim 11 , wherein the tiles are encoded in accordance with a progressive codec.

18. A client terminal having a CPU for executing a remoting client and a GPU, the remoting client being configured to perform a method for offloading processing of graphics display data to the GPU to thereby minimize load on the CPU, the method comprising:

in response to receiving remoting communications that include graphics display data, copying the graphics display data to memory;

calling a first function of the GPU to cause the GPU to copy the graphics display data to a render texture in GPU memory;

calling a second function of the GPU to cause the GPU to render the contents of the render texture to a display buffer; and

calling a third function of the GPU to cause the GPU to copy the display buffer to a display surface.

19. The client terminal of claim 18 , wherein the graphics display data comprises a plurality of tiles, and wherein the first function of the GPU is called once for each tile.

20. The client terminal of claim 18 , wherein the second and third functions are called either in response to receiving an end of frame indication or after a period of time has elapsed.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045482/0131) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
MERGER Recorded May 9, 2022
From: WYSE TECHNOLOGY L.L.C.
To: DELL MARKETING CORPORATION
Reel/Frame 059912/0109 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →
RELEASE OF SEC. INT. IN PATENTS (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040027/0329 →
RELEASE OF SEC. INT. IN PATENTS (NOTES) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040026/0710 →
RELEASE OF SEC. INT. IN PATENTS (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040013/0733 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Aug 10, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 039719/0889 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Aug 10, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 039644/0084 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Aug 10, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 039643/0953 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2016
From: FAUSAK, ANDREW; ROMBAKH, OLEG; GOLDBERG, RICHARD
To: WYSE TECHNOLOGY L.L.C.
Reel/Frame 039268/0246 →