Re: IDirect3DDevice->Present most overhead?
From: Sean Cavanaugh (seanc_at_gearboxsoftware.com)
Date: 11/30/04
- Next message: microb: "Re: 3dmark 2001"
- Previous message: Ken Chen: "D3DPOOL_MANAGED bug in CreateVertexBuffer?"
- In reply to: Bilbao: "IDirect3DDevice->Present most overhead?"
- Next in thread: Minh Truong: "Re: IDirect3DDevice->Present most overhead?"
- Messages sorted by: [ date ] [ thread ]
Date: Mon, 29 Nov 2004 21:28:31 -0600
Bilbao wrote:
> Hi all,
>
> I am trying to measure the performance in an engine I am working on.
> Using the methodology of querying the time at specific points of the "game
> loop", I find out that the Direct3DDevice9 function "Present(...)" is taking
> about 80%-90% of the processing time.
>
> I found this surprisingly intresting AND frustrating as well. The GPU I use
> is an ATI 9700 Pro. But more surprisingly* is that in another system with an
> nVidia GPU (Quattro) the processing time spent in this function is very small.
>
> *Up until now I though this GPU was NOT better than the ATI 9700 Pro.
> Somebody please correct me, I am sorry I don't have more detailed information
> on the nVidia HW. What that lead me to believe that the nVidia HW was lesser
> than the ATI 9700 Pro is that the 9700 GPU supports a wider range of
> features, is in overall way faster (with the SDK samples) and is newer...
>
> I also though that maybe some sort of intrussive software was drainning the
> performance in the ATI GPU, but this is hard to detect whatever the
> stand-point.
>
> If anybody has any hint on performance problems with ATI HW (9700
> specifically), OR/AND have also experienced a similar situation please let me
> know any advice on how I can approach this problem.
>
> Please, let me know if you have any question or need more information.
>
> Thanks a million in advance
D3D calls fill a command buffer up and if it gets full it has to wait
for there to be room. However, most of the blocked time will be in
Present(). There is a limit to the number of pending Present()s in the
buffer and Present will block and spin until its allowed to put another
one in. Real-world development tells me that the number of allowable
presents with vsync disabled is much larger than with vsync enabled,
which puts the logic for this in the video driver (and also at the mercy
of various driver revisions)
There are some optional parameters to Present() to check out if you wish
to avoid the spin and can do something more productive with the time.
- Next message: microb: "Re: 3dmark 2001"
- Previous message: Ken Chen: "D3DPOOL_MANAGED bug in CreateVertexBuffer?"
- In reply to: Bilbao: "IDirect3DDevice->Present most overhead?"
- Next in thread: Minh Truong: "Re: IDirect3DDevice->Present most overhead?"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|