Open Erfan-Ahmadi opened 2 months ago
Btw it would be enough to just
log("Short Message: `%s` in `%s` at line %p.",system::ILogger::ELL_ERROR,__FILE__,__FUNCTION__,__LINE__);
Instead of writing custom exact log messages, because we're an Open Source project, source is there and the extended comments about why something fails are in the source anyway.
now thinking of it, it would be useful to also have an _NBL_COMMIT_HASH_
in there too in case someone runs non-development exes without a local copy of the source
Exactly what i was thinking about
Problem
Many device functions return a boolean to indicate a successful call to lower level api (Vulkan) function. But the return value is often ignored making it hard to debug the cause of the problem. Even if not ignored, simply returning false on a failure doesn't help much pinpointing the exact cause. There is also
createXXX
functions that may return nullptr due to reasons such as invalid creation params for example insideILogicalDevice::createFramebuffer
may fail due to 30+ reasons specified in vulkan specification and handled manually in
IFramebuffer::SCreationParams::validate
that's why we need to "error log" the exact cause of the failure each time we
return false
on device callsSolution
use
system::logger_opt_ptr m_logger
in ILogicalDevice` to log every possible scenario that fails.