mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-13 19:29:14 +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_util.cpp',
|
||||
|
||||
'platform/dxvk_win32_exts.cpp',
|
||||
|
||||
'hud/dxvk_hud.cpp',
|
||||
'hud/dxvk_hud_font.cpp',
|
||||
'hud/dxvk_hud_item.cpp',
|
||||
@ -120,6 +118,16 @@ if platform == 'windows'
|
||||
]
|
||||
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')
|
||||
|
||||
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