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)。

表 116 DirectX 環境

環境

描述

像素

像素著色器

頂點

頂點著色器

幾何

幾何著色器

外殼

外殼著色器 (曲面細分)

網域

網域著色器 (曲面細分)

計算

計算核心

程式庫

可連結的 dxil 程式庫

光線生成

光線生成 (光線追蹤)

相交

光線相交 (光線追蹤)

任何命中

光線任何碰撞 (光線追蹤)

最近命中

光線最近碰撞 (光線追蹤)

未命中

光線未命中 (光線追蹤)

可調用

可調用著色器 (光線追蹤)

網格

網格著色器

放大

放大著色器

輸出二進位檔

DirectX 執行階段 API 讀取基於 DirectX 規格 的檔案格式。在不同的程式碼庫中,此檔案格式以不同的名稱稱呼(特別是 DXBCDXILContainer)。由於此格式用於儲存 DXBCDXIL 輸出,且最終目標是在 LLVM 中支援兩者作為程式碼產生目標,因此 LLVM 程式碼庫使用更中性的名稱 DXContainer

DXContainer 格式在功能規格中文件稀少,但在 DirectXShaderCompiler 中存在參考實作。此格式也在 LLVM 專案文件中記錄(請參閱 DirectX Container)。

在 LLVM 中產生 DXContainer 檔案的支援,正在新增至 LLVM MC 層,用於物件串流器和寫入器,以及 Object 和 ObjectYAML 程式庫,用於測試和物件檔案工具。

對於 dxil 目標,將位元碼發射到 DXContainer 檔案中,遵循類似於 clang 為其他目標支援的 -fembed-bitcode 旗標的模型。