This commit is contained in:
Ellie Hermaszewska 2024-04-30 06:57:24 +08:00 committed by GitHub
commit d0a21530ad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 236 additions and 0 deletions

View File

@ -6,6 +6,8 @@
#include "wsi/native_sdl2.h"
#elif DXVK_WSI_GLFW
#include "wsi/native_glfw.h"
#elif DXVK_WSI_NONE
//empty
#else
#error Unknown wsi!
#endif

View File

@ -136,6 +136,8 @@ else
elif dxvk_wsi == 'glfw'
lib_glfw = cpp.find_library('glfw')
compiler_args += ['-DDXVK_WSI_GLFW']
elif dxvk_wsi == 'none'
compiler_args += ['-DDXVK_WSI_NONE']
endif
dxvk_name_prefix = 'libdxvk_'

View File

@ -129,6 +129,10 @@ elif dxvk_wsi == 'glfw'
dxvk_src += [
'platform/dxvk_glfw_exts.cpp'
]
elif dxvk_wsi == 'none'
dxvk_src += [
'platform/dxvk_none_exts.cpp'
]
endif
dxvk_extra_deps = [ dependency('threads') ]

View File

@ -0,0 +1,33 @@
#include "../dxvk_platform_exts.h"
namespace dxvk {
DxvkPlatformExts DxvkPlatformExts::s_instance;
std::string_view DxvkPlatformExts::getName() {
return "No WSI";
}
DxvkNameSet DxvkPlatformExts::getInstanceExtensions() {
return {};
}
DxvkNameSet DxvkPlatformExts::getDeviceExtensions(
uint32_t adapterId) {
return {};
}
void DxvkPlatformExts::initInstanceExtensions() {
}
void DxvkPlatformExts::initDeviceExtensions(
const DxvkInstance* instance) {
}
}

View File

@ -17,6 +17,12 @@ wsi_glfw_src = [
'glfw/wsi_window_glfw.cpp',
]
wsi_none_src = [
'none/wsi_monitor_none.cpp',
'none/wsi_window_none.cpp',
'none/wsi_edid_none.cpp',
]
if dxvk_wsi == 'win32'
wsi_src = wsi_common_src + wsi_win32_src
wsi_deps = [ dep_displayinfo ]
@ -26,6 +32,9 @@ elif dxvk_wsi == 'sdl2'
elif dxvk_wsi == 'glfw'
wsi_src = wsi_common_src + wsi_glfw_src
wsi_deps = [ dep_displayinfo, lib_glfw ]
elif dxvk_wsi == 'none'
wsi_src = wsi_none_src
wsi_deps = []
else
error('Unknown wsi')
endif

View File

@ -0,0 +1,10 @@
#include "wsi_edid.h"
namespace dxvk::wsi {
std::optional<WsiDisplayMetadata> parseColorimetryInfo(
const WsiEdidData& edidData) {
return std::nullopt;
}
}

View File

@ -0,0 +1,66 @@
#include "../wsi_monitor.h"
#include "wsi/native_wsi.h"
#include "wsi_platform_none.h"
#include "../../util/util_string.h"
#include "../../util/log/log.h"
namespace dxvk::wsi {
HMONITOR getDefaultMonitor() {
return nullptr;
}
HMONITOR enumMonitors(uint32_t index) {
return nullptr;
}
HMONITOR enumMonitors(const LUID *adapterLUID[], uint32_t numLUIDs, uint32_t index) {
return enumMonitors(index);
}
bool getDisplayName(
HMONITOR hMonitor,
WCHAR (&Name)[32]) {
return false;
}
bool getDesktopCoordinates(
HMONITOR hMonitor,
RECT* pRect) {
return false;
}
bool getDisplayMode(
HMONITOR hMonitor,
uint32_t ModeNumber,
WsiMode* pMode) {
return false;
}
bool getCurrentDisplayMode(
HMONITOR hMonitor,
WsiMode* pMode) {
return false;
}
bool getDesktopDisplayMode(
HMONITOR hMonitor,
WsiMode* pMode) {
return false;
}
std::vector<uint8_t> getMonitorEdid(HMONITOR hMonitor) {
Logger::err("getMonitorEdid not implemented on this platform.");
return {};
}
}

View File

@ -0,0 +1,17 @@
#pragma once
#include "../wsi_monitor.h"
namespace dxvk::wsi {
/**
* \brief Impl-dependent state
*/
struct DxvkWindowState {
};
inline bool isDisplayValid(int32_t displayId) {
return false;
}
}

View File

@ -0,0 +1,91 @@
#include "../wsi_window.h"
#include "native/wsi/native_wsi.h"
#include "wsi_platform_none.h"
#include "../../util/util_string.h"
#include "../../util/log/log.h"
namespace dxvk::wsi {
void getWindowSize(
HWND hWindow,
uint32_t* pWidth,
uint32_t* pHeight) {
}
void resizeWindow(
HWND hWindow,
DxvkWindowState* pState,
uint32_t Width,
uint32_t Height) {
}
bool setWindowMode(
HMONITOR hMonitor,
HWND hWindow,
const WsiMode& pMode) {
return false;
}
bool enterFullscreenMode(
HMONITOR hMonitor,
HWND hWindow,
DxvkWindowState* pState,
bool ModeSwitch) {
return false;
}
bool leaveFullscreenMode(
HWND hWindow,
DxvkWindowState* pState,
bool restoreCoordinates) {
return false;
}
bool restoreDisplayMode() {
return false;
}
HMONITOR getWindowMonitor(HWND hWindow) {
return nullptr;
}
bool isWindow(HWND hWindow) {
return false;
}
void updateFullscreenWindow(
HMONITOR hMonitor,
HWND hWindow,
bool forceTopmost) {
}
VkResult createSurface(
HWND hWindow,
PFN_vkGetInstanceProcAddr pfnVkGetInstanceProcAddr,
VkInstance instance,
VkSurfaceKHR* pSurface) {
auto pfnVkCreateHeadlessSurfaceEXT = reinterpret_cast<PFN_vkCreateHeadlessSurfaceEXT>(
pfnVkGetInstanceProcAddr(instance, "vkCreateHeadlessSurfaceEXT"));
if (!pfnVkCreateHeadlessSurfaceEXT)
return VK_ERROR_FEATURE_NOT_PRESENT;
VkHeadlessSurfaceCreateInfoEXT info = { VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT };
info.pNext = nullptr;
info.flags = 0;
return pfnVkCreateHeadlessSurfaceEXT(instance, &info, nullptr, pSurface);
}
}

View File

@ -6,4 +6,6 @@
#include "sdl2/wsi_platform_sdl2.h"
#elif defined(DXVK_WSI_GLFW)
#include "glfw/wsi_platform_glfw.h"
#elif defined(DXVK_WSI_NONE)
#include "none/wsi_platform_none.h"
#endif