繁体   English   中英

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

[英]vulkan - compute queuefamily - vkGetDeviceQueue - access violation

我只在卡(AMD r9 380)上对此进行过测试。

vkGetPhysicalDeviceQueueFamilyProperties()查找3个QueueFamilies。 其中一个包含所有正常位(图形,计算,传输),一个缺失的图形,以及一个缺失的计算和图形。 我已经把它当作是缺少的一个图形是Compute队列系列,而缺少的一个计算和图形是Transfer队列系列。

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

vkGetDeviceQueue()对于Graphics,Presentation(按预期返回与我的实现中的图形相同的图形)和传输返回的效果很好。

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

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

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

如果您在设备创建时要求它们 ,它们只会成为“您的”队列系列。 您的VkDeviceCreateInfo结构必须具有一个VkDeviceQueueCreateInfo ,该VkDeviceQueueCreateInfo具有一个queueFamilyIndex引用计算队列系列,并从该系列请求(至少)一个队列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM