US2020410629A1PendingUtilityA1

Systems and methods for using an opengl api with a vulkan graphics driver

Assignee: CHANNEL ONE HOLDINGS INCPriority: Oct 21, 2015Filed: Jul 9, 2020Published: Dec 31, 2020
Est. expiryOct 21, 2035(~9.3 yrs left)· nominal 20-yr term from priority
G06T 11/10G06T 17/00G06T 15/80G06T 2210/32G06T 15/04G06T 15/005G06T 1/20G06T 11/001
63
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A system, method, and computer-readable medium are provided for translating OpenGL API calls to operations in a Vulkan graphics driver using an OpenGL-on-Vulkan driver architecture. An OpenGL-on-Vulkan driver receives an OpenGL context and render function, translates an OpenGL format to a Vulkan format, creates a Vulkan object and sets a Vulkan state, and generates a Vulkan command buffer corresponding to the OpenGL render function.

Claims

exact text as granted — not AI-modified
1 - 12 . (canceled) 
     
     
         13 . A method for using an OpenGL API with a Vulkan graphics driver for a Graphics Processing Unit (GPU) the method executed, by at least one processor, within a driver at run-time in response to receiving an OpenGL API call from an application, the method comprising:
 receiving, from an OpenGL render module:
 an OpenGL context having an associated context state; and 
 a plurality of OpenGL objects bound to the OpenGL context, each of the plurality of OpenGL objects having respective associated object states; 
   receiving, from the OpenGL render module, an OpenGL render command;   an OpenGL driver component compiling a GLSL shader to a SPIR-V shader based on the OpenGL render command and the OpenGL context, and providing the SPIR-V shader to a translator component:   the translator component marshalling the plurality of OpenGL objects and the respective associated object states into a Vulkan operation, wherein the marshalling comprises:
 translating respective OpenGL formats of each of the OpenGL objects to respective Vulkan formats; 
 creating a plurality of Vulkan objects corresponding to the OpenGL objects and based on the respective Vulkan formats; 
 setting a plurality of Vulkan object states based on the plurality of associated object states for the plurality of OpenGL objects bound to the OpenGL context, and further based on the associated context state for the OpenGL context; and 
 providing the SPIR-V shader to a Vulkan driver component; 
   the Vulkan driver component converting the SPIR-V shader to generate a plurality of Vulkan commands in a Vulkan command buffer, the plurality of Vulkan commands corresponding to the OpenGL render command and based on the plurality of Vulkan objects and Vulkan object states; and   in response to generating the plurality of Vulkan commands, generating a specific shader in an instruction set architecture of the GPU.   
     
     
         14 . The method of  claim 13 , wherein at least one of the OpenGL objects is a texture object. 
     
     
         15 . The method of  claim 14 , wherein the respective associated object state of the texture object comprises a texture dimension and a texture format. 
     
     
         16 . The method of  claim 15 , wherein the OpenGL render command is a command to load a two-dimensional texture image. 
     
     
         17 . The method of  claim 13 , wherein the respective OpenGL format is an OpenGL image format, and the respective Vulkan format is a Vulkan image format. 
     
     
         18 . The method of  claim 13 , wherein at least one of the OpenGL formats corresponds to GL_RGBA and the respective Vulcan format corresponds to VK-FORMAT R8G8B8A8 UINT. 
     
     
         19 . The method of  claim 13 , wherein at least one of the OpenGL objects is of a type GL_TEXTURE_1D and the respective Vulkan object is of a type VK IMAGE TYPE 1D. 
     
     
         20 . The method of of  claim 13 , wherein at least one of the OpenGL objects is of a type GL_TEXTURE_2D and the respective Vulkan object is of a type VK IMAGE TYPE 2D. 
     
     
         21 . The method of of  claim 13 , wherein at least one of the OpenGL objects is of a type GL_TEXTURE_3D and the respective Vulkan object is of a type VK IMAGE TYPE 3D. 
     
     
         22 . The method of of  claim 13 , wherein at least one of the OpenGL formats corresponds to GL_TRIANGLES and the respective Vulkan format corresponds to VK PRIMITIVE TOPOLOGY TRIANGLE LIST. 
     
     
         23 . The method of of  claim 13 , further comprising:
 receiving one of an EGL, WGL, and GLX function call as an interface between the OpenGL context and a windowing system; and   translating the interface to a Window System Integration, WSI, function call.   
     
     
         24 . The method of of  claim 13 , wherein the OpenGL render module is hardware-agnostic. 
     
     
         25 . A computing device configured to use an OpenGL API with a Vulkan graphics driver, the computing device comprising:
 at least one processor; and   a memory, the memory comprising executable computer instruction code, which when executed by the at least one processor, causes the at least one processor to perform the method of claim  1 .   
     
     
         26 . A non-transitory, computer-readable medium, comprising an OpenGL render module having computer instruction code that is executable by at least one processor, the computer instruction code when executed by the at least one processor causing the at least one processor to perform the method of claim  1 . 
     
     
         27 . The non-transitory, computer-readable medium of  claim 26 , further comprising the Vulkan render module having computer instruction code that is executable by the at least one processor which, when executed by the at least processor causes the at least one processor to:
 receive the Vulkan command buffer; and   submit the command buffer to a carddata module.   
     
     
         28 . The non-transitory, computer-readable medium of  claim 27 , further comprising the carddata module having computer instruction code that is executable by the at least one processor which, when executed by the at least processor causes the at least one processor to:
 receive the Vulkan command buffer from the Vulkan render module; and   perform operations on the GPU according to the Vulkan command buffer.

Join the waitlist — get patent alerts

Track US2020410629A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.