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 後端還需要知道目標執行階段版本和管線階段。這些使用作業系統和環境三元組組件表示。

目前,DirectX 後端需要以 shadermodel 作業系統為目標,並支援 6.0+ 版本(撰寫本文時,最新發表的版本為 6.7)。

表 108 DirectX 環境

環境

說明

pixel

像素著色器

vertex

頂點著色器

geometry

幾何著色器

hull

外殼著色器(鑲嵌)

domain

網域著色器(鑲嵌)

compute

計算核心

library

可連結的 dxil 程式庫

raygeneration

光線產生(光線追蹤)

intersection

光線交集(光線追蹤)

anyhit

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

closesthit

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

miss

光線未命中(光線追蹤)

callable

可呼叫著色器(光線追蹤)

mesh

網格著色器

amplification

放大著色器

輸出二進制文件

DirectX runtime API 會讀取一種基於 DirectX 規格 的檔案格式。在不同的程式碼庫中,此檔案格式有不同的名稱(特別是 DXBCDXILContainer)。由於此格式用於儲存 DXBCDXIL 輸出,且最終目標是在 LLVM 中支援這兩種格式作為程式碼生成目標,因此 LLVM 程式碼庫使用更中立的名稱,即 DXContainer

DXContainer 格式在功能規格書中僅有少量說明,但在 DirectXShaderCompiler 中存在參考實作。此格式在 LLVM 專案文件中也有說明(請參閱 DirectX 容器)。

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

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