GLBench runs a bunch of OpenGL or OpenGL ES performance tests and writes 
performance numbers to stdout and resulting images to a directory for 
verification.

For the test to pass the performance numbers have to be better than a predefined 
threshold, while the resulting images have to be found in a repository of 
reference images. As the image name encodes the raw pixel MD5 this can be 
done as a simple file existence check. If we ever get too much pixel 
variation using a tool like perceptualdiff to waive small differences 
should be acceptable.


Executable options
==================

./glbench [-save [-outdir=<directory>]]


Example
=======

./glbench -save -outdir=img
# board_id: NVIDIA Corporation - Quadro FX 380/PCI/SSE2
swap_swap                    =   214.77 us           [swap_swap.pixmd5-20dbc406b95e214a799a6a7f9c700d2f.png]
clear_color                  =  4448.28 mpixels_sec  [clear_color.pixmd5-e3609de1022a164fe240a562c69367de.png]
clear_depth                  = 10199.76 mpixels_sec  [clear_depth.pixmd5-e3609de1022a164fe240a562c69367de.png]
clear_colordepth             =  3250.57 mpixels_sec  [clear_colordepth.pixmd5-e3609de1022a164fe240a562c69367de.png]
clear_depthstencil           = 26447.22 mpixels_sec  [clear_depthstencil.pixmd5-e3609de1022a164fe240a562c69367de.png]
[...]

ls img
clear_color.pixmd5-e3609de122a164fe240a562c69367de.png
clear_colordepth.pixmd5-e3609de122a164fe240a562c69367de.png
clear_colordepthstencil.pixmd5-e3609de122a164fe240a562c69367de.png
compositing.pixmd5-7d02a16a7ac15cd6cbbc5c786f1.png
[...]


Running from the autotest harness
=================================

The autotest script graphics_GLBench.py will 
0) run glbench -save
1) first try to identify known buggy images by searching in 
       deps/glbench/glbench_knownbad_images.txt
2) then identify good images by searching in 
       deps/glbench/glbench_reference_images.txt
3) if it is unable to find the test image it will do a second lookup at
       http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/glbench_*
4) TODO(ihf) use perceptualdiff to do a fuzzy compare
5) raise an error if the image is completely unknown
6) report performance numbers back to the harness


Handling of reference images
============================

Good reference images themselves are located at       ../glbench-images/glbench_reference_images/
Images that have outstanding defects and an open bug filed are at ../glbench-images/glbench_knownbad_images/chromium-bug-NNNNN/
When that bug is closed the directory should be moved to ../glbench-images/glbench_fixedbad_images/chromium-bug-NNNNN/

To push out new reference images place them in the appropriate 
directories (create a new bug if needed) and run 
    > update_glbench_image_filelists.sh 

to update the image filelists in deps/glbench/glbench_reference_images.txt etc.
