其實到寫這篇文章的時候,DXGI已經出1.5版了,但很多朋友實際上還在用1.2甚至1.1,所以現在談1.4一點也不過時,而且1.4又是一次非常重大的更新,很值得仔細談談。
為了支持Direct3D 12(DXGI還處于1.4版本的時候,Direct3D還按照老命名方式叫Direct3D 12,現在已統一更名為DirectX 12),DXGI加入了一下這些新功能:
- 更廉價的適配器枚舉機制
- 視頻內存預算追蹤
- Direct3D 12Swapchain 改進
- 相關話題
更廉價的適配器枚舉機制
在Direct3D 12里已經不能從device反向追蹤創(chuàng)建它的IDXGIAdapter適配器對象了。在調用D3D12CreateDevice的時候也不能指定D3D_DRIVER_TYPE_WARP了。但你可以用IDXFactory4去處理這些事。IDXGIFactory4::EnumAdapterByLuid可以在D3D 12環(huán)境下追蹤創(chuàng)建device的adapter(與ID3D12Device::GetAdapterLuid結對使用)。如果想讓D3D12CreateDevice使用WARP渲染器,要用到IDXGIFactory4::EnumWarpAdapter提供的適配器(Adapter)。
視頻內存預算追蹤
微軟建議開發(fā)者在處理視頻內存時使用他們設計的預約內存系統,這樣能告知操作系統為開發(fā)者預留應用所需要的最低內存。(這是一種很好的機制,但也有些限制)
一個系統能為某個應用提供的物理內存數量叫做這個應用的“視頻內存預算(video memory budget)”。當后臺進程喚醒或睡眠的時候預算會出現極大的波動;當終端用戶切換進程的時候預算會急劇變化。應用此時會被系統通知并進行統計當前消費內存和預算內存。應用如果覺得預算不夠,就會休眠并允許其他應用執(zhí)行,當時調用的創(chuàng)建類函數也有可能返回錯誤。IDXGIAdapter3就與此事有關,尤其是QueryVideoMemoryInfo和RegisterVideoMemoryBudgetChangeNotificationEvent。
更多相關信息查看這里:Residency。
Direct3D 12Swapchain 改進
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數據結構來看看(二) 2017-07-26