@@ -106,6 +106,88 @@ VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(VkDebugReportFlagsEXT flag,
106
106
return VK_FALSE;
107
107
}
108
108
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
+
109
191
// Convert required features given as a string array to
110
192
// VkPhysicalDeviceFeatures.
111
193
amber::Result NamesToVulkanFeatures (
@@ -761,7 +843,7 @@ amber::Result ConfigHelperVulkan::CreateVulkanInstance(
761
843
vkCreateInstance (&instance_info, nullptr , &vulkan_instance_);
762
844
if (result != VK_SUCCESS) {
763
845
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) ;
765
847
return amber::Result (error_message.str ());
766
848
}
767
849
return {};
@@ -1266,9 +1348,10 @@ amber::Result ConfigHelperVulkan::CreateDeviceWithFeatures2(
1266
1348
}
1267
1349
1268
1350
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));
1272
1355
}
1273
1356
return {};
1274
1357
}
0 commit comments