diff options
Diffstat (limited to 'vulkaninfo/vulkaninfo.cpp')
| -rw-r--r-- | vulkaninfo/vulkaninfo.cpp | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/vulkaninfo/vulkaninfo.cpp b/vulkaninfo/vulkaninfo.cpp index 4ebe3514..dadbf1b5 100644 --- a/vulkaninfo/vulkaninfo.cpp +++ b/vulkaninfo/vulkaninfo.cpp @@ -720,7 +720,7 @@ void DumpGpuProfileCapabilities(Printer &p, AppGpu &gpu) { format_props2.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; format_props2.formatProperties = formats.props; std::unique_ptr<format_properties2_chain> chain_for_format_props2; - setup_format_properties2_chain(format_props2, chain_for_format_props2); + setup_format_properties2_chain(format_props2, chain_for_format_props2, gpu); gpu.inst.ext_funcs.vkGetPhysicalDeviceFormatProperties2KHR(gpu.phys_device, fmt, &format_props2); chain_iterator_format_properties2(p, gpu, format_props2.pNext); } @@ -1169,20 +1169,33 @@ int main(int argc, char **argv) { auto phys_devices = instance.FindPhysicalDevices(); - std::vector<std::unique_ptr<AppSurface>> surfaces; #if defined(VULKANINFO_WSI_ENABLED) for (auto &surface_extension : instance.surface_extensions) { surface_extension.create_window(instance); surface_extension.surface = surface_extension.create_surface(instance); - for (auto &phys_device : phys_devices) { + } +#endif // defined(VULKANINFO_WSI_ENABLED) + + std::vector<std::unique_ptr<AppGpu>> gpus; + + uint32_t gpu_counter = 0; + for (auto &phys_device : phys_devices) { + gpus.push_back(std::unique_ptr<AppGpu>(new AppGpu(instance, gpu_counter++, phys_device))); + } + + std::vector<std::unique_ptr<AppSurface>> surfaces; +#if defined(VULKANINFO_WSI_ENABLED) + for (auto &surface_extension : instance.surface_extensions) { + for (auto &gpu : gpus) { try { // check if the surface is supported by the physical device before adding it to the list VkBool32 supported = VK_FALSE; - VkResult err = instance.ext_funcs.vkGetPhysicalDeviceSurfaceSupportKHR(phys_device, 0, + VkResult err = instance.ext_funcs.vkGetPhysicalDeviceSurfaceSupportKHR(gpu->phys_device, 0, surface_extension.surface, &supported); if (err != VK_SUCCESS || supported == VK_FALSE) continue; - surfaces.push_back(std::unique_ptr<AppSurface>(new AppSurface(instance, phys_device, surface_extension))); + surfaces.push_back( + std::unique_ptr<AppSurface>(new AppSurface(instance, *gpu.get(), gpu->phys_device, surface_extension))); } catch (std::exception &e) { std::cerr << "ERROR while creating surface for extension " << surface_extension.name << " : " << e.what() << "\n"; @@ -1191,13 +1204,6 @@ int main(int argc, char **argv) { } #endif // defined(VULKANINFO_WSI_ENABLED) - std::vector<std::unique_ptr<AppGpu>> gpus; - - uint32_t gpu_counter = 0; - for (auto &phys_device : phys_devices) { - gpus.push_back(std::unique_ptr<AppGpu>(new AppGpu(instance, gpu_counter++, phys_device))); - } - if (parse_data.selected_gpu >= gpus.size()) { if (parse_data.has_selected_gpu) { std::cout << "The selected gpu (" << parse_data.selected_gpu << ") is not a valid GPU index. "; |
