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 freedesktop.org servers:
e.g., from a Linux/Mac shell use:
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).
- 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.
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.
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.
- visit-developers is where all development discussion takes place.
- visit-commits gives notification of each commit.
- visit-users is where users ask for help with VisIt.
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.
|Work||Working||ToDo / Notes|
|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"|
||Partial||Another upgrade needed for proper AIX support|
|Update test suite||Yes||Done, finally!|
|Fix VisIt Plots||Yes||committed!|
|Fix VisIt mappers||Yes||r11067|