aboutsummaryrefslogtreecommitdiff
path: root/loader
diff options
context:
space:
mode:
authorSlawomir Cygan <slawomir.cygan@intel.com>2018-01-25 13:51:17 +0100
committerLenny Komow <lenny@lunarg.com>2018-02-12 13:23:57 -0700
commit3c02f314002dff675a8262b71a00548ff3d89af9 (patch)
treed1038efa1b9fa5a1f1fa1ae16a869b6953bcf618 /loader
parent8bbdd43d4de7c690816f5672201b9494ba426728 (diff)
downloadusermoji-3c02f314002dff675a8262b71a00548ff3d89af9.tar.xz
loader: link with OneCore umbrella library
This change makes loader use OneCore umbrella[2] library, common to all Windows 10 devices and required with for Universal Windows drivers[1]. As this change may not be compatible with previous versions of Windows, it's enabled via CMAKE option: -DENABLE_WIN10_ONECORE=1 [2] https://msdn.microsoft.com/en-us/library/windows/desktop/mt654039(v=vs.85).aspx [1] https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/getting-started-with-universal-drivers Change-Id: Ib677face131ab2edb3e8cd2f764fe4e0ca44cecc
Diffstat (limited to 'loader')
-rw-r--r--loader/CMakeLists.txt15
-rw-r--r--loader/loader.c9
2 files changed, 18 insertions, 6 deletions
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
index 6282bac6..85282d03 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -149,6 +149,12 @@ if (WIN32)
endif()
endforeach()
+ if (ENABLE_WIN10_ONECORE)
+ # Note When linking your app or driver to OneCore.lib, be sure to remove any links to non-umbrella libs (such as kernel32.lib).
+ set(CMAKE_CXX_STANDARD_LIBRARIES " ") # space is intentional
+ set(CMAKE_C_STANDARD_LIBRARIES ${CMAKE_CXX_STANDARD_LIBRARIES})
+ endif()
+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS")
# Build dev_ext_trampoline.c with -O2 to allow tail-call optimization.
# Build other C files with normal options
@@ -180,7 +186,14 @@ if (WIN32)
# Suppress conflicting libs warning for debug builds.
set_target_properties(${API_LOWERCASE}-${MAJOR} PROPERTIES LINK_FLAGS_DEBUG /ignore:4098)
set_target_properties(VKstatic.${MAJOR} PROPERTIES OUTPUT_NAME VKstatic.${MAJOR})
- target_link_libraries(${API_LOWERCASE}-${MAJOR} Cfgmgr32)
+
+ if (ENABLE_WIN10_ONECORE)
+ target_link_libraries(${API_LOWERCASE}-${MAJOR} OneCoreUAP.lib LIBCMT.LIB LIBCMTD.LIB LIBVCRUNTIME.LIB LIBUCRT.LIB)
+ set_target_properties(${API_LOWERCASE}-${MAJOR} PROPERTIES LINK_FLAGS "/NODEFAULTLIB")
+ else()
+ target_link_libraries(${API_LOWERCASE}-${MAJOR} Cfgmgr32)
+ endif()
+
add_dependencies(${API_LOWERCASE}-${MAJOR} generate_helper_files loader_gen_files loader_asm_gen_files)
if (CMAKE_GENERATOR MATCHES "^Visual Studio.*")
diff --git a/loader/loader.c b/loader/loader.c
index 543b9657..dcb2ef1e 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -543,11 +543,11 @@ out:
// *reg_data contains a string list of filenames as pointer.
// When done using the returned string list, the caller should free the pointer.
VkResult loaderGetDeviceRegistryFiles(const struct loader_instance *inst, char **reg_data, PDWORD reg_data_size, LPCTSTR value_name) {
- static const wchar_t* softwareComponentGUID = L"{5c4c3332-344d-483c-8739-259e934c9cc8}";
- static const wchar_t* displayGUID = L"{4d36e968-e325-11ce-bfc1-08002be10318}";
+ static const wchar_t *softwareComponentGUID = L"{5c4c3332-344d-483c-8739-259e934c9cc8}";
+ static const wchar_t *displayGUID = L"{4d36e968-e325-11ce-bfc1-08002be10318}";
const ULONG flags = CM_GETIDLIST_FILTER_CLASS | CM_GETIDLIST_FILTER_PRESENT;
-
- wchar_t childGuid[MAX_GUID_STRING_LEN + 2]; // +2 for brackets {}
+
+ wchar_t childGuid[MAX_GUID_STRING_LEN + 2]; // +2 for brackets {}
ULONG childGuidSize = sizeof(childGuid);
DEVINST devID = 0, childID = 0;
@@ -579,7 +579,6 @@ VkResult loaderGetDeviceRegistryFiles(const struct loader_instance *inst, char *
} while (CM_Get_Device_ID_ListW(displayGUID, pDeviceNames, deviceNamesSize, flags) == CR_BUFFER_SMALL);
if (pDeviceNames) {
-
for (wchar_t *deviceName = pDeviceNames; *deviceName; deviceName += wcslen(deviceName) + 1) {
CONFIGRET status = CM_Locate_DevNodeW(&devID, deviceName, CM_LOCATE_DEVNODE_NORMAL);
if (CR_SUCCESS != status) {