Application mirroring using multiple graphics contexts
First Claim
1. A method comprising:
- maintaining display of application graphics for a first application and a second application, both compiled for and in active concurrent execution within a first operating system, by iteratively performing steps comprising;
establishing a first rendering context of the first operating system;
calculating updates to surfaces of the first application using the first operating system;
rendering the updated surfaces of the first application in the first rendering context of the first operating system to generate a first graphics frame in a first memory location of anonymous shared memory comprising named memory blocks, the anonymous shared memory accessible by name through a file descriptor by all processes running on the first operating system and a second operating system and not accessible by name by other processes, the named memory blocks freed by a shared kernel, the first operating system and the second operating system running concurrently and independently on the shared kernel, the shared kernel including an interprocess communication (“
IPC”
) driver which passes the file descriptor to processes in the first operating system and the second operating system to allow communication between the first operating system and the second operating system across process boundaries, wherein each of the first and second operating systems makes system calls through the shared kernel without virtualized memory, wherein the first rendering context defines a first display associated with a mobile device;
disestablishing the first rendering context;
establishing a second rendering context of the first operating system;
calculating updates to surfaces of the second application using the first operating system;
rendering the updated surfaces of the second application in the second rendering context of the first operating system to generate a second graphics frame in a second memory location of the anonymous shared memory, wherein the second rendering context defines a second display associated with a desktop computing system, the second memory location being accessible by both the first operating system and a second operating system; and
disestablishing the second rendering context,wherein the surfaces of the first application are associated with the mobile device and the surfaces of the second application are associated with the desktop computing system, wherein the first operating system and the second operating system execute on the mobile device, andwherein device drivers in the single shared kernel implement hardware interfaces.
3 Assignments
0 Petitions
Accused Products
Abstract
Cross-environment rendering and user interaction support provide a seamless computing experience in a multi-operating system computing environment. Cross-environment rendering provides real-time display of applications running in a mobile operating system to be displayed within an environment of a desktop operating system. The mobile operating system and the desktop operating system may be running concurrently and independently on a shared kernel of a mobile computing device. A graphics server of the mobile operating system tears down and rebuilds the rendering context for each application as it composites the surface information. The rendering context may be established to match the resolution of the associated display, so that graphics will be appropriately rendered for that resolution. The mobile computing device may be a smartphone running the Android mobile operating system and a full desktop Linux distribution on a modified Android kernel.
245 Citations
20 Claims
-
1. A method comprising:
-
maintaining display of application graphics for a first application and a second application, both compiled for and in active concurrent execution within a first operating system, by iteratively performing steps comprising; establishing a first rendering context of the first operating system; calculating updates to surfaces of the first application using the first operating system; rendering the updated surfaces of the first application in the first rendering context of the first operating system to generate a first graphics frame in a first memory location of anonymous shared memory comprising named memory blocks, the anonymous shared memory accessible by name through a file descriptor by all processes running on the first operating system and a second operating system and not accessible by name by other processes, the named memory blocks freed by a shared kernel, the first operating system and the second operating system running concurrently and independently on the shared kernel, the shared kernel including an interprocess communication (“
IPC”
) driver which passes the file descriptor to processes in the first operating system and the second operating system to allow communication between the first operating system and the second operating system across process boundaries, wherein each of the first and second operating systems makes system calls through the shared kernel without virtualized memory, wherein the first rendering context defines a first display associated with a mobile device;disestablishing the first rendering context; establishing a second rendering context of the first operating system; calculating updates to surfaces of the second application using the first operating system; rendering the updated surfaces of the second application in the second rendering context of the first operating system to generate a second graphics frame in a second memory location of the anonymous shared memory, wherein the second rendering context defines a second display associated with a desktop computing system, the second memory location being accessible by both the first operating system and a second operating system; and disestablishing the second rendering context, wherein the surfaces of the first application are associated with the mobile device and the surfaces of the second application are associated with the desktop computing system, wherein the first operating system and the second operating system execute on the mobile device, and wherein device drivers in the single shared kernel implement hardware interfaces. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 19)
-
-
10. A mobile computing device, comprising:
-
a first application running within a first operating system, the first application calculating updates for a first graphics surface using the first operating system; a second application running within the first operating system, the second application calculating updates for a second graphics surface using the first operating system; a graphics server of the first operating system, wherein the graphics server establishes a first rendering context of the first operating system, allocates anonymous shared memory for surfaces of the first application and the second application, renders updated surfaces of the first application through the first rendering context to generate a first graphics frame in a first memory location, disestablishes the first rendering context, establishes a second rendering context of the first operating system, renders the updated surfaces of the second application through the second rendering context to generate a second graphics frame in a second memory location, the second memory location being a shared memory location accessible by both the first operating system and a second operating system, and disestablishes the second rendering context; and an anonymous shared memory comprising named memory blocks accessible by name through a file descriptor by all processes running on the first operating system and the second operating system and managed by a shared kernel, the first operating system and the second operating system running concurrently and independently on the shared kernel, wherein each of the first and second operating systems makes system calls through the shared kernel without virtualized memory, the shared kernel including an interprocess communication (“
IPC”
) driver which allows processes in the first operating system and the second operating system to communicate with one another across process boundaries,wherein the surfaces of the first application are associated with a mobile device and the surfaces of the second application are associated with a desktop computing system, wherein the first operating system and the second operating system execute on the mobile device, and wherein device drivers in the single shared kernel implement hardware interfaces. - View Dependent Claims (11, 12, 13, 14, 15, 16, 20)
-
-
17. A computing device including a non-transitory computer-readable medium storing instructions for a physical processor, the instructions, when executed, causing the processor to perform steps comprising:
-
maintaining display of application graphics for a first application and a second application, both compiled for and in active concurrent execution within a first operating system, by iteratively performing steps comprising; establishing a first rendering context of the first operating system; calculating updates to surfaces of the first application using the first operating system; rendering the updated surfaces of the first application in the first rendering context of the first operating system to generate a first graphics frame in a first memory location of anonymous shared memory, the anonymous shared memory accessible by all processes running on the first operating system and a second operating system and managed by a shared kernel, the first operating system and the second operating system running concurrently and independently on the shared kernel; disestablishing the first rendering context; establishing a second rendering context of the first operating system; calculating updates to surfaces of the second application using the first operating system; rendering the updated surfaces of the second application in the second rendering context of the first operating system to generate a second graphics frame in a second memory location of the anonymous shared memory comprising named memory blocks, the second memory location being accessible by name through a file descriptor by both the first operating system and a second operating system, wherein each of the first and second operating systems makes system calls through the shared kernel without virtualized memory; and disestablishing the second rendering context; wherein the surfaces of the first application are associated with a mobile device and the surfaces of the second application are associated with a desktop computing system, wherein the first operating system and the second operating system execute on the mobile device, wherein a graphics server allocates and tracks displays of the first operating system integrated both within the mobile device and with a remote user interaction space, and wherein device drivers in the single shared kernel implement hardware interfaces. - View Dependent Claims (18)
-
Specification