aboutsummaryrefslogtreecommitdiff
path: root/vulkaninfo/vulkaninfo.cpp
diff options
context:
space:
mode:
authorSlawomir Cygan <slawomir.cygan@intel.com>2019-10-21 12:36:53 +0200
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>2019-12-10 10:08:45 -0700
commit8c4e6525314edbb879c66a710e4e69aa530a47f9 (patch)
tree23d696b0632db2450123fbd3288ed6be2593351d /vulkaninfo/vulkaninfo.cpp
parent5ceb7be9a3bf86f34ade5a7f72459248d99a4b76 (diff)
downloadusermoji-8c4e6525314edbb879c66a710e4e69aa530a47f9.tar.xz
vulkaninfo: load user32.dll dynamically
Instead of depending on user32.dll, this library is now loaded dynamically. This change is needed to redistribute vulkaninfo.exe as a part of "universal" windows driverm, by making vulkaninfo pass the 'ApiValidator' test. See more here https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/validating-universal-drivers Change-Id: I79a28cbb5d761b33ab673994a2b578c4044f5a90 Author: Kamil Szypryt <kamil.szypryt@intel.com>
Diffstat (limited to 'vulkaninfo/vulkaninfo.cpp')
-rw-r--r--vulkaninfo/vulkaninfo.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/vulkaninfo/vulkaninfo.cpp b/vulkaninfo/vulkaninfo.cpp
index fae81475..bab61ee7 100644
--- a/vulkaninfo/vulkaninfo.cpp
+++ b/vulkaninfo/vulkaninfo.cpp
@@ -28,6 +28,19 @@
#include "vulkaninfo.hpp"
+#ifdef _WIN32
+// Initialize User32 pointers
+PFN_AdjustWindowRect User32Handles::pfnAdjustWindowRect = nullptr;
+PFN_CreateWindowExA User32Handles::pfnCreateWindowExA = nullptr;
+PFN_DefWindowProcA User32Handles::pfnDefWindowProcA = nullptr;
+PFN_DestroyWindow User32Handles::pfnDestroyWindow = nullptr;
+PFN_LoadIconA User32Handles::pfnLoadIconA = nullptr;
+PFN_RegisterClassExA User32Handles::pfnRegisterClassExA = nullptr;
+
+HMODULE User32Handles::user32DllHandle = nullptr;
+
+#endif
+
// =========== Dump Functions ========= //
void DumpExtensions(Printer &p, std::string layer_name, std::vector<VkExtensionProperties> extensions) {
@@ -676,6 +689,11 @@ void print_usage(const char *argv0) {
int main(int argc, char **argv) {
#ifdef _WIN32
if (ConsoleIsExclusive()) ConsoleEnlarge();
+ if (!LoadUser32Dll()) {
+ fprintf(stderr, "Failed to load user32.dll library!\n");
+ WAIT_FOR_CONSOLE_DESTROY;
+ exit(1);
+ }
#endif
uint32_t selected_gpu = 0;
@@ -790,6 +808,9 @@ int main(int argc, char **argv) {
#endif
WAIT_FOR_CONSOLE_DESTROY;
+#ifdef _WIN32
+ FreeUser32Dll();
+#endif
return 0;
}