vulkan: SDL_Vulkan_GetInstanceExtensions should accept a NULL window. Fixes Bugzilla #4235.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
diff --git a/include/SDL_vulkan.h b/include/SDL_vulkan.h
index f04c21a..51373b1 100644
--- a/include/SDL_vulkan.h
+++ b/include/SDL_vulkan.h
@@ -135,7 +135,7 @@ extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
* \brief Get the names of the Vulkan instance extensions needed to create
* a surface with \c SDL_Vulkan_CreateSurface().
*
- * \param [in] window Window for which the required Vulkan instance
+ * \param [in] \c NULL or window Window for which the required Vulkan instance
* extensions should be retrieved
* \param [in,out] count pointer to an \c unsigned related to the number of
* required Vulkan instance extensions
@@ -153,6 +153,10 @@ extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
* is smaller than the number of required extensions, \c SDL_FALSE will be
* returned instead of \c SDL_TRUE, to indicate that not all the required
* extensions were returned.
+ *
+ * \note If \c window is not NULL, it will be checked against its creation
+ * flags to ensure that the Vulkan flag is present. This parameter
+ * will be removed in a future major release.
*
* \note The returned list of extensions will contain \c VK_KHR_surface
* and zero or more platform specific extensions
@@ -160,12 +164,13 @@ extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
* \note The extension names queried here must be enabled when calling
* VkCreateInstance, otherwise surface creation will fail.
*
- * \note \c window should have been created with the \c SDL_WINDOW_VULKAN flag.
+ * \note \c window should have been created with the \c SDL_WINDOW_VULKAN flag
+ * or be \c NULL
*
* \code
* unsigned int count;
* // get count of required extensions
- * if(!SDL_Vulkan_GetInstanceExtensions(window, &count, NULL))
+ * if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, NULL))
* handle_error();
*
* static const char *const additionalExtensions[] =
@@ -179,7 +184,7 @@ extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
* handle_error();
*
* // get names of required extensions
- * if(!SDL_Vulkan_GetInstanceExtensions(window, &count, names))
+ * if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, names))
* handle_error();
*
* // copy additional extensions after required extensions
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index ef661bf..801a55b 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -4103,11 +4103,14 @@ void SDL_Vulkan_UnloadLibrary(void)
SDL_bool SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, unsigned *count, const char **names)
{
- CHECK_WINDOW_MAGIC(window, SDL_FALSE);
+ if (window) {
+ CHECK_WINDOW_MAGIC(window, SDL_FALSE);
- if (!(window->flags & SDL_WINDOW_VULKAN)) {
- SDL_SetError(NOT_A_VULKAN_WINDOW);
- return SDL_FALSE;
+ if (!(window->flags & SDL_WINDOW_VULKAN))
+ {
+ SDL_SetError(NOT_A_VULKAN_WINDOW);
+ return SDL_FALSE;
+ }
}
if (!count) {
diff --git a/test/testvulkan.c b/test/testvulkan.c
index 73a2185..cd682af 100644
--- a/test/testvulkan.c
+++ b/test/testvulkan.c
@@ -255,7 +255,7 @@ static void createInstance(void)
appInfo.apiVersion = VK_API_VERSION_1_0;
instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
instanceCreateInfo.pApplicationInfo = &appInfo;
- if(!SDL_Vulkan_GetInstanceExtensions(state->windows[0], &extensionCount, NULL))
+ if(!SDL_Vulkan_GetInstanceExtensions(NULL, &extensionCount, NULL))
{
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"SDL_Vulkan_GetInstanceExtensions(): %s\n",
@@ -268,7 +268,7 @@ static void createInstance(void)
SDL_OutOfMemory();
quit(2);
}
- if(!SDL_Vulkan_GetInstanceExtensions(state->windows[0], &extensionCount, extensions))
+ if(!SDL_Vulkan_GetInstanceExtensions(NULL, &extensionCount, extensions))
{
SDL_free((void*)extensions);
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,