Switch to a dynamic dispatch table instead of linking hard against libvulkan.

This commit is contained in:
Adam Treat 2023-09-12 12:39:38 -04:00
parent e308fb04db
commit 5b2d8236a7
7 changed files with 23 additions and 17 deletions

View file

@ -123,21 +123,20 @@ static std::string ggml_vk_getVendorName(uint32_t vendorID) {
}
std::vector<ggml_vk_device> ggml_vk_available_devices(size_t memoryRequired) {
std::vector<vk::PhysicalDevice> physicalDevices = mgr.listDevices();
uint32_t deviceCount = physicalDevices.size();
std::vector<ggml_vk_device> results;
if (!mgr.hasVulkan())
return results;
std::vector<vk::PhysicalDevice> physicalDevices = mgr.listDevices();
uint32_t deviceCount = physicalDevices.size();
if (deviceCount == 0)
return results;
for (uint32_t i = 0; i < deviceCount; i++) {
VkPhysicalDeviceProperties properties;
vkGetPhysicalDeviceProperties(physicalDevices.at(i), &properties);
VkPhysicalDeviceMemoryProperties memoryProperties;
vkGetPhysicalDeviceMemoryProperties(physicalDevices.at(i), &memoryProperties);
VkPhysicalDeviceProperties properties = physicalDevices.at(i).getProperties();
VkPhysicalDeviceMemoryProperties memoryProperties = physicalDevices.at(i).getMemoryProperties();
const uint32_t major = VK_VERSION_MAJOR(properties.apiVersion);
const uint32_t minor = VK_VERSION_MINOR(properties.apiVersion);
if (major < 1 || minor < 2)