為了開始學習 vulkan,我想確保我了解程式如何呼叫并實際使用 vulkan。所以我知道開始開發人員會下載 vulkan 頭檔案或包含官方 Khronos vulkan 頭檔案的 vulkan SDK 包。我下載了 SDK,在那里我找到了 vulkan 頭檔案,并將我的程式鏈接到提供的 vulkan-1.lib。我的第一個問題是 vulkan-1.lib 是 vulkan 的實際加載程式庫嗎?或者它是一種在我的 Windows 系統中搜索實際 vulkan 加載程式 vulkan-1.dll 的匯入庫?然后是 vulkan-1.dll 實際在我的系統上找到任何 vulkan 驅動程式嗎?如果是這樣,我可以查看的標準 vulkan 驅動程式安裝在哪里?
uj5u.com熱心網友回復:
vulkan-1.lib只是vulkan-1.dll加載器的鏈接庫。
加載程式如何與可安裝客戶端驅動程式介面的規范可以在這里找到 存檔。在 Windows 上,它將在注冊表項中搜索HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{Adapter GUID}\000X\VulkanDriverName包含驅動程式路徑的 JSON 檔案的路徑。在我的系統上,驅動程式位于C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_{some base64 hash}/nvoglv64.dll,它代表NVida OpenGL 和 Vulkan 64 位 ICD。它同時包含 OpenGL 和 Vulkan,因為它們有很多相似之處,最大的是它們都通過gdi32.dll與內核模式顯示微型埠驅動程式進行通信。
在驅動程式內部實際上并沒有什么可看的,因為它匯出的主要內容vk_icdGetInstanceProcAddr是加載程式用來查詢所有驅動程式函式的函式。加載器將建立調度表來處理呼叫所有層和驅動程式(直到你選擇了一個物理設備,它必須查詢每個驅動程式)。在驅動程式內部,它基本上實作了 Vulkan 中的每個函式,并通過vk_icdGetInstanceProcAddr函式公開它們。如果您想了解更多關于它在做什么的資訊,最好閱讀Vulkan Spec 存檔。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460717.html
