IP Library Granted Patent US 11,640,689
Granted Patent B1
US 11,640,689 · App. 17/213,714 · Granted May 2, 2023

Emulation pipeline selection and emulation pipeline parameter prediction

Inventor: Evgeny Nikitenko (Moscow, RU)
Assignee: Parallels International GmbH
G06T15/005G06F9/45545
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 11,640,689
App. No.
17/213,714
Granted
May 2, 2023
Kind
B1
Abstract

Incompatible graphics frameworks present a barrier to emulating applications of one operating system (guest OS) upon a computer system employing a different operating system (host OS) such as occurs with virtual machines. Accordingly, in order to address limitations of emulating guest OS graphic pipelines upon the host OS the inventors have established methodologies for cross-platform graphics pipeline emulation, thus enabling efficient implementations of cross-platform virtualization solutions, through the establishment of emulation keys to support generic and specific graphics pipelines together with caching sets of graphical pipelines for subsequent retrieval and execution.

Claims (80)

1. A method comprising:

generating upon a computer system an emulation key relating to a graphic pipeline for an application executing within a virtual machine associated with a guest operating system (OS) upon the computer system;

establishing whether a cached pipeline object exists within a memory cache accessible to the computer system in dependence upon the emulation key;

upon a positive determination that the cached pipeline object exists using one or more previously established graphic pipelines defined by the established cached pipeline object; and

upon a negative determination that the cached pipeline object exists creating one or more new graphic pipelines;

associating the newly created one or more graphic pipelines with a new pipeline object; and

storing the newly created one or more graphic pipelines within a memory;

storing the new pipeline object within the memory cache; wherein

either the one or more previously established graphic pipelines or the one or more new graphic pipelines are associated with a host OS of the computer system.

2. The method according to claim 1 , wherein

the graphic pipeline is a Direct3D™ pipeline; and

the one or more previously established graphic pipelines defined by the established cached pipeline object are Metal™ pipelines.

3. The method according to claim 1 , further comprising upon the negative determination prior to creating the one or more new graphic pipelines performing additional steps comprising:

determining whether a previously established main pipeline is compatible with a draw call;

upon a negative determination that the previously established main pipeline is compatible with a draw call creating the one or more new graphic pipelines synchronously as a new first specific pipeline;

upon a positive determination that the previously established main pipeline is compatible with a draw call determining whether a new second specific pipeline would be faster than the previously established main pipeline;

upon a positive determination that the new second specific pipeline would be faster than the previously established main pipeline creating the one or more new graphic pipelines asynchronously as a new second specific pipeline;

upon a negative determination that the new second specific pipeline would be faster than the previously established main pipeline using the previously established main pipeline.

4. The method according to claim 3 , wherein

the previously established main pipeline was established at either launching of the application or upon an initial draw call within the application; and

the previously established main pipeline was established in dependence upon estimated settings for parameters required by a pipeline state object (PSO) of the host OS not contained with a PSO of the guest OS.

5. The method according to claim 3 , wherein

the previously established main pipeline was established at either launching of the application or upon an initial draw call within the application;

the previously established main pipeline was established in dependence upon estimated settings for parameters required by a pipeline state object (PSO) of the host OS not contained with a PSO of the guest OS; and

the estimated settings comprise one or more settings selected from the group comprising:

vertex stream strides;

an index buffer format;

a vertex stage state defining whether an emulation pipeline is required to read all vertices explicitly or not;

a force attribute emulation state relating to enabling of disabling reading attributes for one or more buffers within a vertex shader;

an index draw call without index buffer defining whether an indexed craw call is made without an index buffer;

an add start vertex state defining whether to add a start vertex on a graphic processing unit performing one or more aspects of the pipeline; and

an element defining the vertex topology if the vertex stage state is enabled or vertex shader is emulated within the pipeline.

6. A method comprising:

generating upon a computer system an emulation key relating to a graphic pipeline for an application executing within a virtual machine associated with a guest operating system (OS) upon the computer system;

passing one or more unique identifiers with the emulation key;

establishing whether a cached pipeline object exists within a memory cache accessible to the computer system in dependence upon the emulation key and the one or more unique identifiers;

upon a positive determination that the cached pipeline object exists using one or more previously established graphic pipelines defined by the established cached pipeline object; and

upon a negative determination that the cached pipeline object exists creating one or more new graphic pipelines; wherein

either the one or more previously established graphic pipelines or the one or more new graphic pipelines are associated with a host OS of the computer system.

7. The method according to claim 6 , wherein

the one or more unique identifiers and the emulation key are passed from the guest OS to the host OS.

8. The method according to claim 6 , wherein

the graphic pipeline for the application is associated with the guest OS; and

the one or more previously established graphic pipelines defined by the established cached pipeline object are associated with a host OS of the computer system.

9. A method comprising:

generating upon a computer system an emulation key relating to a graphic pipeline for an application executing within a virtual machine associated with a guest operating system (OS) upon the computer system;

establishing whether a cached pipeline object exists within a memory cache accessible to the computer system in dependence upon the emulation key;

upon a positive determination that the cached pipeline object exists using one or more previously established graphic pipelines defined by the established cached pipeline object; and

upon a negative determination that the cached pipeline object exists creating one or more new graphic pipelines; wherein

either the one or more previously established graphic pipelines or the one or more new graphic pipelines are associated with a host OS of the computer system; and

the emulation key comprises:

a first portion comprising information established in dependence upon a pipeline state object (PSO) of the guest OS to generate a PSO of the host OS; and

a second portion comprising information required by the PSO of the host OS not contained within the PSO of the guest OS.

10. The method according to claim 9 , wherein

the emulation key comprises a third portion comprising a vertex stream stride established from a vertex buffer by a process comprising:

reading the vertex buffer with a native declaration of the host OS using standard buffers;

establishing the vertex stream stride from the standard buffers.

11. A method comprising:

generating upon a computer system an emulation key relating to a graphic pipeline for an application executing within a virtual machine associated with a guest operating system (OS) upon the computer system;

establishing whether a cached pipeline object exists within a memory cache accessible to the computer system in dependence upon the emulation key;

generating a pipeline key from creation of a pipeline state object (PSO) of the guest OS;

upon a positive determination that the cached pipeline object exists using one or more previously established graphic pipelines defined by the established cached pipeline object; and

upon a negative determination that the cached pipeline object exists creating one or more new graphic pipelines; wherein

either the one or more previously established graphic pipelines or the one or more new graphic pipelines are associated with a host OS of the computer system;

for a first pipeline emulation the emulation key is established based upon predictions of elements required by the one or more previously established graphic pipelines of the host OS which are not present within the PSO of the guest OS; and

for a second pipeline emulation the emulation key is established based upon calculations for the elements required by the one or more previously established graphic pipelines of the host OS which are not present within the PSO of the guest OS.

12. The method according to claim 11 , wherein

the guest OS is Microsoft® Windows;

the host OS is Apple® OS;

the PSO is a Direct3D™ 12 PSO; and

either:

the pipeline key and emulation key are employed by the one or more previously established graphic pipelines of the host OS when emulating the Direct3D™ 12 PSO; or

the pipeline key only is employed by the one or more previously established graphic pipelines of the host OS when emulating a Direct3D™ 11 PSO.

13. The method according to claim 11 , wherein

the guest OS is Microsoft™ Windows or Linux™;

the host OS is Apple™ OS;

the PSO is a Vulkan™ PSO; and

either:

the pipeline key and emulation key are employed by the one or more previously established graphic pipelines of the host OS when emulating the Direct3D™ 12 PSO; or

the pipeline key only is employed by the one or more previously established graphic pipelines of the host OS when emulating a Direct3D™ 11 PSO.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2021
From: NIKITENKO, EVGENY
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 055732/0781 →
Cited By (3)
US 12,248,560 US 12,339,979 US 12,468,520