Skip to content

Commit

Permalink
Add None WSI
Browse files Browse the repository at this point in the history
  • Loading branch information
expipiplus1 committed Jul 30, 2023
1 parent dfbebba commit 2069fd2
Show file tree
Hide file tree
Showing 9 changed files with 217 additions and 0 deletions.
2 changes: 2 additions & 0 deletions include/native/wsi/native_wsi.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 2 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,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_'
Expand Down
4 changes: 4 additions & 0 deletions src/dxvk/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,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') ]
Expand Down
33 changes: 33 additions & 0 deletions src/dxvk/platform/dxvk_none_exts.cpp
Original file line number Diff line number Diff line change
@@ -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) {

}

}
8 changes: 8 additions & 0 deletions src/wsi/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ wsi_glfw_src = [
'glfw/wsi_window_glfw.cpp',
]

wsi_none_src = [
'none/wsi_monitor_none.cpp',
'none/wsi_window_none.cpp',
]

if dxvk_wsi == 'win32'
wsi_src = wsi_common_src + wsi_win32_src
wsi_deps = [ dep_displayinfo ]
Expand All @@ -26,6 +31,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_common_src + wsi_none_src
wsi_deps = [ dep_displayinfo ]
else
error('Unknown wsi')
endif
Expand Down
66 changes: 66 additions & 0 deletions src/wsi/none/wsi_monitor_none.cpp
Original file line number Diff line number Diff line change
@@ -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 {};
}

}
17 changes: 17 additions & 0 deletions src/wsi/none/wsi_platform_none.h
Original file line number Diff line number Diff line change
@@ -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;
}

}
83 changes: 83 additions & 0 deletions src/wsi/none/wsi_window_none.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#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) {
// TODO: Could use VK_EXT_headless_surface here?
return VK_ERROR_FEATURE_NOT_PRESENT;
}

}
2 changes: 2 additions & 0 deletions src/wsi/wsi_platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 2069fd2

Please sign in to comment.