Equalizer logo
Collage logo
GPU-SD logo

PBuffer Integration

Author: eilemann@gmail.com
State: Implemented in 0.5

Overview

Using PBuffers for parallel Multi-GPU rendering
Using PBuffers for parallel Multi-GPU rendering

PBuffers are off-screen rendering buffers. They are used to render using a GPU without displaying the rendering on a display, typically for source channels during decomposition.

The PBuffer support adds the possibility to configure the window's drawable type in the configuration file. The default is 'window', 'pbuffer' is used to configure a PBuffer and 'FBO' is for Frame-Buffer Objects.

API

    class Window
    {
        AGLPbuffer getAGLPBuffer() const;
        HPBUFFERARB getWGLPBufferHandle() const;

        virtual void setAGLPBuffer( AGLPbuffer pbuffer );
        virtual void setWGLPBufferHandle( HPBUFFERARB handle );

        virtual bool configInitGLXPBuffer( XVisualInfo* visualInfo );
        virtual bool configInitAGLPBuffer();
        virtual bool configInitWGLPBuffer( HDC dc, int pixelFormat );
        ...

        enum IAttribute
        {
            ...
            IATTR_HINT_DRAWABLE,
            ...
        };
    };

    enum IAttrValue
    {
        ...
        FBO        = -11,
        ...
        PBUFFER    = -7,
        WINDOW     = -6,
        ...
    };

File Format

    global
    {
        EQ_WINDOW_IATTR_HINT_DRAWABLE    window | pbuffer | FBO
    }

    window
    {
        attributes
        {
            hint_drawable    window | pbuffer | FBO
        }
    }

Open Issues

The current X11 version of Mac OS X uses GLX 1.2, and therefore does not support GLX PBuffers.