diff options
| author | xctan <xctan@cirno.icu> | 2025-02-19 00:33:55 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-18 17:33:55 +0100 |
| commit | fdd1509ee5392f28a0c6d1021269a5d22c34933b (patch) | |
| tree | af67d8468cab2145e8296603a0c0b7a089102e3a | |
| parent | 52a9443f5316bd6484206ea81c4f4c7b7436ca50 (diff) | |
| download | box64-fdd1509ee5392f28a0c6d1021269a5d22c34933b.tar.gz box64-fdd1509ee5392f28a0c6d1021269a5d22c34933b.zip | |
[WRAPPER] Display Box64 version in Vulkan driver info (#2385)
| -rw-r--r-- | src/build_info.h | 15 | ||||
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 1 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedvulkantypes.h | 1 | ||||
| -rw-r--r-- | src/wrapped/wrappedvulkan.c | 29 | ||||
| -rw-r--r-- | src/wrapped/wrappedvulkan_private.h | 2 |
5 files changed, 47 insertions, 1 deletions
diff --git a/src/build_info.h b/src/build_info.h index 18456a4b..17a02bb1 100644 --- a/src/build_info.h +++ b/src/build_info.h @@ -1,6 +1,21 @@ +#include "box64version.h" +#ifdef NOGIT +#define GITREV "nogit" +#else +#include "git_head.h" +#endif + #ifndef __BUILD_INFO_H__ #define __BUILD_INFO_H__ void PrintBox64Version(void); +#define BOX64_BUILD_INFO_STR_HELPER(x) #x +#define BOX64_BUILD_INFO_STR(x) BOX64_BUILD_INFO_STR_HELPER(x) + +#define BOX64_BUILD_INFO_STRING \ + "Box64" \ + " v" BOX64_BUILD_INFO_STR(BOX64_MAJOR) "." BOX64_BUILD_INFO_STR(BOX64_MINOR) "." BOX64_BUILD_INFO_STR(BOX64_REVISION) \ + " " GITREV + #endif //__BUILD_INFO_H__ \ No newline at end of file diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 0f92e7df..5883e4c2 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -6058,6 +6058,7 @@ wrappedvulkan: - vkDestroyInstance - vkGetPhysicalDeviceMemoryProperties - vkGetPhysicalDeviceProperties + - vkGetPhysicalDeviceProperties2 - pFpp: - vkGetDeviceProcAddr - vkGetInstanceProcAddr diff --git a/src/wrapped/generated/wrappedvulkantypes.h b/src/wrapped/generated/wrappedvulkantypes.h index 76fabe63..7bd22649 100644 --- a/src/wrapped/generated/wrappedvulkantypes.h +++ b/src/wrapped/generated/wrappedvulkantypes.h @@ -32,6 +32,7 @@ typedef void (*vFpuuuupupup_t)(void*, uint32_t, uint32_t, uint32_t, uint32_t, vo GO(vkDestroyInstance, vFpp_t) \ GO(vkGetPhysicalDeviceMemoryProperties, vFpp_t) \ GO(vkGetPhysicalDeviceProperties, vFpp_t) \ + GO(vkGetPhysicalDeviceProperties2, vFpp_t) \ GO(vkGetDeviceProcAddr, pFpp_t) \ GO(vkGetInstanceProcAddr, pFpp_t) \ GO(vkDestroyAccelerationStructureKHR, vFpUp_t) \ diff --git a/src/wrapped/wrappedvulkan.c b/src/wrapped/wrappedvulkan.c index 7fa89794..1fb003c1 100644 --- a/src/wrapped/wrappedvulkan.c +++ b/src/wrapped/wrappedvulkan.c @@ -16,6 +16,7 @@ #include "librarian.h" #include "callback.h" #include "myalign.h" +#include "build_info.h" //extern char* libvulkan; @@ -233,6 +234,18 @@ typedef struct my_VkXcbSurfaceCreateInfoKHR_s { int window; } my_VkXcbSurfaceCreateInfoKHR_t; +#define VK_MAX_DRIVER_NAME_SIZE 256 +#define VK_MAX_DRIVER_INFO_SIZE 256 + +typedef struct my_VkPhysicalDeviceVulkan12Properties_s { + int sType; + void* pNext; + int driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + uint32_t __others[49]; +} my_VkPhysicalDeviceVulkan12Properties_t; + typedef struct my_VkStruct_s { int sType; struct my_VkStruct_s* pNext; @@ -799,3 +812,19 @@ EXPORT void my_vkDestroyDebugReportCallbackEXT(x64emu_t* emu, void* instance, vo } CREATE(vkCreateHeadlessSurfaceEXT) + +EXPORT void my_vkGetPhysicalDeviceProperties2(x64emu_t* emu, void* device, void* pProps) +{ + my->vkGetPhysicalDeviceProperties2(device, pProps); + my_VkStruct_t *p = pProps; + while (p != NULL) { + // find VkPhysicalDeviceVulkan12Properties + // VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + if(p->sType == 52) { + my_VkPhysicalDeviceVulkan12Properties_t *pp = (my_VkPhysicalDeviceVulkan12Properties_t*)p; + strncat(pp->driverInfo, " with " BOX64_BUILD_INFO_STRING, VK_MAX_DRIVER_INFO_SIZE - strlen(pp->driverInfo) - 1); + break; + } + p = p->pNext; + } +} \ No newline at end of file diff --git a/src/wrapped/wrappedvulkan_private.h b/src/wrapped/wrappedvulkan_private.h index 93982f13..603f76bd 100644 --- a/src/wrapped/wrappedvulkan_private.h +++ b/src/wrapped/wrappedvulkan_private.h @@ -200,7 +200,7 @@ GO(vkGetPhysicalDeviceFeatures2, vFpp) GO(vkGetPhysicalDeviceFormatProperties2, vFpip) GO(vkGetPhysicalDeviceImageFormatProperties2, iFppp) GO(vkGetPhysicalDeviceMemoryProperties2, vFpp) -GO(vkGetPhysicalDeviceProperties2, vFpp) +GOM(vkGetPhysicalDeviceProperties2, vFEpp) GO(vkGetPhysicalDeviceQueueFamilyProperties2, vFppp) //VkQueueFamilyProperties2 seems OK GO(vkGetPhysicalDeviceSparseImageFormatProperties2, vFpppp) //VkSparseImageFormatProperties2 seems OK GO(vkGetPhysicalDeviceToolProperties, iFppp) |