video: Add a hint to allow Vulkan surfaces on foreign windows

This commit is contained in:
Ethan Lee 2022-02-08 22:15:11 -05:00 committed by Sam Lantinga
parent ecaa22cbe6
commit 0bf8ccfb60
2 changed files with 21 additions and 0 deletions

View File

@ -1453,6 +1453,17 @@ extern "C" {
*/ */
#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" #define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
/**
* \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan.
*
* This variable can be set to the following values:
* "0" - Don't add any graphics flags to the SDL_WindowFlags
* "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags
*
* By default SDL will not make the foreign window compatible with Vulkan.
*/
#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN"
/** /**
* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries * \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
* *

View File

@ -1703,6 +1703,16 @@ SDL_CreateWindowFrom(const void *data)
} }
_this->windows = window; _this->windows = window;
#if SDL_VIDEO_VULKAN
if (SDL_GetHintBoolean(SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN, SDL_FALSE)) {
window->flags |= SDL_WINDOW_VULKAN;
if (SDL_Vulkan_LoadLibrary(NULL) < 0) {
SDL_DestroyWindow(window);
return NULL;
}
}
#endif
if (_this->CreateSDLWindowFrom(_this, window, data) < 0) { if (_this->CreateSDLWindowFrom(_this, window, data) < 0) {
SDL_DestroyWindow(window); SDL_DestroyWindow(window);
return NULL; return NULL;