Ошибка создания экземпляра Vulkan

#c #graphics #gpu #vulkan

#c #графика #графический процессор #vulkan

Вопрос:

У меня есть программа vulkan, которая запущена на моем ноутбуке, но не работает на моем рабочем столе. Ошибка:

 HeatMethod: ../libraries/vulkansdk-linux/1.2.154.0/source/Vulkan-Headers/include/vulkan/vulkan.hpp:13143: typename vk::ResultValueType<vk::UniqueHandle<Type, Dispatch> >::type vk::createResultValue(vk::Result, Tamp;, const char*, const typename vk::UniqueHandleTraits<Type, Dispatch>::deleteramp;) [with T = vk::Instance; D = vk::DispatchLoaderStatic; typename vk::ResultValueType<vk::UniqueHandle<Type, Dispatch> >::type = vk::ResultValue<vk::UniqueHandle<vk::Instance, vk::DispatchLoaderStatic> >; typename vk::UniqueHandleTraits<Type, Dispatch>::deleter = vk::ObjectDestroy<vk::NoParent, vk::DispatchLoaderStatic>]: Assertion `result == Result::eSuccess' failed.
  

Я использовал комментарии, чтобы отследить проблему, и обнаружил, что это происходит при создании экземпляра:

 // Global scope
const std::vector<const char*> VALIDATION_LAYERS = {
    "VK_LAYER_KHRONOS_validation",
};

   // Setup general information about the current application
    vk::ApplicationInfo program_info(
        "Vulkan Engine",
        VK_MAKE_VERSION(1, 0, 0),
        "No Engine",
        VK_MAKE_VERSION(1, 0, 0),
        VK_API_VERSION_1_2);

    if(!CheckAvailableLayers())
        RecordLogError("Validation layers requested, but not available!");

    vector<const char*> required_extensions;
    if(!RequestExtensions(required_extensions))
        RecordLogError("Missing a required extension");
    // Create Vulkan instance to communicate with the loader
    vk::InstanceCreateInfo createInfo(
        {},
        amp;program_info,
        static_cast<uint32_t>(VALIDATION_LAYERS.size()),
        VALIDATION_LAYERS.data(),
        static_cast<uint32_t>(required_extensions.size()),
        required_extensions.data());
    auto [result, instance] = vk::createInstanceUnique(createInfo);
  

Сама ошибка — это ошибка утверждения в заголовке hpp, поэтому она довольно загадочная. Я не уверен, в чем проблема.

Комментарии:

1. Возможно, сначала очевидный вопрос: может ли ваш рабочий стол запускать другие программы vulkan?

2. Я только проверил информацию о vulkan, но она работает без проблем.

3. Хорошо, ошибка говорит только о том, что your VkResult is not VK_SUCESS , так какой код ошибки вы получили вместо этого?

4. Также используйте обновленный SDK. Если это какая-то проблема с vkhpp, то, пока мы размышляем над этим здесь, она, возможно, была давно исправлена.

5. Ошибка Layernotpresent

Ответ №1:

Проблема заключалась в попытке установить уровни проверки в сценарии сборки:

os.environ['VK_INSTANCE_LAYERS'] = 'VK_LAYER_LUNARG_standard_validation'

Удаление этой строки решило проблему.