diff options
Diffstat (limited to 'include/yasl/vulkan.h')
| -rw-r--r-- | include/yasl/vulkan.h | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/include/yasl/vulkan.h b/include/yasl/vulkan.h index 1a1c5be..079c866 100644 --- a/include/yasl/vulkan.h +++ b/include/yasl/vulkan.h @@ -1,4 +1,4 @@ -/** @file Vulkan WSI; YASL tracks the WSI handle, the application owns rendering. */ +/** @file Vulkan window surfaces; the application owns devices and swapchains. */ #ifndef YASL_VULKAN_H #define YASL_VULKAN_H #include "yasl/yasl.h" @@ -6,26 +6,21 @@ #ifdef __cplusplus extern "C" { #endif -YASL_API int yasl_vulkan_init(PFN_vkGetInstanceProcAddr loader); +/** Instance extensions and flags YASL needs, borrowed until shutdown. Merge + * them into your VkInstanceCreateInfo. */ struct yasl_vulkan_requirements { const char *const *extensions; uint32_t extension_count; VkInstanceCreateFlags flags; }; -/** Initialize the loader first. Borrowed extensions live through shutdown; - * merge them with application extensions before creating the instance. - * Clears out on failure. */ -YASL_API int yasl_vulkan_get_requirements(const yasl_surface *surface, - struct yasl_vulkan_requirements *out); -/** WSI creation retains VkResult semantics. Uses the injected loader. - * One live VkSurfaceKHR per window; destroy it with yasl_vulkan_destroy_surface - * before destroying the YASL surface. The application owns swapchains/devices. */ +/** Records the loader and reports the requirements, initializing YASL if needed. + * Call before creating the instance. EBUSY while a Vulkan surface exists. */ +YASL_API int yasl_vulkan_init(PFN_vkGetInstanceProcAddr loader, struct yasl_vulkan_requirements *out); +/** One surface per NATIVE window; returns the VkResult, with errno set on failure. */ YASL_API VkResult yasl_vulkan_create_surface(yasl_surface *surface, VkInstance instance, const VkAllocationCallbacks *allocator, VkSurfaceKHR *out); -/** Destroy the WSI surface (including while disconnected), releasing the window - * for another renderer. Destroy dependent swapchains first. Uses the instance - * and allocation callbacks recorded at creation. No live WSI surface is a no-op. */ +/** Destroy swapchains first. Also works after DISPLAY_LOST; no surface is a no-op. */ YASL_API int yasl_vulkan_destroy_surface(yasl_surface *surface); #ifdef __cplusplus } |
