[英]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.