| 90 | } |
| 91 | |
| 92 | void VulkanDeviceInfo::readLayers() |
| 93 | { |
| 94 | assert(device != NULL); |
| 95 | qInfo() << "Reading layers"; |
| 96 | VkResult vkRes; |
| 97 | do { |
| 98 | uint32_t layerCount; |
| 99 | vkRes = vkEnumerateDeviceLayerProperties(device, &layerCount, NULL); |
| 100 | std::vector<VkLayerProperties> props(layerCount); |
| 101 | if (layerCount > 0) |
| 102 | { |
| 103 | vkRes = vkEnumerateDeviceLayerProperties(device, &layerCount, &props.front()); |
| 104 | |
| 105 | } |
| 106 | for (auto& prop : props) |
| 107 | { |
| 108 | VulkanLayerInfo layerInfo; |
| 109 | layerInfo.properties = prop; |
| 110 | // Get Layer extensions |
| 111 | VkResult vkRes; |
| 112 | do { |
| 113 | uint32_t extCount; |
| 114 | vkRes = vkEnumerateDeviceExtensionProperties(device, prop.layerName, &extCount, NULL); |
| 115 | assert(!vkRes); |
| 116 | if (extCount > 0) { |
| 117 | std::vector<VkExtensionProperties> exts(extCount); |
| 118 | vkRes = vkEnumerateDeviceExtensionProperties(device, prop.layerName, &extCount, &exts.front()); |
| 119 | for (auto& ext : exts) |
| 120 | layerInfo.extensions.push_back(ext); |
| 121 | } |
| 122 | } while (vkRes == VK_INCOMPLETE); |
| 123 | assert(!vkRes); |
| 124 | // Push to layer list |
| 125 | layers.push_back(layerInfo); |
| 126 | } |
| 127 | } while (vkRes == VK_INCOMPLETE); |
| 128 | } |
| 129 | |
| 130 | void VulkanDeviceInfo::readSupportedFormats() |
| 131 | { |