Frame Rates

Started by
45 comments, last by owl 21 years, 6 months ago
The program is NVMax

You can get it here

http://www.teamad.net/tweaks/geforce.html

It''s for the GeForce. I don''t know what you have so it may or may not work. You could probably get a similar program for any graphics card.

As for getting it to run blisteringly fast, the secret is rendering a couple textured quads and a bit of text. It''s ~350FPS at 1024x768x32bit. It''s 600FPS at 640x480x32bit.

That''s with a Duron 700 and a GeForce 2 MX.

It drops down to ~150 in 1024x768x32bit when I start getting a bunch of stuff on the screen.

Ben


IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Tiberian Merchandise!!!! | GameShot ]
Advertisement
quote:Original post by KalvinB
It''s for the GeForce. I don''t know what you have so it may or may not work. You could probably get a similar program for any graphics card.
Oh, ok. I just want to doit the right way, to avoid complications.

quote:Original post by KalvinB
As for getting it to run blisteringly fast, the secret is rendering a couple textured quads and a bit of text. It''s ~350FPS at 1024x768x32bit. It''s 600FPS at 640x480x32bit.

That''s with a Duron 700 and a GeForce 2 MX.

It drops down to ~150 in 1024x768x32bit when I start getting a bunch of stuff on the screen.

Ben
Ok, that could mean I''m not so bad after all:

Celleron 400 / Duron 700
Riva TNT2 / GeForce 2 MX
With vsinc / Without vsinc
I: 80FPS / You: 450FPS

[size="2"]I like the Walrus best.
quote:Original post by xaxa

      presentParameters.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;  presentParameters.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;  


[edited by - xaxa on October 16, 2002 12:32:50 AM]

It is failing because you are setting the presentation interval to D3DPRESENT_INTERVAL_IMMEDIATE, when you should be setting to D3DPRESENT_INTERVAL_DEFAULT. You should be setting D3DPRESENT_RATE_DEFAULT to a number, like 85. I am not sure if this is the exact problem as I did not look through all of your code.


The program the KevinB uses is not something that you should consider. It is not a practical program and it is just getting around the problem instead of solving it. This software can potentially harm your hardware and I would strongly advise against it. You may get high frame rates with this program, but this renders you useless as a programmer becuase everyone else you send your program to might be running at 50 fps.



¬_¬
quote:Original post by Fuzztrek
It is failing because you are setting the presentation interval to D3DPRESENT_INTERVAL_IMMEDIATE, when you should be setting to D3DPRESENT_INTERVAL_DEFAULT. You should be setting D3DPRESENT_RATE_DEFAULT to a number, like 85. I am not sure if this is the exact problem as I did not look through all of your code.


When I do this:

presentParameters.FullScreen_RefreshRateInHz = 85;
presentParameters.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;

The system hangs. Using INTERVAL_IMMEDIATE I increased the framerate in 20 units.

quote:The program the KevinB uses is not something that you should consider. It is not a practical program and it is just getting around the problem instead of solving it. This software can potentially harm your hardware and I would strongly advise against it. You may get high frame rates with this program, but this renders you useless as a programmer becuase everyone else you send your program to might be running at 50 fps.

Thankyou for the warning... that program looks pretty obscure...



[size="2"]I like the Walrus best.
Hmm.. I looked through your code and I can''t really see what would be causing it to hang. Here is what I do when I initialize my app:


  // Get D3D object	if((pro_lpD3D = Direct3DCreate8(D3D_SDK_VERSION)) == NULL){		return E_FAIL;	}	// Clear out D3DPP structure	ZeroMemory(&pro_D3DPP, sizeof(D3DPRESENT_PARAMETERS));	if(Windowed == SS_WIND){		// Get D3DDM structure		if(FAILED(pro_lpD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &pro_D3DDM))){			return E_FAIL;		}		// Set presentation parameters		pro_D3DPP.Windowed			= TRUE;						// Set windowed to true		pro_D3DPP.SwapEffect		= D3DSWAPEFFECT_DISCARD;	// Set swap effect to discard		pro_D3DPP.BackBufferFormat	= pro_D3DDM.Format;			// Set color format to the same as D3DDM structure		pro_D3DPP.EnableAutoDepthStencil = TRUE;		pro_D3DPP.AutoDepthStencilFormat = D3DFMT_D16;	}else if(Windowed == SS_FULL){		// Fill out D3DDM structure		pro_D3DDM.Width		  = sWidth;		// passed param. default: 800		pro_D3DDM.Height	  = sHeight;	// passed param. default: 600		pro_D3DDM.Format	  = sBPP;		// passed param. default: D3DFMT_A8R8G8B8 (32-bit true color)		pro_D3DDM.RefreshRate = sRFR;		// passed param. default: 0 (D3D default)		// Set presentation parameters		pro_D3DPP.Windowed							= FALSE;						// Set windowed to false		pro_D3DPP.SwapEffect						= D3DSWAPEFFECT_FLIP;			// Set swap effect to flip		pro_D3DPP.FullScreen_RefreshRateInHz		= sRFR;							// Set refresh rate to passed param		pro_D3DPP.FullScreen_PresentationInterval	= D3DPRESENT_INTERVAL_DEFAULT;	// Set presentation interval to default		pro_D3DPP.BackBufferFormat					= pro_D3DDM.Format;				// Set color format to the same as D3DDM structure		pro_D3DPP.BackBufferWidth					= pro_D3DDM.Width;		pro_D3DPP.BackBufferHeight					= pro_D3DDM.Height;		pro_D3DPP.EnableAutoDepthStencil = TRUE;		pro_D3DPP.AutoDepthStencilFormat = D3DFMT_D16;	}  


That''s what I do. THe only thing that I see is different is taht you set your back buffer swap effect to discard, while i only set it to discard if I am in windowed mode, and to flip if i am in fullscreen. I''m not sure that this makes a difference at all, and I am by no means saying that my way is better. I just think that since it does not work one way that it should work, you should investigate a little bit. Your way might be perfectly correct, but if both ways don''t work something might be a miss.

Hope this helps!

Fuzztrek

¬_¬
You should never set the refresh rate in your app unless a) you''re just playing around and do not plan on distributing, or b) you know how to set it correctly, based upon the actual card/monitor settings.

Hardcoding the refresh rate in an app is just as dangerous as using some third party utility and opens you and your company up to potential law suits. At least a third party utility would be used by the end user, so damage to their equipment would be their fault and not yours.
"At least a third party utility would be used by the end user, so damage to their equipment would be their fault and not yours."

Yep. Not everyone is a big fan of tearing. The only reason you should ever uncap your framerate is for testing purposes. If you want to know how fast your app is really running you have to uncap it. Other than that, leave it alone.

If the EU wants to remove the limit, NVMax is the premier tool for doing it despite what less informed posters may tell you.

There's absolutly NO RISK to your system until you start trying to overclock you card. All it does is set flags already available in the Detonator driver.


Ben


IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Tiberian Merchandise!!!! | GameShot ]

[edited by - Jim Adams on October 21, 2002 4:47:36 PM]
Anyway, if you check for frame rate support, is it still dangerous Darrell? I have never heard this, though I guess its just as dangerous as setting your monitor to a width or height that is unsupported. Do you recommend a better method?

¬_¬

[edited by - Fuzztrek on October 17, 2002 9:07:44 PM]

[edited by - Jim Adams on October 21, 2002 4:49:10 PM]
quote:Original post by Darrell L
You should never set the refresh rate in your app unless a) you''re just playing around and do not plan on distributing, or b) you know how to set it correctly, based upon the actual card/monitor settings.


XFree configuration file says that seting the refresh rate manually is pretty dangerous. I will follow this advice. Any way, when I try to set the refresh manually on my computer the app crashes. Thank you Darrell.

quote:Original post by Fuzztrek
Hmm.. I looked through your code and I can''t really see what would be causing it to hang.


My app doesn''t hang, it only runs on a slow frame rate on my system. It only hangs when I set the refresh rate to 85hz. You should consider Darrell''s advice.

-o-o-o-o-o-o-o---o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o

I repeat:

Is there any other tweak I can do before I start optimizing my code?
Wich performance you think my system is capable of in 640x480x32?
Remember that I''m doing alpha with a pretty large texture.

I''m running on a:

Pentium Celleron 466
Mother Soyo 6BA+
196MB RAM
Riva TNT2 64MB

Here is a screenshot:
[size="2"]I like the Walrus best.
"seting the refresh rate manually is pretty dangerous."

Yup. Turning off vsync isn't the same as changing the refresh rate. If a monitor only supports 60Hz and you force it to 85Hz it'll either start smoking or if you're lucky, turn off. Most new monitors have hardware checks in place to prevent you from making it go too fast. Some drivers will also check with the monitor before allowing you to set the refresh rate to prevent you from damaging the monitor.

Turning off vsync in fullscreen mode is no more dangerous than running your app in a window.

"Is there any other tweak I can do before I start optimizing my code?"

No. Turning off VSync is the only tweak you need before you start optimizing. Upping your refresh rate only increases the max frame rate it will display. It doesn't fix your problem.

Getting rid of VSync removes the limit completely as though the program were running in a window. DirectDraw supported this natively with a simple flag when you flipped the surface. I don't know why D3D doesn't have it. Maybe it does but I've never seen it.

"Pentium Celleron 466
Mother Soyo 6BA+
196MB RAM
Riva TNT2 64MB"

80FPS is probably lower than you should be able to get. I have an ATI Rage 8MB in my 400Mhz 64MB Ram laptop and my app hits 60FPS no problem. That may even be the refresh rate cap stopping it.

If you could get it to 150, that's great but really, unless it drops below 30FPS you're not going to have anyone complaining.

Ben


IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Tiberian Merchandise!!!! | GameShot ]

[edited by - KalvinB on October 17, 2002 9:29:43 PM]

[edited by - Jim Adams on October 21, 2002 4:49:51 PM]

This topic is closed to new replies.

Advertisement