US9996892B2ActiveUtilityA1

Apparatus and method for efficient graphics processing in a virtual execution environment

66
Assignee: INTEL CORPPriority: Nov 21, 2014Filed: Nov 21, 2014Granted: Jun 12, 2018
Est. expiryNov 21, 2034(~8.4 yrs left)· nominal 20-yr term from priority
H04N 21/4431G06T 15/005G06T 1/20G06F 9/54G06F 9/46G06F 9/45545G06F 9/45533G06F 9/455G06F 9/30145G06F 9/45558G06F 9/541
66
PatentIndex Score
1
Cited by
19
References
17
Claims

Abstract

An apparatus and method are described for improving the efficiency of graphics operations in a virtual execution environment. For example, one embodiment of a system comprises: a classification module to detect graphics application programming interface (API) calls in a guest execution environment and responsively classify the graphics API calls as originating from an application or a system component; the classification module to associate information with each of the graphics API calls to indicate whether each of the graphics API calls originated from the application or from the system component; and an enhanced graphics API translator (EGAT) to translate the graphics API calls to a format executable in a host execution environment, the EGAT to identify each of the API calls as originating from the application or the system component using the information associated with the graphics API calls by the classification module, the EGAT comprising: a first translation sequence to translate the graphics API calls to a first set of translated graphics API calls if the graphics API calls originated from the application; and a second translation sequence to translate the graphics API calls to a second set of translated graphics API calls if the graphics API calls originated from the system component, the first set of translated graphics API calls being different from the second set of translated graphics API calls.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A system comprising:
 a processor and a non-transitory machine-readable storage medium that contain instructions that cause the system to: 
 detect graphics application programming interface (API) calls in a guest execution environment and responsively classify the graphics API calls as originating from an application of a system component, 
 associate information with each of the graphics API calls to indicate whether each of the graphics API calls originated from the application or from the system component, 
 translate the graphics API calls to a format executable in a host execution environment, and 
 identify each of the API calls as originating from the application or the system component using the information associated with the graphics API calls by the system, wherein a first translation sequence is to translate the graphics API calls to a first set of translated graphics API calls if the graphics API calls originated from the application, and wherein a second translation sequence is to translate the graphics API calls to a second set of translated graphics API calls if the graphics API calls originated from the system component, the first set of translated graphics API calls being different from the second set of translated graphics API calls. 
 
     
     
       2. The system as in  claim 1  wherein the first and second sets of translated graphics API calls comprise native graphics API calls directly executable in the host execution environment. 
     
     
       3. The system as in  claim 1  further comprising:
 a command buffer to store the graphics API calls prior to translation by the first translation sequence or the second translation sequence, wherein the system is to attach the information indicating that the API calls originated from the application or the system component to the graphics API calls in the command buffer. 
 
     
     
       4. The system as in  claim 1  wherein the system is further to analyze the calling environment including the calling stack or process name to determine whether the graphic API call has originated from the application or from the system component. 
     
     
       5. The system as in  claim 1  wherein the system is further to render a final composed surface using composed surfaces from the multiple applications. 
     
     
       6. The system as in  claim 5  wherein a surface composer composes the surfaces. 
     
     
       7. The system as in  claim 1  wherein the guest execution environment comprises a guest operating system and the host execution environment comprises a host operating system exposing an application programming interface (API) to support execution of the guest operating system. 
     
     
       8. The system as in  claim 1  wherein the system is further to:
 translate a guest surface embodied in the graphics API calls to a host texture embodied in the first and second sets of translated graphics API calls. 
 
     
     
       9. A system comprising:
 a processor and a non-transitory machine-readable storage medium that contain instructions that cause the system to:
 determine a first group of graphics application programming interface (API) calls which may be speculatively executed together, 
 responsively execute all of the graphics API calls in the first group to generate a first group of results in response to detecting a first one of the graphics API calls in the first group being invoked, 
 cache the first group of results in memory, 
 provide a result from the cached group of results in response to a second one of the graphics API calls in the first group being invoked, 
 
 store the graphics API calls using a command buffer, and 
 determine whether the graphics API calls originated from an application or a system component, wherein a first translation sequence is to translate the graphics API calls to a first set of translated graphics API calls if the graphics API calls originated from the application; and wherein a second translation sequence is to translate the graphics API calls to a second set of translated graphics API calls if the graphics API calls originated from the system component, the first set of translated graphics API calls being different from the second set of translated graphics API calls. 
 
     
     
       10. The system as in  claim 9 , wherein the system is further to:
 attach information to the graphics API calls indicating whether the API calls originated from the application or the system component, the system to store the graphics API calls and the attached information in the command buffer. 
 
     
     
       11. The system as in  claim 9  wherein the determination of the first group of API calls and the execution of the first group of API calls are to be performed within a guest execution environment and wherein the determination of whether the graphics API calls originated from an application or a system component is to be performed within a host execution environment. 
     
     
       12. The system as in  claim 11  wherein the host execution environment is to expose a virtual machine on which the guest execution environment is to be executed. 
     
     
       13. The system as in  claim 12  wherein the virtual machine comprises an application programming interface (API) exposed by the host execution environment. 
     
     
       14. The system as in  claim 11  wherein the system is further to:
 translate a guest surface embodied in the graphics API calls to a host texture embodied in the first and second sets of translated graphics API calls. 
 
     
     
       15. The system as in  claim 9  wherein the first translation sequence is to translate the graphics API calls using a first set of translation techniques and the second translation sequence is to translate the graphics API calls using a second set of translation techniques different from the first set of translation techniques. 
     
     
       16. A system comprising:
 a processor and a non-transitory machine-readable storage medium that contain instructions that cause the system to: 
 determine a first group of graphics application programming interface (API) calls which may be speculatively executed together; 
 responsively execute all of the graphics API calls in the first group to generate a first group of results in response to detecting a first one of the graphics API calls in the first group being invoked, 
 cache the first group of results in memory; 
 to provide a result from the cached group of results in response to a second one of the graphics API calls in the first group being invoked; 
 store the graphics API calls using a command buffer, 
 translate the graphics API calls to a set of translated graphics API calls, wherein at least some of the graphics API calls are to be used to build a 3-dimensional (3D) model and render to a surface; and 
 translate the surface rendered by the graphics API calls to a first texture embodied in the translated graphics API calls. 
 
     
     
       17. The system as in  claim 16  wherein when the graphics API calls are directed to rendering the surface on a display, the system is to use the texture to render to the display.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.