【发布时间】:2020-05-03 20:24:59
【问题描述】:
情况
我使用 VulkanAPI 编写了一个简单的 c++ 代码,但是当我尝试获取我的物理设备时遇到了错误。
硬件/软件
操作系统:基本操作系统 5.1.3 Hera x86_64
笔记本型号:80Q5 Lenovo G70-35
CPU:AMD A8-6410 APU with AMD Radeon R5 Graphics (4) @ 2.000
GPU:AMD Radeon R4/R5 显卡
你可以找到支持的设备列表here(我想)
代码
#include <iostream>
#include "vulkan/vulkan.h"
VkInstance instance;
void assert(VkResult result) {
if (result != VK_SUCCESS)
std::cout << "error: " << result << std::endl;
}
int main() {
VkApplicationInfo appInfo;
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
appInfo.pNext = nullptr;
appInfo.pApplicationName = "VulkanAPI";
appInfo.applicationVersion = VK_MAKE_VERSION(0, 0, 0);
appInfo.pEngineName = "VulkanAPI Engine";
appInfo.engineVersion = VK_MAKE_VERSION(0, 0, 0);
appInfo.apiVersion = VK_API_VERSION_1_2;
VkInstanceCreateInfo instanceInfo;
instanceInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
instanceInfo.pNext = nullptr;
instanceInfo.flags = 0;
instanceInfo.pApplicationInfo = &appInfo;
instanceInfo.enabledLayerCount = 0;
instanceInfo.ppEnabledLayerNames = nullptr;
instanceInfo.enabledExtensionCount = 0;
instanceInfo.ppEnabledExtensionNames = nullptr;
VkResult result = vkCreateInstance(&instanceInfo, nullptr, &instance);
assert(result); // works fine
uint32_t physicalDevicesCount = 0;
result = vkEnumeratePhysicalDevices(instance, &physicalDevicesCount, nullptr);
assert(result); // prints -3, which is equivalent to VK_ERROR_INITIALIZATION_FAILED
std::cout << physicalDevicesCount << std::endl;
return 0;
}
问题
每当我编译并运行此代码时,它都会抛出/打印错误:
【问题讨论】:
-
可以尝试使用VK_API_VERSION_1_0等较低的API,尝试重新安装显卡驱动。
-
最好不要交叉发布。将问题联系在一起:community.khronos.org/t/…
-
@krOoze 如果您愿意,您可以发布您的答案,以便我接受。