Jump to content
  • Advertisement
Sign in to follow this  
Andrew Cross

Major performance problem on Vista

This topic is 3717 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

All, We have run into a major performance problem on Vista that I am hoping that others here might have seen and know the solution for. Basically we are using the GPU for tasks that require the rendered data to be read back into system memory. To do this we use GetRenderTargetData(...). Now, when we run this using Windows XP, we see perfectly acceptable performance, but using Vista on the exact same application the performance is absolutely dismal. We have tried this on numerous different graphics cards from different manufacturers, different CPUs and chipsets and with different drivers and across all combinations continue to see the same problem. As an example, using a mid-range nVidia card you can get a download rate of about 1200Mb/s on Windows XP but only 200Mb/s on Windows Vista. It is actually pretty easy to reproduce this, all you need to do is download the application below and it will exhibit this behavior in every situation we have tested. http://www.seriousmagic.com/3D-DloadBenchmark.zip Although this is a old DX applcation, we have confirmed the same results using our own code using DirectX9 and DirectX9Ex (on Vista). It would seem to me that there must be some obvious explanation for this because it basically renders GPGPU applications completely useless on Vista. Thanks in advance for any help. Andrew Cross, Ph.D Executive VP of Software Engineering, NewTek, www.newtek.com

Share this post


Link to post
Share on other sites
Advertisement
Interesting findings.

I can't think of any particular architecture change that should cause this sort of behaviour in all cases. My hunch would be that immature drivers and the new WDDM/DXGI layers are probably not working as well as they should - exactly who's fault that is I don't know.

Are you able to fire up something like NVPerfHUD to try and monitor the GPU? See if you can detect where the bottleneck is?

If you change the format of data being read back does the performance change? Just wondering whether there is any sort of unaligned-read hit or some conversion that happens on Vista but not XP.

It could also be worth contacting the developer relations teams for the hardware vendors - they should have good insight into how the DXGI/WDDM/Driver/App/OS fits together...

hth
Jack

Share this post


Link to post
Share on other sites
I get around 730 ish mb/s on Vista Home Premium x64 SP1 if that in any way helps

Sys Specs :

Intel Core 2 Duo E8400 3Ghz
Nvidia Gforce 8800 Gtx 768MB
4 Gig ram
Driver Version 7.15.0011.7519 (Nvidia's)

If that helps, im ofcourse unsure if that tops your system, but as i see, im no where near your top "score" for a mid range card on XP.

And btw, fullscreen this goes like totally down, the lower window size the less mb/s i get, in 640x480 its like 33 mb/s, and 1680x1050 its like 280 ish mb/s

Share this post


Link to post
Share on other sites
It might also be worth trying DX10 / OpenGL to see if they are any quicker. http://www.virtualdub.org/blog/pivot/entry.php?id=180 says that both of those are quicker at reading back pixels.

It's probably also worth trying double buffered render targets if you're not using them already.

Share this post


Link to post
Share on other sites
Quote:
Original post by Adam_42
It's probably also worth trying double buffered render targets if you're not using them already.
Yes, with the GPU as a shared resource under Vista it might just be some latency due to queuing commands or somesuch. Using the classic bounded-buffer approach might well mitigate this whole problem...

Jack

Share this post


Link to post
Share on other sites
Thank you very much for the responses. A couple of responses :

1) We have tried double-buffering. Obviously this does allow further rendering to occur while the transfer is occurring. This does not however increase the total transfer speed which is the actual problem; no matter how we "schedule" the downloads, if they are to slow there is not much we can do.

2) "I get around 730 ish mb/s on Vista Home Premium x64 SP1 if that in any way helps" This is actually the highest figure I have seen on Vista yet. My bet however is that if you use XP you will see a number that is in the 2Gb/s range.

3) I will try different color formats and see if that helps, although my tests have been with the most mundane formats (8 bit BGRX and BGRA) so its hard to imagine that these would be the problematic ones. That said, this is something that I have not yet tried.

I am still finding this almost to hard to believe. It would seem that with XP on it's last legs and us all needing to slowly migrate to Vista that this would be a major issue for GPGPU tasks, something that the world seems to be clamoring about at the moment.

Andrew

Share this post


Link to post
Share on other sites
I'd suggest posting your problem over on one of the beyond3d forums. There are quite a few people there who do GPGPU work, so they're likely to be more knowledgeable on the topic.

Share this post


Link to post
Share on other sites
Thought I'd run some numbers through my test rigs, including my personal VT5 system!

XP sp3 + Intel D945GCZ + Pentium D 830 @ 3.0 + Nvidia 7800GTX = ~900Mb/s
XP sp3 + P5B Deluxe + 6600 @ 2.4 + ATI 1950XTX = ~800Mb/s
Vista + P5B Deluxe + Q6600 @ 3.2 + Nvidia 8800GTX = ~800Mb/s

The Vista performance wasn't particularly affected by turning DWM's desktop composition on or off.

CPU load during the tests was in the region of 60% on all machines... which seemed high to me.

Maybe the memory transfer is not being conducted via DMA?

Share this post


Link to post
Share on other sites
It would be very interesting to see the numbers for the same machine compared on Vista and XP. What we see is that if you keep the same configuration, but simply move from XP to Vista that there is a huge speed hit.

Andrew

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!