2017-04-20 12 views
1

API仕様(http://vulkan-spec-chunked.ahcox.com/ch02s09.html)でVulkanを学習していますが、物理デバイスがVulkanにどのようにあるかについては少し混乱しています。私はIntelの物理ビデオカードデバイスは1つしか持っていませんが、vkEnumeratePhysicalDevicesは2を返します。デバイスは同じですが、キューフラグは異なっているようです。私はフラグ値16と32を持っています)。ここVulkan物理デバイス

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つの物理デバイスがある理由を私は理解するのに役立ちますか?

+1

であり、カウントは0?バグTBHのようだ。 –

+0

ドライバのインストールに失敗したようです。私はそれをアンインストールしようとすると、その後いくつかのデバイスが残っている場合は、それは手動クリーンアップが必要な場合があります。 – krOoze

+0

ラチェットフリーク、ここでのカウントは 'queueCountはこのキューファミリのキューの符号なし整数カウントです'です。私のバグではないようです。 – ton

答えて

2

第2のデバイスのcount=0は好奇心が強いです。さらに深刻なことに、そのflagstsVBの値が破損しています(49flags1の有効な値ではありません。tsVBは無効です)。

これは、あなたのシステムに無関係な*.jsonファイルが1つあるということになります。

これらの* .jsonファイルには、コンピュータに存在するICDに関する情報が保存されます。それらはstandard location(s)に格納されています。

+ vkGetPhysicalDevicePropertiesは、上記の*.jsonファイルを読み取り、その内容を返す以外は何もしません。 vkCreateDeviceのような "本当の"ものを呼び出すことは、ひどくインストールされたドライバではうまくいかないと思う。

この問題を明確にしたのは、あなたの好奇心にかなっています。私はLinuxディストリビューションを信じて、ファイルを元のパッケージにマップするコマンドがあります。これはおそらく、以前のドライバの不正なクリーンアップ、またはおそらく新しいもののインストールスクリプトのバグに関するものでしょう。以前はこの問題が少なくともone personでした。

私がここで説明したことに基づいて、これは比較的良質のバグだと思う。最初のデバイスは正常に動作するはずです。そして、あなたはちょうど2番目を無視することができます。または、vkEnumeratePDに表示されないように、その*.jsonマニフェストを削除するだけです。

+0

"2番目の"物理デバイスのフラグとtsVBについては、1回実行するたびに汚い値とランダムな値があるようです。だから私はそれが空のメモリポインタだと思う、カウントがゼロであるので、意味をなさないかもしれません。 – ton

関連する問題