print vulkan version when use system driver

This commit is contained in:
ShirosakiMio 2024-08-22 09:27:39 +08:00
parent 238208f8fb
commit df863ccfc3
4 changed files with 60 additions and 1 deletions

View File

@ -18,7 +18,8 @@ LOCAL_SHARED_LIBRARIES := bytehook
LOCAL_SRC_FILES := fcl/fcl_bridge.c \ LOCAL_SRC_FILES := fcl/fcl_bridge.c \
fcl/fcl_event.c \ fcl/fcl_event.c \
fcl/fcl_loader.c \ fcl/fcl_loader.c \
fcl/jre_launcher.c fcl/jre_launcher.c \
fcl/utils.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/fcl/include LOCAL_C_INCLUDES := $(LOCAL_PATH)/fcl/include
LOCAL_LDLIBS := -llog -ldl -landroid LOCAL_LDLIBS := -llog -ldl -landroid
include $(BUILD_SHARED_LIBRARY) include $(BUILD_SHARED_LIBRARY)

View File

@ -0,0 +1,10 @@
//
// Created by mio on 2024/8/22.
//
#ifndef FOLD_CRAFT_LAUNCHER_UTILS_H
#define FOLD_CRAFT_LAUNCHER_UTILS_H
void printVulkanInfo(void*);
#endif //FOLD_CRAFT_LAUNCHER_UTILS_H

View File

@ -0,0 +1,46 @@
//
// Created by mio on 2024/8/22.
//
#include <vulkan/vulkan.h>
#include <dlfcn.h>
#include "utils.h"
#include "fcl_internal.h"
void printVulkanInfo(void *handle) {
PFN_vkCreateInstance vkCreateInstance;
PFN_vkDestroyInstance vkDestroyInstance;
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceProperties;
vkCreateInstance = dlsym(handle, "vkCreateInstance");
vkDestroyInstance = dlsym(handle, "vkDestroyInstance");
vkEnumeratePhysicalDevices = dlsym(handle, "vkEnumeratePhysicalDevices");
vkGetPhysicalDeviceFeatures = dlsym(handle, "vkGetPhysicalDeviceFeatures");
vkGetPhysicalDeviceProperties = dlsym(handle, "vkGetPhysicalDeviceProperties");
VkInstanceCreateInfo instanceCreateInfo = {
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO
};
VkInstance instance/* = malloc(sizeof(VkInstance))*/;
if (vkCreateInstance(&instanceCreateInfo, 0, &instance) != 0) {
FCL_INTERNAL_LOG("vkCreateInstance error");
return;
}
uint32_t gpu_count;
if (vkEnumeratePhysicalDevices(instance, &gpu_count, NULL) != 0) {
FCL_INTERNAL_LOG("vkEnumeratePhysicalDevices error");
return;
}
VkPhysicalDevice *gpus = (VkPhysicalDevice *) malloc(sizeof(VkPhysicalDevice) * gpu_count);
if (vkEnumeratePhysicalDevices(instance, &gpu_count, gpus) != 0) {
FCL_INTERNAL_LOG("vkEnumeratePhysicalDevices error");
return;
}
VkPhysicalDevice gpu = gpus[0];
VkPhysicalDeviceProperties gpuProperties;
vkGetPhysicalDeviceProperties(gpu, &gpuProperties);
FCL_INTERNAL_LOG("Vulkan api version:%d.%d.%d",
VK_VERSION_MAJOR(gpuProperties.apiVersion),
VK_VERSION_MINOR(gpuProperties.apiVersion),
VK_VERSION_PATCH(gpuProperties.apiVersion));
vkDestroyInstance(instance, 0);
}

View File

@ -27,6 +27,7 @@
#include <android/dlext.h> #include <android/dlext.h>
#include "ctxbridges/bridge_tbl.h" #include "ctxbridges/bridge_tbl.h"
#include "ctxbridges/osm_bridge.h" #include "ctxbridges/osm_bridge.h"
#include "fcl/include/utils.h"
#define GLFW_CLIENT_API 0x22001 #define GLFW_CLIENT_API 0x22001
/* Consider GLFW_NO_API as Vulkan API */ /* Consider GLFW_NO_API as Vulkan API */
@ -181,6 +182,7 @@ void load_vulkan() {
void* vulkan_ptr = dlopen("libvulkan.so", RTLD_LAZY | RTLD_LOCAL); void* vulkan_ptr = dlopen("libvulkan.so", RTLD_LAZY | RTLD_LOCAL);
printf("OSMDroid: loaded vulkan, ptr=%p\n", vulkan_ptr); printf("OSMDroid: loaded vulkan, ptr=%p\n", vulkan_ptr);
set_vulkan_ptr(vulkan_ptr); set_vulkan_ptr(vulkan_ptr);
printVulkanInfo(vulkan_ptr);
} }
int pojavInitOpenGL() { int pojavInitOpenGL() {