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执行时间