(Cross-posting to the osgWorks Google Group.)

osgWorks r474 now has a singleton instance that allows apps to access GL_RENDERER and other values without a current context. To use this tool, do something like the following:

osgwTools::Capabilities* caps = osgwTools::CapabilitiesSingleton::instance()->getCaps();

Then you can do anything you would normally do with the Capabilities object, such as:
    // Dump out all the queried values:
    caps->dump( osg::notify( osg::ALWAYS ) );
    // or just get a copy of the GL_RENDERER string:
    const std::string rendererStr = caps->_glRenderer;

Calling dump() produces output like this:

osgWorks version 2.0.3 (20003).
OSG version: 3.1.4
  Queryable strings ----------------------------------------
    GL_VERSION: 3.3.0
    GL_VENDOR: NVIDIA Corporation
    GL_RENDERER: GeForce 9800M GT/PCIe/SSE2
    GL_SHADING_LANGUAGE_VERSION: 3.30 NVIDIA via Cg compiler
  Texture implementation constants -------------------------
    GL_MAX_TEXTURE_SIZE: 8192
    GL_MAX_3D_TEXTURE_SIZE: 2048
    GL_MAX_CUBE_MAP_TEXTURE_SIZE: 8192
    GL_MAX_TEXTURE_UNITS: 4
  Shader implementation constants --------------------------
    GL_MAX_TEXTURE_IMAGE_UNITS: 32
    GL_MAX_TEXTURE_COORDS: 8
    GL_MAX_VERTEX_ATTRIBS: 16
    GL_DRAW_BUFFERS: 8

I'm not exactly sure how OSG's pbuffer creation works in the case of heterogeneous GPUs. I imagine there is a "primary" GPU that handles the context creation. To use osgWorks to get per-GPU capabilities, you would need to create a separate instance of an osgwTools::Capabilities object while a context is current on each separate GPU. This can probably be done with a Camera draw callback.
   -Paul


On 1/15/2013 10:16 AM, Paul Martz wrote:
Chris, you're right about the heterogeneous case.

Current svn trunk HEAD of the osgWorks project has a couple tools that might 
help.

There is a struct osgwTools::Capabilities that your app can invoke while any
context is current (as in a Camera pre-draw callback). It obtains the
GL_RENDERER string plus other strings and GL implementation dependent constants.
It has a dump(std::ostream&) method, which your app can invoke to display the
queried values.

There is also a standalone application called osgwcaps, which simply creates a
pbuffer context, makes it current, creates a Capabilities struct, and dumps the
values to osg::ALWAYS.

Chris, I agree it would be nice to have this someplace instantly accessible. I
might be able to add a static that would query these values at DLL load time.

I hope this helps.
    -Paul


On 1/15/2013 8:17 AM, Chris Hanson wrote:
I've been in this situation before too, and it would be very handy to have the
GL_RENDERER and other identifying strings stored in OSG for the user code to
query. Since many people don't know you have to have the context valid, and
others don't know where/when OS has a valid context bound, it would be useful.

Potentially, this information could be per-window-specific, couldn't it?
Multiple heterogenous display cards on one machine could return different
results for different contexts.


On Tue, Jan 15, 2013 at 4:32 AM, Alistair Baxter <[email protected]
<mailto:[email protected]>> wrote:

    My solution thus far has been to call glGetString in the same function after
    my call to osg::GL2Extensions::Get, since the OpenGL context appears to be
    valid at that time - indeed the glGetString call is made internally by the
    GLExtensions stuff at that time.____

    __ __

    It just seems like the renderer string should be exposed by the extensions
    object and it’s not.____

    __ __

    *From:*[email protected]
    <mailto:[email protected]>
    [mailto:[email protected]
    <mailto:[email protected]>] *On Behalf Of *Gianluca
    Natale
    *Sent:* 15 January 2013 10:54
    *To:* OpenSceneGraph Users
    *Subject:* [osg-users] R: GL_RENDERER string____

    __ __

    Out of OSG/Qt, I think you should:____

    __1)__Create a very simple rendering context (associated to the window
    created by your application);____

    __2)__Make that rendering context as the current one;____

    __3)__Call glGetString(GL_RENDERER, …);____

    __ __

    Steps 1 and 2 are required, since all gl calls need a current rendering
    context to work with.____

    About steps 1 and 2, you should look at how OSG create the rendering
    context.____

    __ __

    *Da:*[email protected]
    <mailto:[email protected]>
    [mailto:[email protected]] *Per conto di *Alistair
    Baxter
    *Inviato:* martedì 15 gennaio 2013 10:47
    *A:* [email protected]
    <mailto:[email protected]>
    *Oggetto:* [osg-users] GL_RENDERER string____

    __ __

    I’m wanting to get the GL_RENDERER string out of my OpenSceneGraph / Qt
    application for debug purposes, and potentially for showing to users for
    technical support purposes.____

    __ __

    I can get the likes of GL and GLSL version from the osg::GL2Extensions
    object, and I can see the renderer string being queries in the source code,
    but I’m having difficulty figuring out how to get it out.____


    _______________________________________________
    osg-users mailing list
    [email protected]
<mailto:[email protected]>
    http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




--
Chris 'Xenon' Hanson, omo sanza lettere. [email protected]
http://www.alphapixel.com/
Training • Consulting • Contracting
3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL 4 • GLSL
• OpenGL ES 1 • OpenGL ES 2 • OpenCL
Digital Imaging • GIS • GPS • osgEarth • Terrain • Telemetry • Cryptography •
Digital Audio • LIDAR • Kinect • Embedded • Mobile • iPhone/iPad/iOS • Android
@alphapixel <https://twitter.com/alphapixel> facebook.com/alphapixel
<http://facebook.com/alphapixel> (775) 623-PIXL [7495]


_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to