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.