Brief Task
Rather then having this debug utils object names be contained within vk::instance, I think having these be external allow for optional opt-in moments for the users if they want to include these into their code.
As we integrate more debug utility for labels and objects naming, managing these optional function pointers can be come quite a bit to be handled by vk::instance.
Responsibilities solely for resolving and storing instance-level debugging function pointers. Isolating from vk::instance, which allows for being opt-in if needed.
These objects would be instantiated as the following:
PFN_vkSetDebugUtilsObjectNameEXT vk_set_debug_utils_object_name_ext =
reinterpret_cast<PFN_vkSetDebugUtilsObjectNameEXT>(
vkGetInstanceProcAddr(m_instance,
"vkSetDebugUtilsObjectNameEXT"));
Task Completion
vk::instance api_instance = ...;
vk::debug_extension_loader debug_extension(api_instance);
// Returns function pointer to vkSetDebugUtilsObjectNameEXT that is usable
const auto vkSetDebugUtilsObjectNameEXT = debug_extension.debug_utils_object_name_ext();
Brief Task
Rather then having this debug utils object names be contained within
vk::instance, I think having these be external allow for optional opt-in moments for the users if they want to include these into their code.As we integrate more debug utility for labels and objects naming, managing these optional function pointers can be come quite a bit to be handled by
vk::instance.Responsibilities solely for resolving and storing instance-level debugging function pointers. Isolating from
vk::instance, which allows for being opt-in if needed.These objects would be instantiated as the following:
PFN_vkSetDebugUtilsObjectNameEXT vk_set_debug_utils_object_name_ext = reinterpret_cast<PFN_vkSetDebugUtilsObjectNameEXT>( vkGetInstanceProcAddr(m_instance, "vkSetDebugUtilsObjectNameEXT"));Task Completion