From 9c5719ab7149058d452f78255c42d6083644ffca Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Tue, 17 Dec 2019 10:12:42 -0700 Subject: vulkaninfo: safely handle device groups not supported Previously, vulkaninfo would hard crash if device groups failed the call to vkEnumeratePhysicalDeviceGroupsKHR. If an error happens now the GetGroups call simply returns an empty vector. Files Modified: vulkaninfo/vulkaninfo.cpp vulkaninfo/vulkaninfo.h Change-Id: I60ed002161523cede53a144be3fad1d4bb0dd1f1 --- vulkaninfo/vulkaninfo.cpp | 9 ++++++++- vulkaninfo/vulkaninfo.h | 8 ++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/vulkaninfo/vulkaninfo.cpp b/vulkaninfo/vulkaninfo.cpp index 5bac3ba6..83816d15 100644 --- a/vulkaninfo/vulkaninfo.cpp +++ b/vulkaninfo/vulkaninfo.cpp @@ -231,8 +231,15 @@ void DumpPresentableSurfaces(Printer &p, AppInstance &inst, const std::vector GetGroups(AppInstance &inst) { VkResult err; do { err = vkEnumeratePhysicalDeviceGroupsKHR(inst.instance, &group_count, NULL); - if (err != VK_SUCCESS && err != VK_INCOMPLETE) ERR_EXIT(err); + if (err != VK_SUCCESS && err != VK_INCOMPLETE) { + return {}; + } groups.resize(group_count); err = vkEnumeratePhysicalDeviceGroupsKHR(inst.instance, &group_count, groups.data()); - if (err != VK_SUCCESS && err != VK_INCOMPLETE) ERR_EXIT(err); + if (err != VK_SUCCESS && err != VK_INCOMPLETE) { + return {}; + } } while (err == VK_INCOMPLETE); return groups; } -- cgit v1.2.3