Get the Vulkan instance extensions needed for vkCreateInstance.
Defined in <SDL3/SDL_vulkan.h>
char const * const * SDL_Vulkan_GetInstanceExtensions(Uint32 *count);
Uint32 * | count | a pointer filled in with the number of extensions returned. |
(char const * const *) Returns an array of extension name strings on success, NULL on failure; call SDL_GetError() for more information.
This should be called after either calling SDL_Vulkan_LoadLibrary() or creating an SDL_Window with the SDL_WINDOW_VULKAN
flag.
On return, the variable pointed to by count
will be set to the number of elements returned, suitable for using with VkInstanceCreateInfo::enabledExtensionCount, and the returned array can be used with VkInstanceCreateInfo::ppEnabledExtensionNames, for calling Vulkan's vkCreateInstance API.
You should not free the returned array; it is owned by SDL.
This function is available since SDL 3.1.3.
extern void handle_error(void);
#ifndef VK_EXT_DEBUG_REPORT_EXTENSION_NAME
#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
#endif
Uint32 count_instance_extensions;const char * const *instance_extensions = SDL_Vulkan_GetInstanceExtensions(&count_instance_extensions);
if (instance_extensions == NULL) { handle_error(); }
int count_extensions = count_instance_extensions + 1;
const char **extensions = SDL_malloc(count_extensions * sizeof(const char *));
0] = VK_EXT_DEBUG_REPORT_EXTENSION_NAME;
extensions[1], instance_extensions, count_instance_extensions * sizeof(const char*));
SDL_memcpy(&extensions[
// Now we can make the Vulkan instance
VkInstanceCreateInfo create_info = {};
create_info.enabledExtensionCount = count_extensions;
create_info.ppEnabledExtensionNames = extensions;
VkInstance instance;
VkResult result = vkCreateInstance(&create_info, NULL, &instance); SDL_free(extensions);