執行階段依附元件
magma 驅動程式庫和程式庫應已建構至完整的 Fuchsia 映像檔。系統會根據建構時選取的板子,建構並載入正確的驅動程式庫。
元件資訊清單
加入下列項目,啟用 Vulkan 驅動程式庫的存取權:
CML
如果是使用 .cml 資訊清單宣告的元件:
{
include: [
"vulkan/client.shard.cml"
],
use: [
{ protocol: "fuchsia.media.ProfileProvider" },
],
...
}
fuchsia.media.ProfileProvider 能力為選用性質,但建議使用。
必要能力路徑
使用 Vulkan 的元件必須將下列 FIDL 服務路徑傳送至該元件:
fuchsia.sysmem.Allocatorfuchsia.sysmem2.Allocatorfuchsia.vulkan.loader.Loaderfuchsia.tracing.provider.Registryfuchsia.logger.LogSinkfuchsia.scheduler.RoleManager- 選用,但強烈建議使用;只有在擔心 Vulkan ICD 中使用期限執行緒會造成安全問題時,才應省略這個步驟。如未指定,Vulkan ICD 會為內部執行緒使用預設執行緒優先順序,這可能會導致效能不佳。未納入vulkan/client.shard.cml,因此必須手動use。fuchsia.media.ProfileProvider- 已淘汰,並取代為fuchsia.scheduler.RoleManager。
測試元件可在非密封領域中執行,藉此取得這些功能:
# BUILD.gn
fuchsia_test_component("my_test_component") {
component_name = "my_test"
manifest = "meta/my_test.cml"
deps = [ ":my_test_bin" ]
# This runs the test in "vulkan-tests" non-hermetic realm.
test_type = "vulkan"
}
- 針對
vulkan-test,將 test_type 標示為vulkan - 如果是
system-test,請將 test_type 標示為system
測試元件可以使用 vulkan_envs environment,確保元件在所有支援 Vulkan 的建構機器人上執行。
建構時間依附元件
樹狀結構內建構作業
樹狀結構內程式碼應依附於 //src/lib/vulkan,才能納入 Vulkan 標頭並連結至 libvulkan.so。
其他實用目標:
//src/lib/vulkan:vulkan_validation_layers:啟用 Vulkan 驗證層時需要這個選項。
SDK 用戶端
使用 Bazel SDK 的程式碼應依附於 @fuchsia_sdk//pkg/vulkan。
在螢幕上顯示
你可以透過以下兩種方式顯示算繪輸出內容:
系統合成器
詳情請參閱 Scenic 說明文件。
直接輸出至螢幕
這個方法與有系統合成器的系統不相容。
您可以使用自訂版本的 WSI 交換鏈。
如要瞭解 Fuchsia 自訂作業的詳細資訊,請參閱 vkcube 範例。請注意,我們已移除選項 1 的交換鏈支援。
回報問題
密切注意系統記錄檔,瞭解各種圖形驅動程式庫的特定問題,並在 Magma 專案中提出問題。 驅動程式應終止與發生這些問題時正在執行的內容相關的連線,但除此之外,應正常處理這項失敗。
如果之後仍無法解決問題,請一併回報。
GPU 故障
如下所示。這可能是使用者錯誤或驅動程式庫錯誤所致。請確認應用程式沒有 Vulkan 驗證層問題。
如果您認為應用程式沒有問題,請提出 Magma 支援單,並附上至少這部分的記錄,最好還能提供重現問題的步驟:
> [WARNING] GPU fault detected
> ---- device dump begin ----
> RELEASE build
> Device id: 0x1916
> RENDER_COMMAND_STREAMER
> sequence_number 0x1003
> active head pointer: 0x1f328
> ENGINE FAULT DETECTED
> engine 0x0 src 0x3 type 0x0 gpu_address 0x1000000
> mapping cache footprint 11.9 MB cap 190.0 MB
> ---- device dump end ----
> [WARNING] resetting render engine
GPU 停止運作
如果命令緩衝區無法在特定時間內完成,GPU 驅動程式庫應偵測到此情況,並視為發生故障。
再次重申,這可能是應用程式錯誤或驅動程式庫錯誤。如果您認為應用程式沒有問題,請提出 Magma 支援單,並附上至少這部分的記錄,最好還能提供重現問題的步驟:
> [WARNING] Suspected GPU hang: last submitted sequence number 0x1007 master_interrupt_control 0x80000000
> ---- device dump begin ----
> DEBUG build
> Device id: 0x1916
> RENDER_COMMAND_STREAMER
> sequence_number 0x1006
> active head pointer: 0x20
> No engine faults detected.
> mapping cache footprint 0.0 MB cap 0.0 MB
> ---- device dump end ----
> [WARNING] resetting render engine