DirectX 目標使用者指南¶
警告
免責聲明:DirectX 後端為實驗性質,目前正在積極開發中。它尚未完成所有功能,也未準備好在實驗或示範情境之外使用。
簡介¶
DirectX 目標實作了 DirectX 可程式化介面。這些介面記錄在 DirectX 規格 中。
最初,此後端旨在支援 DirectX 12,並計畫在稍後支援 DirectX 11。
DirectX 後端目前為實驗性質,並未隨附於任何 LLVM 工具的發行版本中。若要在本機啟用建置 DirectX 後端,請將 DirectX
新增至 LLVM_EXPERIMENTAL_TARGETS_TO_BUILD
CMake 選項。如需建置 LLVM 的更多資訊,請參閱 使用 CMake 建置 LLVM 文件。
目標三元組¶
目前 DirectX 目標僅支援 dxil
架構,該架構會為 DirectX 中繼語言 產生程式碼。
除了目標架構之外,DirectX 後端也需要知道目標執行階段版本和管線階段。這些會使用 OS 和環境三元組元件來表示。
目前 DirectX 後端需要以 shadermodel
OS 為目標,並支援 6.0+ 版本(在撰寫本文時,最新發布的版本為 6.7)。
環境 |
描述 |
---|---|
|
像素著色器 |
|
頂點著色器 |
|
幾何著色器 |
|
外殼著色器 (曲面細分) |
|
網域著色器 (曲面細分) |
|
計算核心 |
|
可連結的 |
|
光線生成 (光線追蹤) |
|
光線相交 (光線追蹤) |
|
光線任何碰撞 (光線追蹤) |
|
光線最近碰撞 (光線追蹤) |
|
光線未命中 (光線追蹤) |
|
可調用著色器 (光線追蹤) |
|
網格著色器 |
|
放大著色器 |
輸出二進位檔¶
DirectX 執行階段 API 讀取基於 DirectX 規格 的檔案格式。在不同的程式碼庫中,此檔案格式以不同的名稱稱呼(特別是 DXBC
和 DXILContainer
)。由於此格式用於儲存 DXBC
和 DXIL
輸出,且最終目標是在 LLVM 中支援兩者作為程式碼產生目標,因此 LLVM 程式碼庫使用更中性的名稱 DXContainer
。
DXContainer
格式在功能規格中文件稀少,但在 DirectXShaderCompiler 中存在參考實作。此格式也在 LLVM 專案文件中記錄(請參閱 DirectX Container)。
在 LLVM 中產生 DXContainer
檔案的支援,正在新增至 LLVM MC 層,用於物件串流器和寫入器,以及 Object 和 ObjectYAML 程式庫,用於測試和物件檔案工具。
對於 dxil
目標,將位元碼發射到 DXContainer
檔案中,遵循類似於 clang 為其他目標支援的 -fembed-bitcode
旗標的模型。