diff options
| author | Slawomir Cygan <slawomir.cygan@intel.com> | 2019-10-21 12:36:53 +0200 |
|---|---|---|
| committer | Charles Giessen <46324611+charles-lunarg@users.noreply.github.com> | 2019-12-10 10:08:45 -0700 |
| commit | 8c4e6525314edbb879c66a710e4e69aa530a47f9 (patch) | |
| tree | 23d696b0632db2450123fbd3288ed6be2593351d /vulkaninfo/vulkaninfo.cpp | |
| parent | 5ceb7be9a3bf86f34ade5a7f72459248d99a4b76 (diff) | |
| download | usermoji-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.cpp | 21 |
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; } |
