Skip to content
forked from Eyescale/Equalizer

Equalizer is the standard middleware to create and deploy parallel OpenGL-based applications. It enables applications to benefit from multiple graphics cards, processors and computers to scale the rendering performance, visual quality and display size. An Equalizer application runs unmodified on any visualization system, from a simple workstatio…

License

Notifications You must be signed in to change notification settings

yarda/Equalizer

 
 

Repository files navigation

1. Introduction

Welcome to Equalizer, the standard middleware to create and deploy parallel, scalable OpenGL applications. This release introduces the Collage library, support for GPU compression plugins and an administrative API for runtime configuration changes.

Equalizer 1.0 culminates over 6 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.0 can be retrieved by downloading the source code, updating the subversion trunk to revision 5809 (svn up -r 5809) or by using: svn co https://equalizer.svn.sourceforge.net/svnroot/equalizer/tags/release-1.0

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 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 both active and passive stereo rendering, as well as head tracking and head-mounted displays used in immersive Virtual Reality installations.

2. New in this release

Equalizer 1.0 contains the following features, enhancements, bug fixes and documentation changes:

2.1. New Features

1.0, 1.0-beta (0.9.3): No new features

1.0-alpha (0.9.2):

  • Collage: an object-oriented network library, formerly known as eq::net. Eventually Collage will be separated completely from Equalizer. (technology preview)
  • CMake build system for all supported platforms
  • Support for GPU-CPU transfer and compression plugins
  • Failure tolerance during initialization
  • Administrative API for runtime configuration changes (technology preview)
  • Runtime stereo switching to select mono and stereo rendering at application runtime
  • Slave object commit supports serializing changed data on a slave object instance to the master instance
  • Automatic compression of distributed object data
  • Support for pixel formats with 10 bit per color component
  • Rendering capabilities allow application-dependent (de-)activation of channels
  • Interruptible rendering allows applications to stop rendering on all pending frames

0.9.1:

2.2. Enhancements

1.0

  • RFE 3237701: Allow direct mapping of objects with known master node
  • Make co::Object serialization compressor configurable

1.0-beta (0.9.3):

1.0-alpha (0.9.2):

  • Support for Windows 7
  • Upgraded GLEW to version 1.5.7.3
  • Structured error reporting
  • Statistics overlay: Add compression and download ratio, render overlay without usage of depth buffer
  • CPU compression plugins: allow different output from input token
  • New command line argument --eq-logfile
  • New compound auto stereo mode detection (active, anaglyph, passive)
  • RFE 3098130: Support hostnames for multicast connections
  • RFE 2809019: Specify connection from a config file when using appNode
  • RFE 3086646: Load and view equalizer: consider assemble time
  • RFE 3036064: View and load equalizer should consider network times
  • RFE 2927688: Loadbalancer tile sizes should not exceed channel PVP's

0.9.1:

  • Support for Mac OS X 10.6 Snow Leopard
  • Tile and range boundaries for the load equalizer
  • New eq::util::Accum class for accumulation operations using an FBO or the OpenGL accumulation buffer
  • Multiple windows on the same pipe can join the same software swap barrier
  • Configurable message pump
  • Added attached and detach notification to co::Object.

2.3. Optimizations

1.0:

  • Optimize Collage command cache performance
  • Optimize short int data transmission

1.0-beta (0.9.3): No new optimizations

1.0-alpha (0.9.2):

  • Mac OS X: Use SpinLocks over pthread locks for significantly improved performance in various places
  • Collage: Simplify and speed up command packet dispatch and invocation
  • Collage: Optimize RSP multicast using sliding ack window with early acks
  • Collage: Send object instance data during registration to accelerate object mapping

0.9.1:

  • Configurable object serialization buffer size
  • Performance optimization for image compression
  • Reduce memory footprint for eq::net::Objects with change type DELTA

2.4. Examples

1.0, 1.0-beta (0.9.3): No significant example changes

1.0-alpha (0.9.2):

  • New OSGScaleViewer example, evolved from eqOSG contribution
  • EqPly: Run-time configurable image quality
  • EqPly: Run-time toggling of idle anti-aliasing

0.9.1:

  • EqPly: added anti-aliasing when the application is idle
  • EqPly: recursively search directories for models
  • EqPly: switch to faster VBO rendering on OSX

2.5. Tools

  • No Changes

2.6. API Changes

The following changes breaking compatibility with Equalizer 0.6 source code were made:

1.0-alpha and later: API changes are tracked in CHANGES.txt.

0.9.1:

  • The utility classes Accum, AccumBufferObject, FrameBufferObject and Texture where moved from the eq to the eq::util namespace.
  • eq::Window::getColorType has been changed to getColorFormat for consistency.
  • The font handling provided by eq::Window has been refactored for non-OpenGL rendering support.

2.7. Documentation

The following documentation has been added or substantially improved since the last release:

1.0:

1.0-beta (0.9.3):

1.0-alpha (0.9.2):

0.9.1:

2.8. Bug Fixes

Equalizer 1.0 includes various bugfixes over the 0.9 release, including the following:

1.0:

  • 3264449: View/segment channel viewport failure when using pvp
  • 3234693: Delete 'channel' views when view is deleted using admin API
  • Fixed some minor memory leak found with valgrind
  • 3213628: Win32: co::base::Condition leaks memory on destruction
  • 3206311: Node process does not exit after failed Node::configInit
  • 3203934: Channel statistics-related race
  • 3201871: View equalizer: changing capabilities does not update nPipes
  • 3199651: Improve handling of unsupported connections
  • 3196124: View mapping may fail when Config::update is used

1.0-beta (0.9.3):

  • 3190280: Wrong compressor when switching image format
  • 3185777: occasional segfault on exit
  • 3185685: Assembly fails if the channel has no view
  • 3183597: Multicast / RSP assertions on exit
  • 3175659: Excessive memory usage with serialization compression
  • 3175117: Occasional hang on exit
  • 3172604: Near plane adaptation fails sometimes
  • 3171582: Assertion during admin mapping
  • 3168709: AGL/GLX: (half) float PBuffers not implemented
  • 3166620: send-on-register should not send to self
  • 3166560: Win32: RNG not random
  • 3166619: Win32: PipeConnection too slow
  • 3166437: Startup deadlock
  • 3165985: Send-on-register and multicast don't match
  • 3161488: FPS decreases over time
  • 3159980: Constant reallocation of decompression engines
  • 3158106: 'Self' compressor plugin init fails
  • 3156359: 'Admin' passive window uses anaglyph in 1-pipe.stereo.anagly
  • 3156321: Delta object commits call getInstanceData(), not pack()
  • 3156114: Release build / NDEBUG issues
  • 3156103: Add default appNode connection for multi-node configs
  • 3156102: 32/64 bit interoperability broken
  • 3156100: MSVC / gcc interoperability broken
  • 3155603: XCode-build binaries don't find server library
  • 3155543: Missing fragments when using YUV GPU Compressor
  • 3155530: Assertion server/config.cpp:875
  • 3155511: Wrong detection of AUTO stereo mode
  • 3155397: GL_INVALID_OPERATION when switching layouts
  • 3155386: Admin copies are never synced
  • 3138516: eVolve is broken
  • 2985875: View user data mapping fails during initialization
  • 2934387: Ubuntu: GLX problem with PBuffer
  • 2003195: Ortho frustra ignores eye offset

1.0-alpha (0.9.2):

  • 3152421: Distinguish window and channel pointer events
  • 2976899: Config::finishFrame deadlocks when no nodes are active
  • 2994111: Rounding errors with 2D LB and 16 sources
  • 3137933: GLXEW init buggy
  • 2882248: Spurious network deadlocks on Win32
  • 3071764: GLX: No distinction between lowercase and uppercase keys

0.9.1:

  • 2873353: Usage of ext/hash_map and -Werror causes compiler error
  • 2834063: eqPly and eVolve freezes on Mac with glX
  • 2828269: eVolve depth compositing is broken
  • 2642034: Win32: max 64 connections possible
  • 2874188: Occasional lockup at shutdown

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.

  • 2796444: Race during simultaneous node connect
  • 2609161: zoom: depth readback does not work
  • 2556940: zoom: FBO usage
  • 1854929: eqPly GLSL shader has artefacts

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.0 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 10.04, 10.10 (Makefile, i386, x64)
  • Windows: XP and 7 (Visual Studio 2008, i386, x64)
  • Mac OS X: 10.5, 10.6 (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. `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

0.9.1:

  • Patch to fix occasional compilation errors on Windows when using EQ_IGNORE_GLEW.

About

Equalizer is the standard middleware to create and deploy parallel OpenGL-based applications. It enables applications to benefit from multiple graphics cards, processors and computers to scale the rendering performance, visual quality and display size. An Equalizer application runs unmodified on any visualization system, from a simple workstatio…

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 91.8%
  • C 7.9%
  • Other 0.3%