I read a lot about multithreaded rendering. People offered all kinds of strange and wonderful schemes for delivering work to a GPU with threads in order to speed up their frame rate and get more material, but I have a little conceptual problem with all this, and I thought I launched his guru to see what you think.
As far as I know, the main unit of concurrency on the GPU is Warp. That is, it is at the pixel level, and not higher at the geometry representation level. Therefore, given that the concurrency block on the GPU is a deformation, the driver must be tightly locked with mutexes to prevent multiple threads overlapping messages. If so, I donβt see the advantage of coding for D3D or OpenGL primitives with multiple threads.
Of course, the most efficient way to use your GPU in a multi-threaded scenario is at a higher abstract level, where do you get batches of work together before sending it? I mean, rather than accidentally moving teams from multiple threads, I would think that one block accepts work from several threads, but with a little intelligence inside it, to make sure everything is ordered for better performance before sending it to the visualizer , there will be much greater gains if you want to work with multiple threads.
So where is the support for D3D / OpenGL multithreaded rendering in the real API?
Help me with my confusion!
source share