我正在尝试在成功创建实例,表面和设备后创建交换链。但是,vkCreateSwapchainKHR使用VK_ERROR_OUT_OF_DEVICE_MEMORY失败。
这意味着什么,可能的原因是什么?
设备信息:
API转储: https://pastebin.com/pXebGX5t
编辑:我认为这可能与pNext在这里有价值有关。它在我的代码中设置为NULL,因此可能会发生更深层次的事情,就像绑定问题一样......
vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) returns VkResult VK_SUCCESS (0):
physicalDevice: VkPhysicalDevice = 0000000004D768D0
pCreateInfo: const VkDeviceCreateInfo* = 000000000022EAD0:
sType: VkStructureType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO (3)
pNext: const void* = 000000000022EB20
flags: VkDeviceCreateFlags = 0
答案 0 :(得分:1)
根据转储,您的交换链请求格式是深度格式(VK_FORMAT_D24_UNORM_S8_UINT
)。
这是非常可疑的 验证层也可能检查(应该支持vs请求格式检查)。所以请帮自己一个忙,enable them。
答案 1 :(得分:0)
对于枚举vulkan扩展名时也更早遇到VK_ERROR_OUT_OF_DEVICE_MEMORY错误的任何人(包括有关丢失ICD的后续警告等):
在我检查了每个编译和链接器标志并将所有代码替换为运行良好的演示多维数据集代码后,似乎旧的vulkan-1.dll仍位于可执行文件旁边。该dll可能与链接的.lib不兼容。删除该dll后,错误消失了!
碰到这种问题通常是Windows的事情,所以我希望这可以对其他人有所帮助。必须以某种方式将它复制到一个CMake部署安装程序运行中。