IP Library Granted Patent US 8,902,242
Granted Patent B2
US 8,902,242 · App. 12/428,949 · Granted Dec 2, 2014

Method and system for identifying drawing primitives for selective transmission to a remote display

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 8,902,242
App. No.
12/428,949
Granted
Dec 2, 2014
Kind
B2
Abstract

Remote desktop servers include a display encoder that maintains a secondary framebuffer that contains display data to be encoded and transmitted to a remote client display and a list of display primitives effectuating updated display data in the secondary framebuffer. The display encoder submits requests to receive the list of drawing primitives to a video adapter driver that receives and tracks drawing primitives that, when executed, update a primary framebuffer.

Claims (50)

1. In a server having a primary framebuffer for storing display data and a display encoder that uses a secondary framebuffer for transmitting display data to a remote client terminal, a method for reducing an amount of display data to be transmitted to the remote client terminal, the method comprising:

updating a queue comprising a list of completed drawing primitives upon execution of drawing primitives into the primary framebuffer;

receiving a request from the display encoder for a list of drawing primitives that corresponds to updated display data in the secondary framebuffer;

extracting the requested list of drawing primitives from the queue;

providing the requested list of drawing primitives to the display encoder;

determining a first bandwidth usage for transmitting a drawing primitive from the requested list;

determining a second bandwidth usage for transmitting the updated display data corresponding to the drawing primitive from the secondary framebuffer;

identifying which of the first bandwidth usage and the second bandwidth usage is a lower bandwidth usage; and

transmitting either the drawing primitive or the updated display data in the secondary framebuffer based on which of the first bandwidth usage and the second bandwidth usage is the lower bandwidth usage.

2. The method of claim 1 , further comprising the step of clearing each entry in the requested list of drawing primitives from the queue.

3. The method of claim 1 , wherein the request includes a sequence number corresponding to a last drawing primitive to update display data in the secondary framebuffer.

4. The method of claim 3 , wherein each entry in the queue comprises a sequence number and a drawing primitive.

5. The method of claim 4 , wherein the extracting step further comprises identifying each entry in the queue including a sequence number up to and including the sequence number of the request.

6. The method of claim 1 , wherein the primary framebuffer is a buffer allocated by a virtual video adapter and the queue is allocated by a video adapter driver that communicates with the virtual video adapter.

7. The method of claim 6 , wherein the video adapter driver is a component of a guest operating system of a virtual machine instantiated on the server.

8. The method of claim 1 , further comprising the step of initiating an interrupt to the display encoder upon an update of the queue.

9. A non-transitory computer-readable medium including instructions that, when executed by a processing unit of a server having a primary framebuffer for storing display data and a display encoder that uses a secondary framebuffer for transmitting display data to a remote client terminal, causes the processing unit to reduce an amount of display data to be transmitted to the remote client terminal, by performing the steps of:

updating a queue comprising a list of completed drawing primitives upon execution of drawing primitives into the primary framebuffer;

receiving a request from the display encoder for a list of drawing primitives that corresponds to updated display data in the secondary framebuffer;

extracting the requested list of drawing primitives from the queue;

providing the requested list of drawing primitives to the display encoder;

determining a first bandwidth usage for transmitting a drawing primitive from the requested list;

determining a second bandwidth usage for transmitting the updated display data in the secondary framebuffer;

identifying which of the first bandwidth usage and the second bandwidth usage is a lower bandwidth usage; and

transmitting either the drawing primitive or the updated display data in the secondary framebuffer based on which of the first bandwidth usage and the second bandwidth usage is the lower bandwidth usage.

10. The non-transitory computer-readable medium of claim 9 , wherein the processing unit further performs the step of removing the requested list of drawing primitives from the queue.

11. The non-transitory computer-readable medium of claim 9 , wherein the request includes a sequence number corresponding to a last drawing primitive to update display data in the secondary framebuffer.

12. The non-transitory computer-readable medium of claim 11 , wherein each entry in the queue comprises a sequence number and a drawing primitive.

13. The non-transitory computer-readable medium of claim 12 , wherein the extracting step further comprises identifying each entry in the queue including a sequence number up to and including the sequence number of the request.

14. The non-transitory computer-readable medium of claim 9 , wherein the primary framebuffer is a buffer allocated by a virtual video adapter and the queue is allocated by a video adapter driver that communicates with the virtual video adapter.

15. The non-transitory computer-readable medium of claim 14 , wherein the video adapter driver is a component of a guest operating system of a virtual machine instantiated on the server.

16. The non-transitory computer-readable medium of claim 9 , wherein the processing unit further performs the step of initiating an interrupt to the display encoder upon an update of the queue.

17. A computing system configured to reduce an amount of display data to be transmitted to a remote client terminal, the computer system comprising:

a system memory comprising:

a primary framebuffer for storing display data,

a video adapter driver that maintains a queue of drawing primitives, wherein each entry of the queue comprises a sequence number and a drawing primitive,

a display encoder for encoding and transmitting display data to the remote client terminal, and

a secondary framebuffer accessible to the display encoder; and

a processor coupled to the system memory, wherein the processor is configured to execute the video adapter driver to perform the steps of:

updating the queue upon execution of drawing primitives into the primary framebuffer,

receiving a request from the display encoder for a list of drawing primitives that corresponds updated display data in the secondary framebuffer,

extracting the requested list of drawing primitives from the queue,

providing the requested list of drawing primitives to the display encoder,

determining a first bandwidth usage for transmitting a drawing primitive from the requested list,

determining a second bandwidth usage for transmitting the updated display data corresponding to the drawing primitive from the secondary framebuffer,

identifying which of the first bandwidth usage and the second bandwidth usage is a lower bandwidth usage, and

transmitting either the drawing primitive or the updated display data in the secondary framebuffer based on which of the first bandwidth usage and the second bandwidth usage is the lower bandwidth usage.

18. The computing system of claim 17 , wherein the processor is configured to further perform the step of removing the requested list of drawing primitives from the queue.

19. The computing system of claim 17 , wherein the request includes a sequence number corresponding to a last drawing primitive to update display data in the secondary framebuffer.

20. The computing system of claim 19 , wherein the extracting step further comprises identifying each entry in the queue including a sequence number up to and including the sequence number of the request.

Assignments (3)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →