尝试创建vulkan实例时有关amdvlk64.dll的Windows异常

时间:2019-07-05 18:38:38

标签: windows 64-bit amd vulkan

我尝试使用vulkan,但无法正常工作。当我尝试使用SDK(01-init_instance.cpp)运行给定的第一个示例(与VS 2019一起编译)时,在创建Vulkan实例时遇到此异常:

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

我尝试将app_info.apiVersion设置为VK_API_VERSION_1_0VK_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.0Vulkan™ 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 :(得分:0)

驱动程序版本17.1.1非常旧(IIRC表示2017年1月)。在理想的情况下,它应该可以工作,但是根据您的经验,可能会存在一些兼容性问题。

当前驱动程序位于AMD Support site。他们提供“推荐”或更多当前的“可选”驱动器。从未对“可选”有任何问题,但可能会更频繁地进行更新。