DirectX 12 是 Microsoft 提供的一種低級編程 API ,與以前的版本相比,它減少了驅動程序開銷。 DirectX 12 使用命令隊列、命令列表等在底層硬件上提供了更大的靈活性和細粒度控制,從而提高了資源利用率。您可以利用這些功能,優化應用程序,并獲得比早期 DirectX 版本更好的性能。同時,應用程序本身必須負責資源管理、同步等。
越來越多的游戲標題和其他圖形應用程序采用 DirectX12 API 。視頻編解碼器 SDK 11 . 1 在 Windows 20H1 及更高版本的操作系統上引入了 DirectX 12 編碼支持。這使 DirectX 12 應用程序能夠在所有受支持的 GPU 代中使用 NVENC 。視頻編解碼器 SDK 包包含 Nvencodepi 頭文件、演示用法的示例應用程序以及使用 API 的編程指南。示例應用程序包含 C ++包裝類,可以根據需要重用或修改。
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 時,客戶端應用程序還必須指定輸入緩沖區格式。
盡管在 DirectX 12 中傳遞給 Encode picture API 的大多數參數與其他接口中的參數相同,但仍存在某些功能差異。輸入端(客戶端應用程序寫入輸入面, NVENC 讀取輸入面)和輸出端( NVENC 寫入位流面,應用程序讀取位流面)的同步必須使用 fences 進行管理。這與以前的 DirectX 接口不同,后者由操作系統運行時和驅動程序自動處理。
在 DirectX 12 中,需要有關圍欄和圍欄值的附加信息作為編碼圖片 API 的輸入參數。這些圍欄和圍欄值用于同步 CPU – GPU 和 GPU – GPU 操作。應用程序必須在NV_ENC_PIC_PARAMS::inputBuffer和NV_ENC_PIC_PARAMS:: outputBitstream中發送以下輸入和輸出結構指針,其中包含圍欄和圍欄值:
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; …
要在異步操作模式下檢索編碼輸出,應用程序應在調用NvEncLockBitstream之前等待完成事件。在同步操作模式下,應用程序可以調用NvEncLockBitstream,因為 NVENCODE API 在返回編碼輸出之前確保編碼已完成。但是,在這兩種情況下,客戶機應用程序都應該在NV_ENC_LOCK_BITSTREAM::outputBitstream中傳遞指向NV_ENC_OUTPUT_RESOURCE_D3D12的指針,該指針在NvEncEncodePicture API 中使用。
關于作者
Dipti Taur 是 NVIDIA 多媒體驅動程序團隊的高級系統軟件工程師。她曾從事DirectX 12的各種視頻編解碼器、視頻驅動程序開發和應用程序編程接口設計。她擁有印度孟買IIT電子工程碩士學位,專業從事通信和信號處理。
Sampurnananda Mishra 是 NVIDIA 負責多媒體驅動程序的高級經理。他研究過 NVIDIA GPU s 上支持的各種多媒體用例。他的興趣包括視頻編碼、計算機視覺、視頻安全、深度學習和系統軟件。他擁有印度 IIT 坎普爾電子工程碩士學位,主攻數字信號處理。
審核編輯:郭婷
-
接口
+關注
關注
33文章
8932瀏覽量
153182 -
NVIDIA
+關注
關注
14文章
5238瀏覽量
105748 -
深度學習
+關注
關注
73文章
5554瀏覽量
122466
發布評論請先 登錄
NVIDIA實現神經網絡渲染技術的突破性增強功能
一文解析M12圓形連接器編碼含義及應用

通過Google Play SDK管理中心打造更安全、更優質的SDK

如何使用ASCII碼進行編碼
NVIDIA JetPack 6.0版本的關鍵功能

NVIDIA RTX AI套件簡化AI驅動的應用開發
IB Verbs和NVIDIA DOCA GPUNetIO性能測試

Mistral AI與NVIDIA推出全新語言模型Mistral NeMo 12B
如何將SDK安裝到IDE并使用所有SDK功能?
如何利用生成式人工智能進行精確編碼
在NVIDIA Holoscan SDK中使用OpenCV構建零拷貝AI傳感器處理管線

評論