glmark2 2012.11 (20121126)
==========================

* Add a shadow mapping benchmark (scene 'shadow').
* Consolidate EGL interactions into a separate state object.

glmark2 2012.08 (20120817)
==========================

* Display benchmark results in the Android GUI.
* Add an Android option menu offering load/save/delete benchmark list
  functionality, access to last benchmark results, settings and
  information about glmark2.
* Properly handle spaces in scene options on Android.
* Exclude from score calculation benchmarks whose set up wasn't successful.
* Display an appropriate message (instead of a 0 FPS value) if benchmark
  set up isn't successful.
* Add support for standard GNU installation directories.

glmark2 2012.07 (20120719)
==========================

* Add Android GUI for defining and running benchmarks.
* Add benchmark based on the WebGL jellyfish demo (scene 'jellyfish').
* Add benchmark based on the WebGL dynamic terrain demo (scene 'terrain').
* Extend texture scene with the option to compute texture coordinates
  in the shader (option 'texgen').
* Add support for reading texture data from JPEG files.
* Properly support options that have a finite set of acceptable values.

glmark2 2012.06 (20120621)
==========================

* Add command-line option to render in fullscreen mode (--fullscreen).
* Display the frame time in addition to the FPS for each benchmark.

glmark2 2012.05 (20120524)
==========================

* Add benchmark based on the SGI "Ideas in Motion" demo.
* Ensure that the framebuffer is drawn opaquely.
* Add command-line option to configure the visual used for rendering
  (--visual-config).
* Add support for additional models and textures in the 'texture' scene.

glmark2 2012.03 (20120322)
==========================

* X11:
  - Support rendering to an off-screen surface (--off-screen).
  - Add command-line option to select which method to use to "end"
    a frame (--frame-end).

glmark2 2012.02 (20120216)
==========================

* Consolidate X11 and Android main loops.
* Accept command-line options on Android through either a file
  ('/data/glmark2/args') or an extra intent key ('args').
* Support per-scene options for displaying an FPS count on screen
  (show-fps, fps-pos, fps-size), and remove --show-fps command-line option.
* Support per-scene options for displaying a benchmark title on screen
  (title, title-pos, title-size).
* Add command-line option to run benchmarks indefinitely (--run-forever).
* Add command-line option to annotate the benchmarks with on-screen
  information (--annotate == -b :show-fps=true:title=#info#).
* Move various utility classes to libmatrix.
* Fix build issues on Android ICS.

glmark2 2012.01 (20120119)
==========================

* X11:
  - Run each benchmark in a fresh GL context. Use --reuse-context
    to revert to the old default behavior of using the same context
    for all benchmarks.
  - Add option for showing a live FPS counter on screen (--show-fps).
  - If the list of benchmarks to run contains only option-setting
    descriptions, run the default benchmarks.
* Android:
  - Fix crash on platforms not supporting glMapBufferOES.
  - Log the glmark2 score when finishing.
  - Log an error message if we fail to find a suitable EGLContext.
  - Implement various stability improvements.

glmark2 2011.12 (20111215)
==========================

* Add benchmark for bilinear filtering implemented in the fragment
  shader (not included in the default benchmarks).
* Ensure we don't call any GL functions before binding a GL context.
* Fix bug in the ShaderSource object that could lead to shader
  compilation errors in strict OpenGL ES 2.0 implementations.
* Refactor scene update code to reduce duplication.

glmark2 2011.11 (20111116)
==========================

* Add benchmark for bump mapping using a height map.
* Add benchmark for bump mapping using a tangent space normal map
  (not included in the default benchmarks).
* Implement validation support for all default benchmarks.
* Add a colored prefix to log messages in debug mode.
* Clean up and refactor code.

glmark2 2011.10 (20111018)
==========================

* Add benchmark for buffer (VBO) updates.
* Add benchmark for drop-shadow desktop effect.
* Add support for glmark2 extra large models.
* Enable the selection of additional models in the shading benchmark.
* Gracefully handle unsupported OpenGL versions, on both X11 and Android.
* Disable screen dimming and screen rotation on Android.

glmark2 2011.09 (20110921)
==========================

* Add benchmark for blur desktop effect.
* Add support for multiple lights in the phong shading benchmark.
* Add support for loading models from OBJ geometry files.
* Add Stanford Bunny model and make it available in the build benchmark.
* Add per-scene options to set shader precision at runtime.
* Add command-line option to specify the benchmarks to run using a text file.

glmark2 2011.08 (20110818)
==========================

* Port to Android (see INSTALL.android).
* Add benchmark based on pulsar X11 GL screensaver.
* Add benchmark for 2D image processing using the GPU.
* Add command line option to set the size of the output window (-s, --size).
* Implement ShaderSource object to simplify complex shader creation.
* Implement utility functions to access resources in an abstract way.

glmark2 2011.07 (20110719)
==========================

* Replace SDL with custom window handling code.
* Add benchmark for shader conditionals.
* Add benchmark for shader function calls.
* Add benchmark for shader loops.
* Add benchmark for real phong (vs blinn-phong) lighting model.
* Add benchmark for normal mapping.
* Refactor Mesh class to increase flexibility in vertex attribute
  handling.

glmark2 2011.06 (20110624)
==========================

* Improve benchmark versatility by allowing runtime-configurable,
  per-scene options.
* Add command line option to list avalaible scenes and their
  supported options (-l,--list-scenes).
* Allow specifying the scenes to run and their options from the
  command line (-b,--benchmark).
* Add basic output validation functionality (--validate).
* Add command line option to call glFinish() instead of swapping
  the front and back buffers (--no-swap-buffers).
* Manually disable VSync for GL/GLX (work around an SDL bug).
* Replace custom math and shader infrastructure with functionality
  provided by LibMatrix (lp:libmatrix).
* Improve user documentation (--help and man page).

glmark2 11.05 (20110530)
==========================

* Don't use the SDL_OPENGL flag for GLESv2 (LP: #761848).
* Ensure our screen updates are not synchronized with the vertical
  retrace (LP: 761855).
* Use the correct GL headers depending on the flavor (desktop vs ES2).
* Query the correct GL object for shader linking status.

glmark2 11.01 (20110125)
==========================

* Fix visual corruption in glmark2-es2 due to missing depth buffer.
* Fix linking issues with gcc 4.5.
* Use correct GL functions to manipulate shaders vs programs.
* Make result reporting more parser-friendly.
* Upgrade build system to waf 1.6.2.

glmark2 10.07.1 (20100728)
==========================

* Define the precision of fragment shader variables for OpenGL ES 2.0.

glmark2 10.07 (20100715)
========================

* First release.
* Included benchmarks:
  - Rendering using vertex arrays
  - Rendering using VBOs
  - Texturing using nearest filtering
  - Texturing using linear filtering
  - Texturing using trilinear mipmapped filtering
  - Lighting per vertex using simple GLSL shaders
  - Lighting per pixel using elaborate GLSL shaders
