1. Introduction
Welcome to Equalizer, the standard middleware to create and deploy parallel,
scalable OpenGL applications. This release introduces major new features, most
notably automatic configuration, the Sequel library, runtime reliability and
tile compounds.
Equalizer 1.2 is a feature release extending the 1.0 API, distilling seven
years of development and decades of experience into a feature-rich,
high-performance and mature parallel rendering framework and an
object-oriented high-level network library. It is intended for all application
developers creating parallel, interactive OpenGL applications. Equalizer 1.2
can be retrieved by downloading the
source
code or one of the precompiled packages.
1.1. Features
Equalizer provides the following major features to facilitate the development
and deployment of scalable OpenGL applications. A
detailed feature list can be found on the
Equalizer website.
- Runtime Configurability: An Equalizer application is configured
automatically or manually at runtime and can be deployed on laptops,
multi-GPU workstations and large-scale visualization clusters without
recompilation.
- Runtime Scalability: An Equalizer application can benefit from
multiple graphics cards, processors and computers to scale rendering
performance, visual quality and display size.
- Distributed Execution: Equalizer applications can be written to
support cluster-based execution. Equalizer furnishes and uses the Collage
network library, a cross-platform C++ library for building heterogenous,
distributed applications.
- Support for Stereo and Immersive Environments: Equalizer supports
stereo rendering head tracking, head-mounted displays and other advanced
features for immersive Virtual Reality installations.
2. New in this release
Equalizer 1.2 contains the following features, enhancements, bug fixes
and documentation changes:
2.1. New Features
- Automatic
local and remote configuration using
the GPU-SD
library
- Initial release
of Sequel,
a simplification and utility layer on top of Equalizer, enabling rapid
development of clustered multi-GPU applications
- Runtime failure tolerance detecting hardware and software failures
- Tile compounds for fill-limited rendering such as direct volume rendering
and interactive raytracing
2.2. Enhancements
- Added FindEqualizer.cmake and FindCollage.cmake for integration of
Equalizer and Collage in CMake build environments
- Support for render clients without listening sockets
- Per-segment or
per-canvas swap barriers
- Allow the image compressor to be chosen by the application
- Allow and prefer external GLEW installation during compilation
- Upgrade internal GLEW version to 1.7.0
- Implement EQ_WINDOW_IATTR_HINT_SWAPSYNC for GLX
- Add time member to eq::Event recording time when the event was received
from the operating system
- 43: Add
View::isActive and Layout::isActive
- 45: Make RNG
functional without co::base::init
- Implement maximum size of multi-threaded queue, resulting in blocking push
operations
- Extend co::base::SpinLock and ScopedMutex with read-write semantics
- Make Collage usable from multiple libraries by allowing init and exit to
be called multiple times
2.3. Optimizations
- Make LocalNode::registerObject and Object::commit parallelizable by
executing object serialization from calling thread
2.4. Examples
- Provide CMake files for installed examples
- seqPly: An new example similar to eqPly, but using the Sequel API
- eqAsync: A new example demonstrating OpenGL context sharing for
asynchronously texture uploads
- eqHello: Ported to Sequel
2.5. Tools
2.6. API Changes
The following API changes may impact existing applications:
- Removed co::Object::commitNB and commitSync since the commit request is no
longer dispatched to command thread. Use commit instead.
- Moved installed client headers to eq/client. Applications should
always use eq/eq.h instead of individual headers.
- Added a return value and timeout to co::LocalNode::acquireSendToken(),
see method documentation.
- Changed 'uint32_t eq::Version::getRevision()' to 'std::string
eq::Version::getRevision()'
2.7. Documentation
The following documentation has been added or substantially improved since the
last release:
2.8. Bug Fixes
Equalizer 1.2 includes various bugfixes over the 1.0 release, including the
following:
- RSP: Fix scattered ack implementation
- 29: NV swap
barrier with affinity context does not work
- 45: Make
co::base::RNG function without init()
- 56:
Parsing configuration files is locale-dependent and fails in some
locales
- 66:
Assertion when using the server for more than one session
- 73:
Missing space mouse support on Windows
- 82:
Excessive memory usage with object push
- 87:
Debian packages broken
- 88:
draw_sync thread model causes full synchronization
- 90:
Race condition with direct send and higher number of nodes
- 58:
netperf/RDMA exit deadlock
- 96:
race condition with simultaneous node connect
- 97:
Object::notifyAttach is not always called
- 98: RSP
exit deadloc
- 100:
CommandFunc crash with multiple inheritance and MSVC
- 101:
Alternating old/new eq::View frustum update loop
2.9. Known Bugs
The following bugs were known at release time. Please file a
Bug Report if you
find any other issue with this release.
- 78: AGL:
assertion on interaction with multiple GPUs
- 76:
7-window.DPLEX.2D.lb.eqc does not load-balance
- 49:
eqPixelBench crash with double free
- 19: zoom
readback with FBO
- 18: zoom:
depth readback does not work
- 17: AGL:
Window close does not work
3. About
Equalizer is a cross-platform toolkit, designed to run on any modern operating
system, including all Unix variants and the Windows operating system. A
compatibility
matrix can be found on the Equalizer website.
Equalizer requires at least OpenGL 1.1,
but uses newer OpenGL features when available. Version 1.2 has been tested on:
3.1. Operating System Support
Equalizer uses CMake to create a platform-specific build environment. The
following platforms and build environments are tested:
- Linux: Ubuntu 11.04, 11.10, RHEL 6.1 (Makefile, i386, x64)
- Windows: XP and 7 (Visual Studio 2008, i386, x64)
- Mac OS X: 10.6, 10.7 (Makefile, XCode, i386, x64)
3.2. Window System Support
- X11: Full support for all documented features.
- WGL: Full support for all documented features.
- AGL: Full support for all documented features.
3.3. Documentation
The Programming and User Guide is available as a
hard-copy
and online.
The API
documentation can be found on the Equalizer website.
As with any open source project, the available source code, in particular the
shipped
examples
provide a reference for developing or porting applications. The
Developer Documentation on the website
provides further design documents for specific features. XCode users can
download
a Documentation
Set.
3.4. Support
Technical questions can be posted to the
Developer Mailing List, or directly to
[email protected].
Commercial support, custom software development and porting services are
available from Eyescale. Please contact
[email protected]
for further information.
4. Errata