Sign in to follow this  
Malder1

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

Recommended Posts

Malder1    122
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.

Share this post


Link to post
Share on other sites
acid2    451
What are the presentation parameters of the device, it may be the presentation interval you are using?

Share this post


Link to post
Share on other sites
Armadon    1091
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.

Share this post


Link to post
Share on other sites
Malder1    122
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.

Share this post


Link to post
Share on other sites
Muhammad Haggag    1358
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]

Share this post


Link to post
Share on other sites
Malder1    122
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!

Share this post


Link to post
Share on other sites
Malder1    122
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.

Share this post


Link to post
Share on other sites
Malder1    122
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?

Share this post


Link to post
Share on other sites
Malder1    122
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.)?

Share this post


Link to post
Share on other sites
Malder1    122
We have found reason of this problem.
ProcessGuard installed on PC of our customer. Don't use this "low-level kernel access" utility.

Share this post


Link to post
Share on other sites
Muhammad Haggag    1358
Quote:
Original post by Malder1
We have found reason of this problem.
ProcessGuard installed on PC of our customer. Don't use this "low-level kernel access" utility.

Ah, my experience with all similar programs is that they're a big no-no. In fact, they aren't even that portable. NProtect's Gameguard doesn't even run on 64-bit systems, just freezes.

Glad you solved your problem, though [smile]

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this