| 322 | } |
| 323 | |
| 324 | static void findPhysicalDevice(void) |
| 325 | { |
| 326 | uint32_t physicalDeviceCount = 0; |
| 327 | VkPhysicalDevice *physicalDevices; |
| 328 | VkQueueFamilyProperties *queueFamiliesProperties = NULL; |
| 329 | uint32_t queueFamiliesPropertiesAllocatedSize = 0; |
| 330 | VkExtensionProperties *deviceExtensions = NULL; |
| 331 | uint32_t deviceExtensionsAllocatedSize = 0; |
| 332 | uint32_t physicalDeviceIndex; |
| 333 | |
| 334 | VkResult result = |
| 335 | vkEnumeratePhysicalDevices(vulkanContext.instance, &physicalDeviceCount, NULL); |
| 336 | if(result != VK_SUCCESS) |
| 337 | { |
| 338 | SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, |
| 339 | "vkEnumeratePhysicalDevices(): %s\n", |
| 340 | getVulkanResultString(result)); |
| 341 | quit(2); |
| 342 | } |
| 343 | if(physicalDeviceCount == 0) |
| 344 | { |
| 345 | SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, |
| 346 | "vkEnumeratePhysicalDevices(): no physical devices\n"); |
| 347 | quit(2); |
| 348 | } |
| 349 | physicalDevices = SDL_malloc(sizeof(VkPhysicalDevice) * physicalDeviceCount); |
| 350 | if(!physicalDevices) |
| 351 | { |
| 352 | SDL_OutOfMemory(); |
| 353 | quit(2); |
| 354 | } |
| 355 | result = |
| 356 | vkEnumeratePhysicalDevices(vulkanContext.instance, &physicalDeviceCount, physicalDevices); |
| 357 | if(result != VK_SUCCESS) |
| 358 | { |
| 359 | SDL_free(physicalDevices); |
| 360 | SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, |
| 361 | "vkEnumeratePhysicalDevices(): %s\n", |
| 362 | getVulkanResultString(result)); |
| 363 | quit(2); |
| 364 | } |
| 365 | vulkanContext.physicalDevice = NULL; |
| 366 | for(physicalDeviceIndex = 0; physicalDeviceIndex < physicalDeviceCount; |
| 367 | physicalDeviceIndex++) |
| 368 | { |
| 369 | uint32_t queueFamiliesCount = 0; |
| 370 | uint32_t queueFamilyIndex; |
| 371 | uint32_t deviceExtensionCount = 0; |
| 372 | SDL_bool hasSwapchainExtension = SDL_FALSE; |
| 373 | uint32_t i; |
| 374 | |
| 375 | |
| 376 | VkPhysicalDevice physicalDevice = physicalDevices[physicalDeviceIndex]; |
| 377 | vkGetPhysicalDeviceProperties(physicalDevice, &vulkanContext.physicalDeviceProperties); |
| 378 | if(VK_VERSION_MAJOR(vulkanContext.physicalDeviceProperties.apiVersion) < 1) |
| 379 | continue; |
| 380 | vkGetPhysicalDeviceFeatures(physicalDevice, &vulkanContext.physicalDeviceFeatures); |
| 381 | vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamiliesCount, NULL); |
no test coverage detected