【发布时间】:2017-09-16 09:55:38
【问题描述】:
我正在通过 API 规范 (http://vulkan-spec-chunked.ahcox.com/ch02s09.html) 学习 Vulkan,但我对 Vulkan 中的物理设备的方式有点困惑。我只有一个英特尔物理显卡设备,但vkEnumeratePhysicalDevices 返回计数为 2。这些设备是相同的,但队列标志似乎不同,并且队列标志没有记录(实际上它们是,但仅限于标志 8,在第二个队列我确实有标志值 16 和 32)。
typedef enum VkQueueFlagBits {
VK_QUEUE_GRAPHICS_BIT = 0x00000001,
VK_QUEUE_COMPUTE_BIT = 0x00000002,
VK_QUEUE_TRANSFER_BIT = 0x00000004,
VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
} VkQueueFlagBits;
这是我的 vulkan 代码的输出:
GPU count: 2 ( physical devices )
Physical Device 0:
Device API version: 1.0.42 - 4194346
Device Vendor Id: 0x8086
Device Id: 1916
Device Driver version: 0.0.1 - 1
Device type: 1
Device Name: Intel(R) HD Graphics 520 (Skylake GT2)
Device Pipeline UID: f557cfd4
Queue Properties:
Flags: 7
Count: 1
ts Valid Bits: 24
Physical Device 1:
Device API version: 1.0.42 - 4194346
Device Vendor Id: 0x8086
Device Id: 1916
Device Driver version: 0.0.1 - 1
Device type: 1
Device Name: Intel(R) HD Graphics 520 (Skylake GT2)
Device Pipeline UID: f557cfd4
Queue Properties:
Flags: 49
Count: 0
ts Valid Bits: 1
有人可以帮我理解为什么同一个真实设备有 2 个物理设备并且缺少标志?
【问题讨论】:
-
并且计数为 0?似乎是一个错误 TBH。
-
似乎驱动程序安装失败。我会尝试卸载它,如果之后留下某些设备,则可能需要手动清理。
-
棘轮怪胎,这里的计数是
queueCount is the unsigned integer count of queues in this queue family。对我来说似乎不是一个错误。 -
krOoze,我已经从源代码手动构建并安装了它。 SDK 示例运行良好...... mesa 和 Xorg 都很好。除了这个,没有什么是奇怪的。
-
计数为 0 意味着您将无法从该家庭获取队列,因此枚举它是没有意义的。