Jump to content
  • Advertisement
Sign in to follow this  
brekehan

DX11 DX11 - multithreaded rendering?

This topic is 3382 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

One would assume multithreaded rendering means the rendering is going to be done on a seperate thread from the rest of the game loop, but what exactly does this mean? I don't understand what they are offering. After all don't you have to know the positions and orientations of objects before you render them? lol. So what kind of design are they proposing and what are the advantages to be had?

Share this post


Link to post
Share on other sites
Advertisement
Multithread rendering for Direct3D 11 means the ability to record render commands to a list and play them back later. The multithread aspect is that the recording and the playback can happen on different threads.
The general design to make use of this is to split your whole render process in multiple subtasks. On a high level this could be a split in shadowmap, scene, ui. If you now start rendering you will dispatch these tasks to multiple threads (one per core would be best). If all tasks are done you need to playback the recorded commands in the right order.
There are two main advantages of this.

1. You need some CPU time to prepare your data to be sent to the API. This time can now be split to multiple threads. This was possible before but you had to write this record/playback framework by your own.
2. If you have a driver that natively support this new feature a huge bunch of driver work would be already done during recording. This way you free additional CPU time on the thread that is actually dispatching the recorded commands.

It’s a nice technology but you need to keep in mind that it will only pay off on systems with multiple cores. If you are trying to utilize it on a single core system you will end slower. You can work around this problem by execution the different tasks serial in the right order on single core system. In this case you need to send the commands directly to the immediate context.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!