Привет всем.
У меня здесь проблема.
В Vulkan 1.2 при вызове vkDestroyInstance
либо VK_LAYER_KHRONOS_validation
или VK_LAYER_LUNARG_standard_validation
слои дают мне следующие [раздражающие] выходные данные:
UNASSIGNED-ObjectTracker-ObjectLeak(ERROR / SPEC): msgNum: 0 - OBJ ERROR :
VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT object VkDevice 0x215e63ab750[] has not been destroyed.
и
VUID-vkDestroyInstance-instance-00629(ERROR / SPEC): msgNum: 0 - OBJ ERROR :
For VkInstance 0x215e5fd6dd0[], VkSurfaceKHR 0x2aefa40000000001[] has not been destroyed.
и так далее и так далее.
Дело в том: Я уничтожаю VkSurfaceKHR до уничтожения экземпляра , а также уничтожаю устройство .
XISCALL Win32VkContext::~Win32VkContext()
{
...
vkDestroyInstance(mVkInstance, nullptr);
... // some non-vulkan code
}
XResult XISCALL Win32VkContext::Terminate() noexcept
{
...
vkDestroySurfaceKHR(mVkInstance, mVkSurface, nullptr);
...
if (mVkDevice != VK_NULL_HANDLE) {
vkDeviceWaitIdle(mVkDevice);
vkDestroyDevice(mVkDevice, nullptr);
}
...
}
Функция Terminate
вызывается ( отладчик не может лгать =) ) из внешнего слоя намного раньше деструктора ...
Если это не ошибка Vulkan, так что это может быть? Я много гуглил, но не смог найти ничего, что могло бы решить эту проблему ...
Помещение vkDestroyInstance
в конец функции Terminate
дает те же результаты. Помещение нити в сон также не помогло.
UPD : я думал, что это также может быть ошибка драйвера.