Skip to content

Commit 6dac142

Browse files
authored
Add VK instance and device creation logging. (#1072)
Add the result string into the error logs for device and instance creation in order to provide a bit more context as to what failed.
1 parent f4303cd commit 6dac142

File tree

1 file changed

+87
-4
lines changed

1 file changed

+87
-4
lines changed

samples/config_helper_vulkan.cc

+87-4
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,88 @@ VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(VkDebugReportFlagsEXT flag,
106106
return VK_FALSE;
107107
}
108108

109+
std::string to_str(VkResult result) {
110+
switch (result) {
111+
case VK_SUCCESS:
112+
return "SUCCESS";
113+
case VK_NOT_READY:
114+
return "NOT READY";
115+
case VK_TIMEOUT:
116+
return "TIMEOUT";
117+
case VK_EVENT_SET:
118+
return "EVENT_SET";
119+
case VK_EVENT_RESET:
120+
return "EVENT_RESET";
121+
case VK_INCOMPLETE:
122+
return "INCOMPLETE";
123+
case VK_ERROR_OUT_OF_HOST_MEMORY:
124+
return "ERROR_OUT_OF_HOST_MEMORY";
125+
case VK_ERROR_OUT_OF_DEVICE_MEMORY:
126+
return "ERROR_OUT_OF_DEVICE_MEMORY";
127+
case VK_ERROR_INITIALIZATION_FAILED:
128+
return "ERROR_INITIALIZATION_FAILED";
129+
case VK_ERROR_DEVICE_LOST:
130+
return "ERROR_DEVICE_LOST";
131+
case VK_ERROR_MEMORY_MAP_FAILED:
132+
return "ERROR_MEMORY_MAP_FAILED";
133+
case VK_ERROR_LAYER_NOT_PRESENT:
134+
return "ERROR_LAYER_NOT_PRESENT";
135+
case VK_ERROR_EXTENSION_NOT_PRESENT:
136+
return "ERROR_EXTENSION_NOT_PRESENT";
137+
case VK_ERROR_FEATURE_NOT_PRESENT:
138+
return "ERROR_FEATURE_NOT_PRESENT";
139+
case VK_ERROR_INCOMPATIBLE_DRIVER:
140+
return "ERROR_INCOMPATIBLE_DRIVER";
141+
case VK_ERROR_TOO_MANY_OBJECTS:
142+
return "ERROR_TOO_MANY_OBJECTS";
143+
case VK_ERROR_FORMAT_NOT_SUPPORTED:
144+
return "ERROR_FORMAT_NOT_SUPPORTED";
145+
case VK_ERROR_FRAGMENTED_POOL:
146+
return "ERROR_FRAGMENTED_POOL";
147+
case VK_ERROR_UNKNOWN:
148+
return "ERROR_UNKNOWN";
149+
case VK_ERROR_OUT_OF_POOL_MEMORY:
150+
return "ERROR_OUT_OF_POOL_MEMORY";
151+
case VK_ERROR_INVALID_EXTERNAL_HANDLE:
152+
return "ERROR_INVALID_EXTERNAL_HANDLE";
153+
case VK_ERROR_FRAGMENTATION:
154+
return "ERROR_FRAGMENTATION";
155+
case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS:
156+
return "ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS";
157+
case VK_PIPELINE_COMPILE_REQUIRED:
158+
return "PIPELINE_COMPILE_REQUIRED";
159+
case VK_ERROR_SURFACE_LOST_KHR:
160+
return "ERROR_SURFACE_LOST";
161+
case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:
162+
return "ERROR_NATIVE_WINDOW_IN_USE";
163+
case VK_SUBOPTIMAL_KHR:
164+
return "SUBOPTIMAL";
165+
case VK_ERROR_OUT_OF_DATE_KHR:
166+
return "ERROR_OUT_OF_DATE";
167+
case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:
168+
return "ERROR_INCOMPATIBLE_DISPLAY";
169+
case VK_ERROR_VALIDATION_FAILED_EXT:
170+
return "ERROR_VALIDATION_FAILED";
171+
case VK_ERROR_INVALID_SHADER_NV:
172+
return "ERROR_INVALID_SHADER";
173+
case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:
174+
return "ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT";
175+
case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT:
176+
return "ERROR_FULL_SCREEN_EXCULSIVE_MODE_LOST";
177+
case VK_THREAD_IDLE_KHR:
178+
return "THREAD_IDLE";
179+
case VK_THREAD_DONE_KHR:
180+
return "THREAD_DONE";
181+
case VK_OPERATION_DEFERRED_KHR:
182+
return "OPERATION_DEFERRED";
183+
case VK_OPERATION_NOT_DEFERRED_KHR:
184+
return "OPERATION_NO_DEFERRED";
185+
default:
186+
break;
187+
}
188+
return "VkResult(" + std::to_string(static_cast<uint32_t>(result)) + ")";
189+
}
190+
109191
// Convert required features given as a string array to
110192
// VkPhysicalDeviceFeatures.
111193
amber::Result NamesToVulkanFeatures(
@@ -761,7 +843,7 @@ amber::Result ConfigHelperVulkan::CreateVulkanInstance(
761843
vkCreateInstance(&instance_info, nullptr, &vulkan_instance_);
762844
if (result != VK_SUCCESS) {
763845
std::stringstream error_message;
764-
error_message << "Unable to create vulkan instance (code=" << result << ")";
846+
error_message << "Unable to create vulkan instance: " << to_str(result);
765847
return amber::Result(error_message.str());
766848
}
767849
return {};
@@ -1266,9 +1348,10 @@ amber::Result ConfigHelperVulkan::CreateDeviceWithFeatures2(
12661348
}
12671349

12681350
amber::Result ConfigHelperVulkan::DoCreateDevice(VkDeviceCreateInfo* info) {
1269-
if (vkCreateDevice(vulkan_physical_device_, info, nullptr, &vulkan_device_) !=
1270-
VK_SUCCESS) {
1271-
return amber::Result("Unable to create vulkan device");
1351+
auto result =
1352+
vkCreateDevice(vulkan_physical_device_, info, nullptr, &vulkan_device_);
1353+
if (result != VK_SUCCESS) {
1354+
return amber::Result("Unable to create vulkan device: " + to_str(result));
12721355
}
12731356
return {};
12741357
}

0 commit comments

Comments
 (0)