MCPcopy Create free account
hub / github.com/OpenShot/libopenshot / QueryVulkanSummary

Function QueryVulkanSummary

examples/VulkanBenchmark.cpp:249–288  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

247static QImage QImageFromRgbaFrame(const AVFrame* frame);
248
249static VulkanSummary QueryVulkanSummary() {
250 VulkanSummary summary;
251 auto enumerate_instance_version =
252 reinterpret_cast<PFN_vkEnumerateInstanceVersion>(vkGetInstanceProcAddr(nullptr, "vkEnumerateInstanceVersion"));
253 if (enumerate_instance_version) {
254 enumerate_instance_version(&summary.api_version);
255 }
256
257 VkApplicationInfo app_info{};
258 app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
259 app_info.pApplicationName = "openshot-vulkan-benchmark";
260 app_info.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
261 app_info.pEngineName = "none";
262 app_info.engineVersion = VK_MAKE_VERSION(1, 0, 0);
263 app_info.apiVersion = summary.api_version;
264
265 VkInstanceCreateInfo create_info{};
266 create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
267 create_info.pApplicationInfo = &app_info;
268
269 VkInstance instance = VK_NULL_HANDLE;
270 if (vkCreateInstance(&create_info, nullptr, &instance) != VK_SUCCESS) {
271 return summary;
272 }
273
274 uint32_t count = 0;
275 if (vkEnumeratePhysicalDevices(instance, &count, nullptr) == VK_SUCCESS && count > 0) {
276 std::vector<VkPhysicalDevice> devices(count);
277 if (vkEnumeratePhysicalDevices(instance, &count, devices.data()) == VK_SUCCESS) {
278 for (VkPhysicalDevice device : devices) {
279 VkPhysicalDeviceProperties properties{};
280 vkGetPhysicalDeviceProperties(device, &properties);
281 summary.device_names.emplace_back(properties.deviceName);
282 }
283 }
284 }
285
286 vkDestroyInstance(instance, nullptr);
287 return summary;
288}
289
290static void PrintVulkanSummary(const VulkanSummary& summary) {
291 std::cout << "Vulkan API version: "

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected