DirectX 12 en Vulkan
Bij de modernere api’s is het een ander verhaal. Waar DX11 nog alle verwerkte draw calls per definitie moest samenvoegen tot een command list op de primaire processorthread om naar de videokaart te versturen, zijn DX12 en Vulkan gebouwd om draw calls door alle beschikbare threads te laten afhandelen én te versturen. Geen command list meer op een enkele thread dus, en zolang er genoeg cores beschikbaar zijn, is een veelvoud van het maximale aantal draw calls in deze nieuwe api’s mogelijk ten opzichte van DX11.
Bovendien werken DX12 en Vulkan met constante ‘stromen’ van draw calls, waar DX11 periodiek de command list verstuurt naar de gpu. Het voordeel hiervan is dat de videokaart veel sneller ongebruikte rekenkernen weer aan het werk kan zetten, omdat er niet meer gewacht hoeft te worden op de volgende command list.
Het is belangrijk om te onthouden dat een hoger aantal maximum draw calls niet direct gekoppeld is aan de framerate in een spel. Het multithreaden van draw calls via command lists in DX11 resulteert grofweg in een verdubbeling ten opzichte van single threaded DX11. Ter vergelijking: DX12 en Vulkan kunnen al gauw 15 tot 20 keer (!) meer draw calls verwerken op een gelijk systeem.