https://msdn.microsoft.com/zh-cn/communitydocs/game-development/directx-12-white-paper/ta15073006
這個連結失效了 http://gad.qq.com/common/getfile?fileurl=server1/20150831/phpBn94r5.1441015741.pdf%7C%7C%7CDX12+WhitePaper_v2.pdf&did=1166
記住關鍵詞
https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Samples/Desktop/D3D12Multithreading
nvn和dx12 vulkan
commandlist 和 command queue
===================
這裡有個dx12多執行緒渲染的坑 許久未填,今日填之
每個執行緒有自己的command list 收集好了之後用queue提交這個command list
https://developer.nvidia.com/sites/default/files/akamai/gameworks/blog/munich/mschott_vulkan_multi_threading.pdf
http://www.diva-portal.org/smash/get/diva2:1037368/FULLTEXT01.pdf
今天填
那天並沒有填
多執行緒渲染 是cpu的多執行緒 gpu 對多執行緒渲染的支援是指
一些資源的同步機制 能多執行緒提交資源
queue可以接受多執行緒提交的資源 是指 一個執行緒往同一個queue上加不同執行緒寫入的cmds
每個thread有自己的cmd 每個cmd不能多執行緒寫
queue cmd這些資源 是支援多執行緒的api才有的
這些api還提供 同步機制 包含
fence(gpu-cpu)
barrier(cmd內部)
event(cmd之間)
smephores(quequ之間)
cpu這邊這些執行緒的coordinate要自己做 每個pass wait一次開起來的執行緒
比如thread0 通知三個執行緒畫shadow 再等他們畫完 這裡wait 到了之後 excute 再通知三個執行緒開始畫場景 再wait畫完 再excute 就是queue把cmd kick到gpu執行
用memory換cpu執行時間