Hi guys,
Just a progress report, some encouraging news.
I've been discussing with nvidia dev support on these issues since
Friday. They have really been responsive and quick, and they are
thorough in their investigations too (I guess I was lucky because the
guy replying had the same model laptop on his desk for an unrelated
issue, so he could test exactly the same drivers on the same hardware).
The white paper on nvidia's site
http://www.nvidia.com/object/optimus_technology.html says these three
automatically power on the GPU:
"
DX Calls: Any 3D game engine or DirectX application will trigger these
calls
DXVA Calls: Video playback will trigger these calls (DXVA = DirectX
Video Acceleration)
CUDA Calls: CUDA applications will trigger these calls
"
Hmm, interesting. Why didn't they include OpenGL calls in the list?
Seems like a glaring oversight.
They are looking into it, but the nvidia developer I'm talking to things
this part of the whitepaper is not totally accurate, and in fact the
switching is 100% profile-based.
However, if after his investigation he finds out that indeed, Optimus
switches when it sees DirectX calls, then he says OpenGL calls should
indeed lead to the same behavior, and they will modify it to do so in a
later version. But it really hinges on whether that's the intended
behavior or not.
The lack of working profiles and API seems pretty problematic. One
could always run some CUDA code at startup, but it doesn't say how
shutdown is determined, and this really reeks of a kludge.
About profiles, I guess the fact they don't persist must be a bug that
might have been fixed in a later driver version. It would be nice to at
least be able to programmatically add profiles, so users don't have to
manually create them.
I've retested doing a "clean install" of the 280.26 driver from nvidia's
site, and profiles work for us now. So that's at least encouraging.
The other part of the discussion is that I suggested they add some way
for an app to send a hint to the driver that this app requires the
dedicated graphics. I would really prefer some way that didn't require
linking to an nvidia-provided library (something as simple as the app
using putenv() to push a specific env var into its active environment
might work IMHO). But any way really would be better than requiring
users to create a profile for your app. I think it'll probably end up
being in nvapi (http://developer.nvidia.com/nvapi). Since Optimus is
currently Windows-only anyways I think that's the path they'll choose.
Anyways, the discussion is still ongoing, I'll update again when I get
some more info.
J-S
--
______________________________________________________
Jean-Sébastien Guay jean-sebastien.g...@cm-labs.com
http://www.cm-labs.com/
http://whitestar02.dyndns-web.com/
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org