Hi All,
Few threads touched the same subject recently so I decided to share my
observations and maybe provoke some discussion on the problem. Maybe together
we can get it fixed. I said "got it fixed" because I am afraid that it might be
difficult without driver changes.
Problems are related to OSG on Windows XP & Vista with fairly recent NVidia
boards (6x00-9x00) / dual view / multi threading modes. I don't want to discuss
single monitor (or horizontal span) issues in this post.
In my testing I went through following GeForce driver versions: 94.24, 97.94,
162.65, 169.21, 163.75, 169.28, 169.44, 169.61, 174.74.
Tests done in DUAL VIEW / MULTITHREADING modes. Athlon62 X2 (DUAL CORE). OSG
latest SVN from last 2 weeks (2.3.x).
OBSERVED ISSUES:
All pre 169.xx drivers:
- Statistics does not show GPU stats. Draw timings are growing till the moment
when framerate hz start to drop. This issue is present with number of examples.
Use osgviewer dumptruck.osg to reproduce it.
169.xx and 174.74 drivers:
- GPU stats seem ok. But osgviewer dumptruck.osg shows complete garbage. Things
get better when osgviewer is started with --SingleThreaded option and
Threading modes are later changed with Threading handler.
All driver versions:
- FBO use problems. Number of examples using RTT cameras (prerender, shadow,
simulation) show erratic behaviour. Usually one screen is incorrect, sometimes
apllication freezes. Output console prints FBO error messages. FBO apply fails
on one screen. Whats interesting both screens are correctly drawn for the first
frame, error appears in consecutive frames.
- FBO problems are also present in SINGLE monitor mutithreaded configurations.
Examples usually start correctly but freeze or FBO textures stop to update when
Threading handler changes mode. One exception: I noticed that oldest (94.24)
drivers tested here are working correctly in single monitor mode (no matter
what threading mode is selected). They are so old that they may be single
threaded internally. Unfortunately they do show the same erratic behaviour as
the other versions in multi monitor mode.
All above problems dissapear when examples are run with --SingleThreaded
option. Most of the problems also dissapear when run with One monitor. There
are exceptions but they seem to vary with driver versions.
SOLUTIONS (or rather lack of them):
Driver Release Notes, number of posts on the WEB, posts on the OSG forum
suggest that many OpenGL problems might be related to multithreaded usage.
There is a number of CPU fixes available on the net. Some from microsoft, some
from AMD or Intel. NVidia recommends registry tweaks or turning off the
Threaded optimization. I tried all them without success.
Only one method did change the situation. When I disabled second core on the
CPU, allmost all above problems vanished. In other words I could use
MULTIMONITOR and MULTITHREADED OSG on one core CPU. In my opinion this is the
strongest argument for the claim that there are NVidia driver isuses with
mutithreaded OpenGL. The only case where FBO was still freezing on single core
machine was when Threading mode was changed to
CullThreadPerCameraDrawThreadPerContext.
Unfortunatelly, disabling all the cores except one is no solution at all. I
guess its better to run --SingleThreaded. I am curious what are the others'
observations ? Maybe someone found some real solutions ? Maybe some workarounds
could be made in OSG ?
DISCLAIMERS:
- I made all my testing on NVidia boards and have no idea how ATI boards would
behave in similar scenarios.
- Most of the tests were done on Windows XP SP2 / Athlon 64 X2 / NVidia GeForce
7800 GTX. In a number of cases I changed graphics board to 8800 GTS or tested
on my collegues Vista 64 bit Athlon Quad core or Intel Core 2 Duo with 8800
GTS. In none of this cases I have noticed that switch to other archtiecture
would change observed issues that I had with my primary configuration. Thats
why I claim that problems are wider and repeatable but your results may still
vary.
- Attempts to change "Threaded optimization" or "Multi-display/mixed-GPU
acceleration" in NVidia Control Panel either didn't help or made it worse
(instant freeze or no display). So I generally keept them at defaults: ie
Multiple display performance mode and Threaded optimization set to Auto.
Thanks for the attention,
Do you have similar or different observations ? Hopefully solutions ?
Wojtek Lewandowski
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org