DirectX 12 是 Microsoft 提供的一種低級編程 API ,與以前的版本相比,它減少了驅(qū)動程序開銷。 DirectX 12 使用命令隊列、命令列表等在底層硬件上提供了更大的靈活性和細(xì)粒度控制,從而提高了資源利用率。您可以利用這些功能,優(yōu)化應(yīng)用程序,并獲得比早期 DirectX 版本更好的性能。同時,應(yīng)用程序本身必須負(fù)責(zé)資源管理、同步等。
越來越多的游戲標(biāo)題和其他圖形應(yīng)用程序采用 DirectX12 API 。視頻編解碼器 SDK 11 . 1 在 Windows 20H1 及更高版本的操作系統(tǒng)上引入了 DirectX 12 編碼支持。這使 DirectX 12 應(yīng)用程序能夠在所有受支持的 GPU 代中使用 NVENC 。視頻編解碼器 SDK 包包含 Nvencodepi 頭文件、演示用法的示例應(yīng)用程序以及使用 API 的編程指南。示例應(yīng)用程序包含 C ++包裝類,可以根據(jù)需要重用或修改。
typedef struct _NV_ENC_FENCE_POINT_D3D12 { void* pFence; /**< [in]: Pointer to ID3D12Fence. This fence object is used for synchronization. */ uint64_t value; /**< [in]: Fence value to reach or exceed before the GPU operation or fence value to set the fence to, after the GPU operation. */?
初始化 NVENC 時,客戶端應(yīng)用程序還必須指定輸入緩沖區(qū)格式。
盡管在 DirectX 12 中傳遞給 Encode picture API 的大多數(shù)參數(shù)與其他接口中的參數(shù)相同,但仍存在某些功能差異。輸入端(客戶端應(yīng)用程序?qū)懭胼斎朊妫?NVENC 讀取輸入面)和輸出端( NVENC 寫入位流面,應(yīng)用程序讀取位流面)的同步必須使用 fences 進(jìn)行管理。這與以前的 DirectX 接口不同,后者由操作系統(tǒng)運行時和驅(qū)動程序自動處理。
在 DirectX 12 中,需要有關(guān)圍欄和圍欄值的附加信息作為編碼圖片 API 的輸入?yún)?shù)。這些圍欄和圍欄值用于同步 CPU – GPU 和 GPU – GPU 操作。應(yīng)用程序必須在NV_ENC_PIC_PARAMS::inputBuffer和NV_ENC_PIC_PARAMS:: outputBitstream中發(fā)送以下輸入和輸出結(jié)構(gòu)指針,其中包含圍欄和圍欄值:
typedef struct _NV_ENC_INPUT_RESOURCE_D3D12 { NV_ENC_REGISTERED_PTR pInputBuffer NV_ENC_FENCE_POINT_D3D12 inputFencePoint; … } NV_ENC_INPUT_RESOURCE_D3D12; typedef struct _NV_ENC_OUTPUT_RESOURCE_D3D12 { NV_ENC_REGISTERED_PTR pOutputBuffer; NV_ENC_FENCE_POINT_D3D12 outputFencePoint; …
要在異步操作模式下檢索編碼輸出,應(yīng)用程序應(yīng)在調(diào)用NvEncLockBitstream之前等待完成事件。在同步操作模式下,應(yīng)用程序可以調(diào)用NvEncLockBitstream,因為 NVENCODE API 在返回編碼輸出之前確保編碼已完成。但是,在這兩種情況下,客戶機(jī)應(yīng)用程序都應(yīng)該在NV_ENC_LOCK_BITSTREAM::outputBitstream中傳遞指向NV_ENC_OUTPUT_RESOURCE_D3D12的指針,該指針在NvEncEncodePicture API 中使用。
關(guān)于作者
Dipti Taur 是 NVIDIA 多媒體驅(qū)動程序團(tuán)隊的高級系統(tǒng)軟件工程師。她曾從事DirectX 12的各種視頻編解碼器、視頻驅(qū)動程序開發(fā)和應(yīng)用程序編程接口設(shè)計。她擁有印度孟買IIT電子工程碩士學(xué)位,專業(yè)從事通信和信號處理。
Sampurnananda Mishra 是 NVIDIA 負(fù)責(zé)多媒體驅(qū)動程序的高級經(jīng)理。他研究過 NVIDIA GPU s 上支持的各種多媒體用例。他的興趣包括視頻編碼、計算機(jī)視覺、視頻安全、深度學(xué)習(xí)和系統(tǒng)軟件。他擁有印度 IIT 坎普爾電子工程碩士學(xué)位,主攻數(shù)字信號處理。
審核編輯:郭婷
-
接口
+關(guān)注
關(guān)注
33文章
8625瀏覽量
151347 -
NVIDIA
+關(guān)注
關(guān)注
14文章
4996瀏覽量
103216 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5506瀏覽量
121255
發(fā)布評論請先 登錄
相關(guān)推薦
評論