У меня установлена программа Vulkan 1.0.5.0 с использованием программы установки LunarG, и она работает без включения каких-либо слоев.
Когда я пытаюсь включить любой из:
VK_LAYER_LUNARG_param_checker
VK_LAYER_LUNARG_api_dump
VK_LAYER_LUNARG_standard_validation
Я получаю нарушение прав доступа в VkLayer_param_checker.dll или VkLayer_api_dump.dll при попытке вызвать vkCreateInstance.
Они также терпят неудачу, если я пытаюсь загрузить любой из них в качестве единственного слоя.
Файлы JSON присутствуют в реестре под ExplicitLayers, и сами файлы выглядят нормально.
Я также получаю сообщение в Visual Studio, что DLL загружены.
Эти слои работали в более старой тестовой программе 1.0.3.1, что странно, и я могу включить все следующее:
VK_LAYER_LUNARG_device_limits
VK_LAYER_LUNARG_draw_state
VK_LAYER_LUNARG_image
VK_LAYER_LUNARG_mem_tracker
VK_LAYER_LUNARG_object_tracker
VK_LAYER_LUNARG_screenshot
VK_LAYER_LUNARG_swapchain
VK_LAYER_GOOGLE_threading
VK_LAYER_GOOGLE_unique_objects
VK_LAYER_VALVE_steam_overlay
Существует ли определенный порядок загрузки слоев? Я уверен, что где-то читал, но не могу найти это снова. Любая помощь приветствуется.
Я нашел проблему. И мне немного стыдно признать, что это неинициализированная переменная.
После того, как я перешел на Vulkan 1.0.8, я смог найти и загрузить правильный VkLayer_parameter_validation.dll, который был встроен в отладку.
Проблема в том, что в информации о моем приложении мне не удалось назначить имя pEngineName. Даже назначая ""
работал бы. Однако я ничего не назначил. Учитывая, что это неназначенный const char*
Мгновенно переносит нас к неопределенному поведению земли. Вулкан не должен назначать его nullptr
либо, в противном случае слой пометил бы его как таковой и фактически дал бы мне этот вывод. (Но я не виню в этом)
Технически я мог бы избежать этого. Я сам виноват в предположении, что это будет ноль или просто ""
, Я уверен, что я также где-то читал, что вам нужно убедиться, что все было назначено во всех структурах Вулкана.
Я надеюсь, что это может помешать людям совершить эту же ошибку, или если у вас есть что-то подобное и вы столкнетесь с этим вопросом, который побудит вас ПРОВЕРИТЬ ВАШИ ПЕРЕМЕННЫЕ!
Других решений пока нет …