This is the reference documentation for Vulkan related functions and types. For more task-oriented information, see the Vulkan guide.
Typedefs | |
typedef void(* | GLFWvkproc) (void) |
Vulkan API function pointer type. | |
Functions | |
int | glfwVulkanSupported (void) |
Returns whether the Vulkan loader and an ICD have been found. | |
const char ** | glfwGetRequiredInstanceExtensions (uint32_t *count) |
Returns the Vulkan instance extensions required by GLFW. | |
GLFWvkproc | glfwGetInstanceProcAddress (VkInstance instance, const char *procname) |
Returns the address of the specified Vulkan instance function. | |
int | glfwGetPhysicalDevicePresentationSupport (VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily) |
Returns whether the specified queue family can present images. | |
VkResult | glfwCreateWindowSurface (VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface) |
Creates a Vulkan surface for the specified window. | |
typedef void(* GLFWvkproc) (void) |
Generic function pointer used for returning Vulkan API function pointers without forcing a cast from a regular pointer.
int glfwVulkanSupported | ( | void | ) |
This function returns whether the Vulkan loader and any minimally functional ICD have been found.
The availability of a Vulkan loader and even an ICD does not by itself guarantee that surface creation or even instance creation is possible. Call glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan surface creation are available and glfwGetPhysicalDevicePresentationSupport to check whether a queue family of a physical device supports image presentation.
GLFW_TRUE
if Vulkan is minimally available, or GLFW_FALSE
otherwise.const char ** glfwGetRequiredInstanceExtensions | ( | uint32_t * | count | ) |
This function returns an array of names of Vulkan instance extensions required by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the list will always contain VK_KHR_surface
, so if you don't require any additional extensions you can pass this list directly to the VkInstanceCreateInfo
struct.
If Vulkan is not available on the machine, this function returns NULL
and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether Vulkan is at least minimally available.
If Vulkan is available but no set of extensions allowing window surface creation was found, this function returns NULL
. You may still use Vulkan for off-screen rendering and compute work.
[out] | count | Where to store the number of extensions in the returned array. This is set to zero if an error occurred. |
NULL
if an error occurred.VkInstanceCreateInfo
struct.GLFWvkproc glfwGetInstanceProcAddress | ( | VkInstance | instance, |
const char * | procname | ||
) |
This function returns the address of the specified Vulkan core or extension function for the specified instance. If instance is set to NULL
it can return any function exported from the Vulkan loader, including at least the following functions:
vkEnumerateInstanceExtensionProperties
vkEnumerateInstanceLayerProperties
vkCreateInstance
vkGetInstanceProcAddr
If Vulkan is not available on the machine, this function returns NULL
and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether Vulkan is at least minimally available.
This function is equivalent to calling vkGetInstanceProcAddr
with a platform-specific query of the Vulkan loader as a fallback.
[in] | instance | The Vulkan instance to query, or NULL to retrieve functions related to instance creation. |
[in] | procname | The ASCII encoded name of the function. |
NULL
if an error occurred.int glfwGetPhysicalDevicePresentationSupport | ( | VkInstance | instance, |
VkPhysicalDevice | device, | ||
uint32_t | queuefamily | ||
) |
This function returns whether the specified queue family of the specified physical device supports presentation to the platform GLFW was built for.
If Vulkan or the required window surface creation instance extensions are not available on the machine, or if the specified instance was not created with the required extensions, this function returns GLFW_FALSE
and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether Vulkan is at least minimally available and glfwGetRequiredInstanceExtensions to check what instance extensions are required.
[in] | instance | The instance that the physical device belongs to. |
[in] | device | The physical device that the queue family belongs to. |
[in] | queuefamily | The index of the queue family to query. |
GLFW_TRUE
if the queue family supports presentation, or GLFW_FALSE
otherwise.GLFW_TRUE
, as the VK_MVK_macos_surface
and VK_EXT_metal_surface
extensions do not provide a vkGetPhysicalDevice*PresentationSupport
type function.VkResult glfwCreateWindowSurface | ( | VkInstance | instance, |
GLFWwindow * | window, | ||
const VkAllocationCallbacks * | allocator, | ||
VkSurfaceKHR * | surface | ||
) |
This function creates a Vulkan surface for the specified window.
If the Vulkan loader or at least one minimally functional ICD were not found, this function returns VK_ERROR_INITIALIZATION_FAILED
and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether Vulkan is at least minimally available.
If the required window surface creation instance extensions are not available or if the specified instance was not created with these extensions enabled, this function returns VK_ERROR_EXTENSION_NOT_PRESENT
and generates a GLFW_API_UNAVAILABLE error. Call glfwGetRequiredInstanceExtensions to check what instance extensions are required.
The window surface cannot be shared with another API so the window must have been created with the client api hint set to GLFW_NO_API
otherwise it generates a GLFW_INVALID_VALUE error and returns VK_ERROR_NATIVE_WINDOW_IN_USE_KHR
.
The window surface must be destroyed before the specified Vulkan instance. It is the responsibility of the caller to destroy the window surface. GLFW does not destroy it for you. Call vkDestroySurfaceKHR
to destroy the surface.
[in] | instance | The Vulkan instance to create the surface in. |
[in] | window | The window to create the surface for. |
[in] | allocator | The allocator to use, or NULL to use the default allocator. |
[out] | surface | Where to store the handle of the surface. This is set to VK_NULL_HANDLE if an error occurred. |
VK_SUCCESS
if successful, or a Vulkan error code if an error occurred.VK_EXT_metal_surface
extension, with the VK_MVK_macos_surface
extension as a fallback. The name of the selected extension, if any, is included in the array returned by glfwGetRequiredInstanceExtensions.CAMetalLayer
instance for the window content view, which is required for MoltenVK to function.VK_KHR_xcb_surface
extension, with the VK_KHR_xlib_surface
extension as a fallback. You can make VK_KHR_xlib_surface
the preferred extension by setting the GLFW_X11_XCB_VULKAN_SURFACE init hint. The name of the selected extension, if any, is included in the array returned by glfwGetRequiredInstanceExtensions.Last update on Fri Feb 23 2024 for GLFW 3.4.0