vulkan-计算队列家族-vkGetDeviceQueue-访问冲突

时间:2019-01-01 20:42:33

标签: c++ access-violation vulkan

请以我仅在卡(AMD r9 380)上进行过测试的方式为我作序。

vkGetPhysicalDeviceQueueFamilyProperties()找到3个QueueFamilies。其中一个包含所有正常位(图形,计算,传输),一个缺失的图形,以及一个缺失的计算和图形。我认为这是因为缺少的一个图形是计算队列系列,而缺少的一个计算和图形是传输队列系列。

vkGetDeviceQueue(instance, computeFamily, 0, &pComputeQueue); 实例为VkInstance,computeFamily为uint32_t索引值,0为请求队列的索引,pComputeQueue为VkQueue。尝试使用此参数运行此功能会生成Vulkan01.exe: 0xC0000005: Access violation writing location 0x0000000000000000.

vkGetDeviceQueue()对于“图形”,“演示文稿”(按预期返回与我的实现中的图形相同的图形)和传输返回的效果很好。

所以问题是:为什么在尝试将句柄返回到列出的队列系列之一时会出错?可能只是我的卡? (某些Sascha Williams示例也不会在我的计算机上运行,​​因此我认为我的卡可能有些功能太旧了?)

1 个答案:

答案 0 :(得分:1)

  

为什么在尝试将句柄返回到列出的队列家族之一时会出错?

因为他们不是“您的”队列家庭。它们是设备的队列系列。

仅当您在设备创建时询问时,它们才成为“您的”队列家族。您的VkDeviceCreateInfo结构必须有一个VkDeviceQueueCreateInfo,其中有一个queueFamilyIndex引用计算队列系列,并从该系列请求(至少)一个队列。