多執行緒渲染

minggoddess發表於2018-03-12

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執行時間

 

相關文章