Author |
Message |
DennisB
Rating: N/A Votes: 0 (Vote!) | Posted on Saturday, June 08, 2002 - 6:08 am: | |
Dear folks, When installing win3d for win2000, Setupxp.exe will not successfully test refresh rates other than "Desktop". With display set to 1024x768 @100hz, setup seems to force 60hz page-flip with either Revelator or H3D glasses on ATI Radeon board. Same results with 1280x1024@75hz, only 60hz flipping. Independent test with H3D.exe utility shows board and glasses working fine at "Desktop" rates. Also, eyeSCREAM pro demo works with high refresh rates. I am using latest drivers from ATI. I wrote a 3D image viewing program last year for the Revelator glasses, but alas ELSA is no more. Trying to upgrade program to support nVidia & ATI boards with old Revelators and new H3D glasses. If anyone has some code samples on how to use page flipping on ATI boards, I could bypass win3d altogether. Thanks, Dennis |
David C. Qualman
Rating: N/A Votes: 0 (Vote!) | Posted on Sunday, June 09, 2002 - 1:00 am: | |
Hi Dennis, WINx3D uses GDI to set the refresh rates - that is it uses the facilities provided by the ATI video drivers. It is important that you identify the monitor on your system, using the Desktop / Settings / Advanced / Monitor control panel. Also, this monitor must be able to handle the higher refresh rates. If you have done this, and still cannot use WINx3D to set the refresh rates, then there is probably some type of negative interaction between DirectX and the GDI refresh rate controls. We have been able to change the refresh rate with the ATI drivers under Windows XP, but I do not recall the test on Win2000. In this case, the best solution is to set the refresh rate exclusively with the desktop. That is, leave WINx3D at "Desktop" refresh rate. Then, go into the Desktop / Settings / Advanced / Adapter control panel, and select the desired refresh rate. This must be done for each desired resolution - so you will need to cycle through each of the resolutions to set each refresh rate. With the "Desktop" setting, WINx3D does not try to adjust the refresh rate. My understanding of the eyeSCREAM's is that they are using over/under. If so, this artifically doubles the refresh rate going to the monitor. So, if the video card changes to 60 Hz, the eyeSCREAM's insert another VSync, forcing the video signal to 120 Hz. WINx3D does not use over/under, so does not artificially double the refresh rate. Dave |
DennisB
Rating: N/A Votes: 0 (Vote!) | Posted on Sunday, June 09, 2002 - 6:34 pm: | |
Dear Dave, Thanks for the reply. I had already tried your suggestions with no success. If I change the following line of code in the bmpsamp.c file, then the current display properties are not altered, and the page flipping seem to work at the desktop refresh rate. if (1==1) //(lpDD->lpVtbl->SetDisplayMode(lpDD, dwWidth, dwHeight, dwBpp) == DD_OK) Before commenting out the SetDisplayMode call, I tried various values of dwWidth and dwHeight, all of which worked, except that the refresh rate seemed to change to 60hz, regardless of the desktop refresh rate. This code probably exists in your setup program, which would explain why the refresh rate gets reset to 60hz. If you have any more info, please reply. Thanks, Dennis |
David C. Qualman
Rating: N/A Votes: 0 (Vote!) | Posted on Monday, June 10, 2002 - 6:31 am: | |
Hi Dennis, You observation is interesting in that you have identified a method to retain high refresh rates. But, by removing the SetDisplayMode command, you aren't using DirectX to set the desired resolution. This lends the suggestion that the implementation of SetDisplayMode on the NT-type platforms differs from the SetDisplayMode on the 9x-type platforms. Maybe it should be replaced with the lpDD2->lpVtbl->SetDisplayMode(), which allows for a refresh rate option. |
DennisB
Rating: N/A Votes: 0 (Vote!) | Posted on Monday, June 10, 2002 - 7:58 am: | |
Dave, Thanks for the reply. I didn't know the lpDD2 interface was avaliable, I will give it a try. I would really like to use the Win3D libraries, but FULLSCREEN EXCLUSIVE makes for a very unfriendly windows app, and makes the implimentation of the toolbars and multiple views messy (aside from major re-architecture of application). I thought I read somewhere that attaching a Clipper would mess up the flipping chain. I assume that you were limited because DD would only support Flip() with DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE. Worse it appears DirectX8.1 has dropped ability to sync app with WaitForVerticalBlank(), and is moving towards a 3D rendering engine. Can you call HAL functions directly from an app??? They must still support sync functions. Do you have any more info? I might be willing to help you create a DDSCL_FULLSCREEN version of Win3D. Thanks, Dennis |
DennisB
Rating: N/A Votes: 0 (Vote!) | Posted on Monday, June 10, 2002 - 8:25 am: | |
Dave, I wanted to say, create a DDSCL_NORMAL version. Dennis |
David C. Qualman
Rating: N/A Votes: 0 (Vote!) | Posted on Monday, June 10, 2002 - 6:21 pm: | |
We opted for the limits of full-screen page-flipping because it was a more practical solution. It is easier to control the source of the entire display than it is to control the source for individual windows. We are not using the HAL functions for full-screen flipping. It is not practical to use Flip() for fullscreen flipping, since the requirement for Flip() is that it has to have at least one vertical blank between flips. Not just one VB, but at least one VB - maybe two or more. Likewise, WaitForVerticalBlank() also does not provide reliable enough results. So, our drivers directly communicate with the hardware. We have experimented with page-flipping in a window, and have yielded some positive results. But, we do not have a solution that is available for release. It is also not on an active timetable. So, for a while, full-screen flipping is the only solution, unless one uses professional-type solutions. |
|