Исключение Windows о amdvlk64.dll при попытке создать экземпляр vulkan - PullRequest
0 голосов
/ 05 июля 2019

Я пытался использовать vulkan, но не могу заставить его работать.Когда я пытаюсь запустить первый пример (скомпилированный с VS 2019) с SDK (01-init_instance.cpp), я получаю это исключение при создании экземпляра Vulkan:

Exception thrown at 0x00007FFFE7EDAD11 (amdvlk64.dll) in game.exe: 0xC0000005:
Access violation reading location 0xFFFFFFFFFFFFFFFF.

Я пробовал его с app_info.apiVersion установлен на VK_API_VERSION_1_0 и VK_API_VERSION_1_1.Также попытался установить inst_info.pApplicationInfo в NULL, но я не получил никаких изменений в поведении.

Я использую amd gpu AMD Radeon (TM) R9 390 Series, версия драйвера 17.1.1 и есть некоторые другие значенияо vulkan, которые Vulkan™ Driver Version 1.5.0 и Vulkan™ API Version 1.0.39 (все выбраны из интерфейса драйвера amd)

А вот пример:

#include <iostream>
#include <cstdlib>
#include <util_init.hpp>

#define APP_SHORT_NAME "vulkansamples_instance"

int main(int, char *[]) {

    VkApplicationInfo app_info = {};
    app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
    app_info.pNext = NULL;
    app_info.pApplicationName = APP_SHORT_NAME;
    app_info.applicationVersion = 1;
    app_info.pEngineName = APP_SHORT_NAME;
    app_info.engineVersion = 1;
    app_info.apiVersion = VK_API_VERSION_1_0;

    VkInstanceCreateInfo inst_info = {};
    inst_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
    inst_info.pNext = NULL;
    inst_info.flags = 0;
    inst_info.pApplicationInfo = &app_info;
    inst_info.enabledExtensionCount = 0;
    inst_info.ppEnabledExtensionNames = NULL;
    inst_info.enabledLayerCount = 0;
    inst_info.ppEnabledLayerNames = NULL;

    VkInstance inst;
    VkResult res;

    res = vkCreateInstance(&inst_info, NULL, &inst);
    if (res == VK_ERROR_INCOMPATIBLE_DRIVER) {
        std::cout << "cannot find a compatible Vulkan ICD\n";
        exit(-1);
    } else if (res) {
        std::cout << "unknown error\n";
        exit(-1);
    }

    vkDestroyInstance(inst, NULL);


    return 0;
}

Надеюсь, кто-то может помочь, как, очевидно, никто наИнтернет, кажется, понимает, почему это происходит.

1 Ответ

0 голосов
/ 06 июля 2019

Версия драйвера 17.1.1 очень старая (IIRC означает январь 2017 г.).В идеальном мире это должно работать, но, как вы знаете, могут быть некоторые проблемы с совместимостью.

Текущие драйверы находятся на сайте поддержки AMD .Они предлагают «рекомендуемый» или более актуальный «дополнительный» драйвер.Никогда не было проблем с «опционально», но это может привести к частому обновлению.

...