top | item 30756899

(no title)

joe91 | 4 years ago

You do need a very different design to efficiently target D3D12 and Vulkan. You need to think in terms of pipelines, root signatures/descriptor layouts, tables of descriptors and resource transitions. But its quite easy to also target D3D11 in this way:

Pipeline state -> struct of the 3 or 4 state objects + a few values (this actually makes redundancy checking easier and can actually be a win :)

Root signature -> fixed pre allocation of binding slots (this can even be done statically with templates if your root signature is known statically)

Tables of descriptors -> arrays of handles

(edit: you obviously cannot do the kinds of bindless things with D3D11 that you can do with D3D12 and Vulkan. But its common to have both bindless and non-bindless code paths with D3D12 and Vulkan anyway)

Resource transitions -> nothing

discuss

order

No comments yet.