Skip to content

Commit 53a036c

Browse files
Print missing instance extensions
1 parent 3b981d3 commit 53a036c

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

lvk/vulkan/VulkanClasses.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3782,7 +3782,7 @@ lvk::VulkanContext::VulkanContext(const lvk::ContextConfig& config, void* window
37823782

37833783
glslang_initialize_process();
37843784

3785-
createInstance();
3785+
LVK_ASSERT(createInstance().isOk());
37863786

37873787
if (!surface) {
37883788
if (config_.enableHeadlessSurface) {
@@ -6237,7 +6237,7 @@ lvk::AccelStructSizes lvk::VulkanContext::getAccelStructSizes(const AccelStructD
62376237
};
62386238
}
62396239

6240-
void lvk::VulkanContext::createInstance() {
6240+
lvk::Result lvk::VulkanContext::createInstance() {
62416241
vkInstance_ = VK_NULL_HANDLE;
62426242

62436243
// check if we have validation layers in the system
@@ -6394,6 +6394,20 @@ void lvk::VulkanContext::createInstance() {
63946394
};
63956395
#endif // defined(VK_EXT_layer_settings) && VK_EXT_layer_settings
63966396

6397+
// check extensions
6398+
{
6399+
std::string missingExtensions;
6400+
for (const char* ext : enabledInstanceExtensionNames_) {
6401+
if (!hasExtension(ext, allInstanceExtensions))
6402+
missingExtensions += "\n " + std::string(ext);
6403+
}
6404+
if (!missingExtensions.empty()) {
6405+
MINILOG_LOG_PROC(minilog::FatalError, "Missing Vulkan instance extensions: %s\n", missingExtensions.c_str());
6406+
assert(false);
6407+
return Result(Result::Code::RuntimeError);
6408+
}
6409+
}
6410+
63976411
const VkApplicationInfo appInfo = {
63986412
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
63996413
.pNext = nullptr,
@@ -6456,6 +6470,8 @@ void lvk::VulkanContext::createInstance() {
64566470
for (const VkExtensionProperties& extension : allInstanceExtensions) {
64576471
LLOGL(" %s\n", extension.extensionName);
64586472
}
6473+
6474+
return Result();
64596475
}
64606476

64616477
void lvk::VulkanContext::createHeadlessSurface() {

lvk/vulkan/VulkanClasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ class VulkanContext final : public IContext {
642642
SubmitHandle handle_ = {}; // last use
643643
};
644644

645-
void createInstance();
645+
lvk::Result createInstance();
646646
void createSurface(void* window, void* display);
647647
void createHeadlessSurface();
648648
void querySurfaceCapabilities();

0 commit comments

Comments
 (0)