mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[dxvk] Support for SDL2 WSI
This commit is contained in:
parent
5787d9ee04
commit
97350d6c35
@ -105,8 +105,6 @@ dxvk_src = [
|
|||||||
'dxvk_unbound.cpp',
|
'dxvk_unbound.cpp',
|
||||||
'dxvk_util.cpp',
|
'dxvk_util.cpp',
|
||||||
|
|
||||||
'platform/dxvk_win32_exts.cpp',
|
|
||||||
|
|
||||||
'hud/dxvk_hud.cpp',
|
'hud/dxvk_hud.cpp',
|
||||||
'hud/dxvk_hud_font.cpp',
|
'hud/dxvk_hud_font.cpp',
|
||||||
'hud/dxvk_hud_item.cpp',
|
'hud/dxvk_hud_item.cpp',
|
||||||
@ -120,6 +118,16 @@ if platform == 'windows'
|
|||||||
]
|
]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if dxvk_wsi == 'win32'
|
||||||
|
dxvk_src += [
|
||||||
|
'platform/dxvk_win32_exts.cpp'
|
||||||
|
]
|
||||||
|
elif dxvk_wsi == 'sdl2'
|
||||||
|
dxvk_src += [
|
||||||
|
'platform/dxvk_sdl2_exts.cpp'
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
thread_dep = dependency('threads')
|
thread_dep = dependency('threads')
|
||||||
|
|
||||||
dxvk_lib = static_library('dxvk', dxvk_src, glsl_generator.process(dxvk_shaders), dxvk_version,
|
dxvk_lib = static_library('dxvk', dxvk_src, glsl_generator.process(dxvk_shaders), dxvk_version,
|
||||||
|
60
src/dxvk/platform/dxvk_sdl2_exts.cpp
Normal file
60
src/dxvk/platform/dxvk_sdl2_exts.cpp
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#include "../dxvk_platform_exts.h"
|
||||||
|
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#include <SDL2/SDL_vulkan.h>
|
||||||
|
|
||||||
|
namespace dxvk {
|
||||||
|
|
||||||
|
DxvkPlatformExts DxvkPlatformExts::s_instance;
|
||||||
|
|
||||||
|
std::string_view DxvkPlatformExts::getName() {
|
||||||
|
return "SDL2 WSI";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DxvkNameSet DxvkPlatformExts::getInstanceExtensions() {
|
||||||
|
SDL_Window* window = SDL_CreateWindow(
|
||||||
|
"Dummy Window",
|
||||||
|
SDL_WINDOWPOS_UNDEFINED,
|
||||||
|
SDL_WINDOWPOS_UNDEFINED,
|
||||||
|
1, 1,
|
||||||
|
SDL_WINDOW_HIDDEN | SDL_WINDOW_VULKAN);
|
||||||
|
|
||||||
|
if (window == nullptr)
|
||||||
|
throw DxvkError(str::format("SDL2 WSI: Failed to create dummy window. ", SDL_GetError()));
|
||||||
|
|
||||||
|
uint32_t extensionCount = 0;
|
||||||
|
if (!SDL_Vulkan_GetInstanceExtensions(window, &extensionCount, nullptr))
|
||||||
|
throw DxvkError(str::format("SDL2 WSI: Failed to get instance extension count. ", SDL_GetError()));
|
||||||
|
|
||||||
|
auto extensionNames = std::vector<const char *>(extensionCount);
|
||||||
|
if (!SDL_Vulkan_GetInstanceExtensions(window, &extensionCount, extensionNames.data()))
|
||||||
|
throw DxvkError(str::format("SDL2 WSI: Failed to get instance extensions. ", SDL_GetError()));
|
||||||
|
|
||||||
|
DxvkNameSet names;
|
||||||
|
for (const char* name : extensionNames)
|
||||||
|
names.add(name);
|
||||||
|
|
||||||
|
SDL_DestroyWindow(window);
|
||||||
|
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DxvkNameSet DxvkPlatformExts::getDeviceExtensions(
|
||||||
|
uint32_t adapterId) {
|
||||||
|
return DxvkNameSet();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DxvkPlatformExts::initInstanceExtensions() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DxvkPlatformExts::initDeviceExtensions(
|
||||||
|
const DxvkInstance* instance) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user