MCPcopy Create free account
hub / github.com/SaschaWillems/VulkanCapsViewer / getGPUinfo

Method getGPUinfo

vulkanCapsViewer.cpp:927–1019  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

925}
926
927void VulkanCapsViewer::getGPUinfo(VulkanDeviceInfo *GPU, uint32_t id, VkPhysicalDevice device)
928{
929 VkResult vkRes;
930
931 GPU->id = id;
932 GPU->device = device;
933 GPU->readExtensions();
934 GPU->readPhysicalProperties();
935 GPU->readLayers();
936 GPU->readQueueFamilies();
937 GPU->readPhysicalFeatures();
938 GPU->readPhysicalLimits();
939 GPU->readPhysicalMemoryProperties();
940 GPU->readSurfaceInfo();
941 GPU->readPlatformDetails();
942 GPU->readProfiles();
943 // Request all available queues
944 std::vector<VkDeviceQueueCreateInfo> queueCreateInfos;
945 for (uint32_t i = 0; i < GPU->queueFamilies.size(); ++i)
946 {
947 float queuePriorities[1] = { 0.0f };
948 VkDeviceQueueCreateInfo queueCreateInfo = {};
949 queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
950 queueCreateInfo.queueFamilyIndex = i;
951 queueCreateInfo.queueCount = 1;
952 queueCreateInfo.pQueuePriorities = queuePriorities;
953 queueCreateInfos.push_back(queueCreateInfo);
954 }
955
956 std::vector<const char*> enabledExtensions;
957#if defined(__APPLE__) && (VK_HEADER_VERSION >= 216)
958 // Enable the portability extension at the device level, but only if the device uses it
959 // For example, MoltenVK does, while lavapipe and KosmicKrisp do not.
960
961 // Get the list of device extensions
962 uint32_t extensionCount = 0;
963 vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount,nullptr);
964 std::vector<VkExtensionProperties> availableExtensions(extensionCount);
965
966 vkEnumerateDeviceExtensionProperties(
967 device, nullptr, &extensionCount, availableExtensions.data());
968
969 // Loop through the extensions and enable any portability devices
970 for(int i = 0; i < extensionCount; i++)
971 if(strcmp(availableExtensions[i].extensionName, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME) == 0)
972 enabledExtensions.push_back(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME);
973#endif
974
975 // Init device
976
977 VkDeviceCreateInfo info = {};
978 info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
979 info.pQueueCreateInfos = queueCreateInfos.data();
980 info.queueCreateInfoCount = (uint32_t)queueCreateInfos.size();
981 info.enabledLayerCount = 0;
982 if (enabledExtensions.size() > 0) {
983 info.enabledExtensionCount = static_cast<uint32_t>(enabledExtensions.size());
984 info.ppEnabledExtensionNames = enabledExtensions.data();

Callers

nothing calls this directly

Calls 13

resultStringFunction · 0.85
getOperatingSystemFunction · 0.85
readExtensionsMethod · 0.80
readLayersMethod · 0.80
readQueueFamiliesMethod · 0.80
readPhysicalFeaturesMethod · 0.80
readPhysicalLimitsMethod · 0.80
readSurfaceInfoMethod · 0.80
readPlatformDetailsMethod · 0.80
readProfilesMethod · 0.80

Tested by

no test coverage detected