Parallel OpenGL

UPDATE: Most of this is merged into the trunk at this point. This page will be kept around for a while for historical reasons.

For VisIt 2.0, support will be added so that VisIt can effectively utilize multiple GPUs in a distributed rendering environment.

This is already possible, but there were some issues in the existing setup. The main issue was the lack of OpenGL 2.0 functionality, due to VisIt's use of an old Mesa library. A secondary issue is GLEW, which used to load function pointers from the wrong context, causing segmentation faults on SW-rendering nodes when a GLEW-enabled plot gets executed.

Third Party Library Work


Mesa is an implementation of a graphics library which is compatible with OpenGL implementations. These days, Mesa is the manner in which open source software achieves HW-accelerated rendering. However, Mesa was originally developed to run on CPUs, and it retains that rendering mode today. VisIt uses Mesa in that manner to render in software on targets that do not have supported GPUs.

We need to upgrade the version of Mesa that VisIt uses, since the ones included / used in build_visit do not support shaders.

SW-only mangled rendering is an underutilized target in Mesa these days. We must verify that release candidates compile for our environment (e.g. without DRI), and on all our supported platforms (Linux, Mac, Windows).


Mesa 7.5 is out. For the most part one should be able to use the released version.

There are currently build issues on Windows. These should be fixed on the mesa_7_5_branch within the git tree relatively soon.


Mesa can be tracked using the git version control system, using servers:


e.g., from a Linux/Mac shell use:

  git clone git://

On windows, try TortoiseGit if you like to use the Windows shell, or just install Cygwin. Note that if you install Git through Cygwin it is likely to break your TortoiseGit installation (in confusing ways).

Mailing Lists

  • mesa3d-dev for development discussion. Most of this is off-topic for our needs, since most discussion centers around HW drivers. Might be overkill to subscribe to this.
  • mesa3d-announce posts information on releases and release candidates.


The GL Extension Wrangler (GLEW) is a widely used library for portably accessing the functionality exposed in later OpenGL specifications. Unfortunately released versions of GLEW load OpenGL from the library which it was compiled against, and we do not know which library to use until runtime.


Until our patches are merged upstream, at least, we maintain a git repository of the changes required for GLEW. The repository can be checked out via the read-only git protocol, on shigeru @ sci. The repo-name is 'glew.git'. Email Tom if you need more info.


Most of GLEW is autogenerated. Run 'make extensions' to regenerate the real source files, but the makefile is smart and won't overwrite existing files. It's safe to rm the include subdirectory, and src/glew.c every time.

Also, you almost definitely want to muck with config/Makefile.yourplatform and add -g.

Mailing Lists

It would be a good idea to subscribe to glew-coders, where GLEW development is discussed. This is also the place to discuss compilation failures of current GLEW trunks, which happens from time to time as the source is automatically generated from the OpenGL specifications, which can be contradictory.

VisIt Work

The updated version of GLEW must be changed in our third_party_builtin directory.

build_visit must be rewritten to download and use a more recent Mesa. The test suite must be run (in SR mode) using both versions of Mesa, to ensure the upgrade goes smoothly.


If you have a NERSC account, use that. Otherwise, ping User:tfogal and ask about getting source access.

Mailing Lists

For doing VisIt development, you must follow visit-developers. It is probably a good idea to follow visit-commits as well. For this work, following visit-users would not be relevant or useful.

Current Status

Work Working ToDo / Notes
Building, Linux Yes
Building, Mac Yes Requires 7.5 release.
Building, Windows Yes resolved in 7.5.1
Loading mgl function pointers Yes
'POSIX' path instead of Linux + Mac path Yes Working well.
Conditionally loading function pointers Yes API needs update (enums)
API-compatible (default initialization) known broken dllMain can't LoadLibrary.
GLEW_STATIC support known broken Jianrong is working on this
Contribute back No Last iteration: talking w/ GLEW devs about a "GLEW 2.0 branch"
Update build_visit with new Mesa Partial Another upgrade needed for proper AIX support
Update test suite Yes Done, finally!
Fix VisIt Plots Yes committed!
Fix VisIt mappers Yes r11067