vkCreateSwapchainKHR 失败 VK_ERROR_OUT_OF_DEVICE_MEMORY

vkCreateSwapchainKHR fails with VK_ERROR_OUT_OF_DEVICE_MEMORY

我正在尝试在成功创建实例、表面和设备后创建交换链。但是,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

根据转储,您的交换链请求的格式是深度格式 (VK_FORMAT_D24_UNORM_S8_UINT)。

这非常可疑。
还有一些验证层可能会检查(应该支持与请求的格式检查)。所以帮自己一个忙 enable them.

对于任何人来说,在枚举 vulkan 扩展时,也 运行更早地进入 VK_ERROR_OUT_OF_DEVICE_MEMORY 错误(包括有关丢失 ICD 等的后续警告):

在我检查了每个编译器和链接器标志并将所有代码替换为运行很好的演示多维数据集代码之后,似乎是一个较旧的vulkan-1.dll 仍然坐在可执行文件旁边。该 dll 可能与链接的 .lib 不兼容。删除该 dll 后,错误消失了!

通常 windows 到 运行 这种问题,所以我希望这可以帮助其他人。它必须以某种方式复制到 CMake 部署安装程序之一 运行s.