Slow work of Radeon 9600XT until user change refrash rate in Windows

Started by
10 comments, last by Muhammad Haggag 18 years ago
Our customer with ATI Radeon 9600XT has very strange problem. Our Direct 3D 8.1 application works very slowly. After he changes refresh rate or screen resolution in Windows it will work in 5 times faster and smoother! And again slowly after restarting of Windows. He has standard ATI drivers included to Windows XP SP2 (no settings for 3D mode or Control Panel) No similar problems with other NVIDIA and ATI cards. We use fullscreen in current display mode, with vert. synchronization. I just thought maybe it caused because we set SetGammaRamp with D3DSGR_NO_CALIBRATION flag? Stupid idea maybe. But our earlier alpha works fine on his PC. I'm afraid to bother to often this customer and we need to solve this problem in minimal number of steps and test versions.
Advertisement
What are the presentation parameters of the device, it may be the presentation interval you are using?
Ollie"It is better to ask some of the questions than to know all the answers." ~ James Thurber[ mdxinfo | An iridescent tentacle | Game design patterns ]
I use INTERVAL_ONE, double-buffering, Width/Height/Refresh rate from current display mode.
You could try D3DPRESENT_INTERVAL_IMMEDIATE.
There are pro's and cons to using this flag though.

If it works and is what you wanted then go right.
I think it might also be an issue with the drivers overriding your vsync. See how it goes first using immediate.

I hope this helps.
Take care.
Thanks, but we need to have vertical synchronization for our task.

Log file on that PCs shown me that rendering of every frame took very long time. After changing of screenmode/refresh rate all work ideally fast.
The obvious suggestion would be to upgrade the drivers.

If that's not possible, here's a stab in the dark: If you're passing 0 for the refresh rate in the presentation parameters, try passing a specific value (e.g. 85). Or if you're using a specific value, use 0.

I don't know why you keep bumping into driver bugs, Malder1. It just looks like you're extremely unlucky [smile]

Thanks for the response!

I'll recommend our customer to upgrade drivers.

He has native drivers from WinXP SP2
Also he has very old display, maybe even with common drivers "Standard display". Reason of this problem?

We need vertical sync. so 0 is not good solution even it will work.

But, I tried to send specified value to RefreshRate parameter. For example, he has 90 Hz of refresh rate and I set 90 for FullScreen_RefreshRateInHz.
But as my log files with many tests shown he has exactly 60 FPS but his refresh rate is 90 Hz and fullscreen with vert. synchronization !!!
Interval between all frames is 16-17 ms. (1000/16=60 FPS) (I've used highly precision timer with 1 ms. exactness).

Unreal situation!
It seems I found reason of this problem. I just sent special patch to the customer.

dxdiag and some utilities allow to force refresh rate for fullscreen vsync'ed 2D/3D games. There is flag in registry: e.g. HKEY_LOCAL_MACHINE\Software\Microsoft\DirectDraw\ForceRefreshRate=60

I tested how it works and it terrible - very jerky result. It seems that it delays flipping and does it very bad. So I see two ways - remove this flag from Registry or enable IMMEDIATE (not vsync) fullscreen mode.
Unfortunatelly he said that he doesn't has this option to force refresh rate.
But his PC works as it has this flag.

Maybe there is another similar flag?
I just checked up and GetAdapterDisplayMode after CreateDevice shows that he has refresh rate that I set (90 Hz). But in fact video card shows exactly 60 FPS.

Same video card easily renders 100 Hz at my home and even 250 FPS in not vertically synchronized mode.

We tryied to update drivers for video card - same result.

All works fine only if we set 60 for refresh rate to CreateDevice parameters.
But it's bad way for CRT display.

I can't understand how in vertically synchronized mode 90 Hz video card can show 60 FPS with absolutely equal intervals between frames (16 ms.)?

This topic is closed to new replies.

Advertisement