Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

#ActualGiallanon

Posted 10 February 2012 - 08:28 AM

Why can't you do your RTT in the same begin/end/present bundle?
i.e BeginScene -> RTT -> Main GPU Jobs -> EndScene -> Present

Main GPU Jobs is unkwnown at the moment. It has been drawn 16 ms ago, so when Present() will end, what will it present? It will present the current backbuffer which should be "dirty" because during this BeginScene() / EndScene() I didn't write anything on it, while I'd like to keep the current frontbuffer untouched (ie: still show the result from the previous BeginScene() / EndScene() / Present())


Also, the fact that you've mentioned using a D3D9 device from two different threads is a dangerous sign -- why do you need two different threads to be able to control the device?



I've simplified a bit the whole thing, but I'm not accessing D3D from multiple threads. Only main thread directly access D3D.
Other threads sends commands to a queue and then the main thread will execute them.
You should figure it this way: there is a PC somewhere in the world that can render things using DX9.
There's another PC in the world that communicate with the first one and ask for jobs to be done and then read back the results.
Don't think about threads, this is not the point.

#1Giallanon

Posted 10 February 2012 - 08:27 AM

Why can't you do your RTT in the same begin/end/present bundle?
i.e BeginScene -> RTT -> Main GPU Jobs -> EndScene -> Present

Because when Present() will end, what will it present? It will present the current backbuffer which should be "dirty" because during this BeginScene() / EndScene() I didn't write anything on it, while I'd like to keep the current frontbuffer untouched (ie: still show the result from the previous BeginScene() / EndScene() / Present())


Also, the fact that you've mentioned using a D3D9 device from two different threads is a dangerous sign -- why do you need two different threads to be able to control the device?



I've simplified a bit the whole thing, but I'm not accessing D3D from multiple threads. Only main thread directly access D3D.
Other threads sends commands to a queue and then the main thread will execute them.
You should figure it this way: there is a PC somewhere in the world that can render things using DX9.
There's another PC in the world that communicate with the first one and ask for jobs to be done and then read back the results.
Don't think about threads, this is not the point.

PARTNERS