Merge lp:~glmark2-dev/glmark2/glmark2-package into lp:glmark2/2011.11

Proposed by kevin gunn
Status: Work in progress
Proposed branch: lp:~glmark2-dev/glmark2/glmark2-package
Merge into: lp:glmark2/2011.11
Diff against target: 236804 lines (+234409/-0) (has conflicts)
436 files modified
COPYING (+674/-0)
COPYING.SGI (+40/-0)
INSTALL (+13/-0)
INSTALL.android (+35/-0)
NEWS (+218/-0)
README (+24/-0)
README.android (+50/-0)
android/Android.mk (+14/-0)
android/AndroidManifest.xml (+54/-0)
android/CleanSpec.mk (+6/-0)
android/build.xml (+92/-0)
android/jni/Android.mk (+76/-0)
android/jni/Android.ndk.mk (+65/-0)
android/jni/Application.mk (+3/-0)
android/project.properties (+14/-0)
android/res/layout/activity_about.xml (+43/-0)
android/res/layout/activity_editor.xml (+34/-0)
android/res/layout/activity_main.xml (+20/-0)
android/res/layout/activity_results.xml (+15/-0)
android/res/layout/list_header.xml (+5/-0)
android/res/layout/list_item.xml (+32/-0)
android/res/layout/save_dialog.xml (+28/-0)
android/res/menu/main_options_menu.xml (+26/-0)
android/res/values/strings.xml (+46/-0)
android/res/xml/preferences.xml (+15/-0)
android/src/org/linaro/glmark2/AboutActivity.java (+52/-0)
android/src/org/linaro/glmark2/BenchmarkListManager.java (+189/-0)
android/src/org/linaro/glmark2/EditorActivity.java (+548/-0)
android/src/org/linaro/glmark2/GLVisualConfig.java (+46/-0)
android/src/org/linaro/glmark2/Glmark2Activity.java (+88/-0)
android/src/org/linaro/glmark2/Glmark2Native.java (+34/-0)
android/src/org/linaro/glmark2/Glmark2SurfaceView.java (+218/-0)
android/src/org/linaro/glmark2/MainActivity.java (+482/-0)
android/src/org/linaro/glmark2/MainPreferencesActivity.java (+33/-0)
android/src/org/linaro/glmark2/ResultsActivity.java (+58/-0)
android/src/org/linaro/glmark2/SceneInfo.java (+96/-0)
data/models/bunny.obj (+104501/-0)
data/models/jellyfish.jobj (+24432/-0)
data/shaders/README.shaders (+5/-0)
data/shaders/buffer-wireframe.frag (+17/-0)
data/shaders/buffer-wireframe.vert (+57/-0)
data/shaders/bump-height.frag (+56/-0)
data/shaders/bump-height.vert (+28/-0)
data/shaders/bump-normals-tangent.frag (+49/-0)
data/shaders/bump-normals-tangent.vert (+39/-0)
data/shaders/bump-normals.frag (+44/-0)
data/shaders/bump-normals.vert (+14/-0)
data/shaders/bump-poly.frag (+33/-0)
data/shaders/bump-poly.vert (+16/-0)
data/shaders/conditionals-step-conditional.all (+4/-0)
data/shaders/conditionals-step-simple.all (+1/-0)
data/shaders/conditionals.frag (+11/-0)
data/shaders/conditionals.vert (+25/-0)
data/shaders/depth.frag (+6/-0)
data/shaders/depth.vert (+12/-0)
data/shaders/desktop-blur.frag (+13/-0)
data/shaders/desktop.frag (+10/-0)
data/shaders/desktop.vert (+11/-0)
data/shaders/effect-2d-convolution.frag (+12/-0)
data/shaders/effect-2d.vert (+10/-0)
data/shaders/function-call.all (+1/-0)
data/shaders/function-step-low.all (+1/-0)
data/shaders/function-step-medium.all (+2/-0)
data/shaders/function.frag (+16/-0)
data/shaders/function.vert (+30/-0)
data/shaders/gradient.frag (+10/-0)
data/shaders/gradient.vert (+10/-0)
data/shaders/ideas-lamp-lit.frag (+68/-0)
data/shaders/ideas-lamp-lit.vert (+28/-0)
data/shaders/ideas-lamp-unlit.frag (+6/-0)
data/shaders/ideas-lamp-unlit.vert (+11/-0)
data/shaders/ideas-logo-flat.frag (+6/-0)
data/shaders/ideas-logo-flat.vert (+9/-0)
data/shaders/ideas-logo-shadow.frag (+10/-0)
data/shaders/ideas-logo-shadow.vert (+9/-0)
data/shaders/ideas-logo.frag (+35/-0)
data/shaders/ideas-logo.vert (+28/-0)
data/shaders/ideas-paper.frag (+6/-0)
data/shaders/ideas-paper.vert (+22/-0)
data/shaders/ideas-table.frag (+6/-0)
data/shaders/ideas-table.vert (+22/-0)
data/shaders/ideas-text.frag (+6/-0)
data/shaders/ideas-text.vert (+18/-0)
data/shaders/ideas-under-table.frag (+6/-0)
data/shaders/ideas-under-table.vert (+11/-0)
data/shaders/jellyfish.frag (+21/-0)
data/shaders/jellyfish.vert (+56/-0)
data/shaders/light-advanced.frag (+33/-0)
data/shaders/light-advanced.vert (+16/-0)
data/shaders/light-basic-tex-bilinear.frag (+31/-0)
data/shaders/light-basic-tex.frag (+11/-0)
data/shaders/light-basic-texgen.vert (+30/-0)
data/shaders/light-basic.frag (+7/-0)
data/shaders/light-basic.vert (+29/-0)
data/shaders/light-cel.frag (+60/-0)
data/shaders/light-phong.frag (+29/-0)
data/shaders/light-phong.vert (+23/-0)
data/shaders/light-refract.frag (+45/-0)
data/shaders/light-refract.vert (+28/-0)
data/shaders/loop-step-loop.all (+2/-0)
data/shaders/loop-step-simple.all (+1/-0)
data/shaders/loop.frag (+12/-0)
data/shaders/loop.vert (+26/-0)
data/shaders/pulsar-light.vert (+31/-0)
data/shaders/pulsar.vert (+19/-0)
data/shaders/shadow.frag (+17/-0)
data/shaders/shadow.vert (+16/-0)
data/shaders/terrain-blur.frag (+14/-0)
data/shaders/terrain-luminance.frag (+15/-0)
data/shaders/terrain-noise.frag (+124/-0)
data/shaders/terrain-normalmap.frag (+15/-0)
data/shaders/terrain-overlay.frag (+10/-0)
data/shaders/terrain-texture.vert (+18/-0)
data/shaders/terrain.frag (+112/-0)
data/shaders/terrain.vert (+48/-0)
data/shaders/text-renderer.frag (+10/-0)
data/shaders/text-renderer.vert (+10/-0)
data/wscript_build (+8/-0)
debian/changelog (+171/-0)
debian/compat (+1/-0)
debian/control (+125/-0)
debian/copyright (+103/-0)
debian/create_package_install_files.sh (+20/-0)
debian/create_package_manpages_files.sh (+20/-0)
debian/glmark2-data.install (+1/-0)
debian/rules (+37/-0)
debian/source/format (+1/-0)
debian/watch (+2/-0)
doc/glmark2.1.in (+115/-0)
doc/wscript_build (+12/-0)
src/android.cpp (+495/-0)
src/benchmark-collection.cpp (+119/-0)
src/benchmark-collection.h (+59/-0)
src/benchmark.cpp (+161/-0)
src/benchmark.h (+126/-0)
src/canvas-android.cpp (+191/-0)
src/canvas-android.h (+57/-0)
src/canvas-generic.cpp (+448/-0)
src/canvas-generic.h (+75/-0)
src/canvas.h (+261/-0)
src/default-benchmarks.h (+80/-0)
src/gl-headers.cpp (+46/-0)
src/gl-headers.h (+71/-0)
src/gl-state-egl.cpp (+619/-0)
src/gl-state-egl.h (+153/-0)
src/gl-state-glx.cpp (+348/-0)
src/gl-state-glx.h (+67/-0)
src/gl-state.h (+42/-0)
src/gl-visual-config.cpp (+123/-0)
src/gl-visual-config.h (+65/-0)
src/image-reader.cpp (+386/-0)
src/image-reader.h (+77/-0)
src/libjpeg-turbo/README (+290/-0)
src/libjpeg-turbo/README-turbo.txt (+361/-0)
src/libjpeg-turbo/config.h (+137/-0)
src/libjpeg-turbo/jaricom.c (+153/-0)
src/libjpeg-turbo/jcapimin.c (+292/-0)
src/libjpeg-turbo/jcapistd.c (+161/-0)
src/libjpeg-turbo/jcarith.c (+925/-0)
src/libjpeg-turbo/jccoefct.c (+449/-0)
src/libjpeg-turbo/jccolext.c.inc (+114/-0)
src/libjpeg-turbo/jccolor.c (+599/-0)
src/libjpeg-turbo/jcdctmgr.c (+642/-0)
src/libjpeg-turbo/jchuff.c (+1026/-0)
src/libjpeg-turbo/jchuff.h (+47/-0)
src/libjpeg-turbo/jcinit.c (+76/-0)
src/libjpeg-turbo/jcmainct.c (+293/-0)
src/libjpeg-turbo/jcmarker.c (+666/-0)
src/libjpeg-turbo/jcmaster.c (+624/-0)
src/libjpeg-turbo/jcomapi.c (+106/-0)
src/libjpeg-turbo/jconfig.h (+58/-0)
src/libjpeg-turbo/jcparam.c (+649/-0)
src/libjpeg-turbo/jcphuff.c (+831/-0)
src/libjpeg-turbo/jcprepct.c (+354/-0)
src/libjpeg-turbo/jcsample.c (+527/-0)
src/libjpeg-turbo/jctrans.c (+399/-0)
src/libjpeg-turbo/jdapimin.c (+395/-0)
src/libjpeg-turbo/jdapistd.c (+277/-0)
src/libjpeg-turbo/jdarith.c (+761/-0)
src/libjpeg-turbo/jdatadst-tj.c (+188/-0)
src/libjpeg-turbo/jdatasrc-tj.c (+182/-0)
src/libjpeg-turbo/jdcoefct.c (+749/-0)
src/libjpeg-turbo/jdcolext.c.inc (+104/-0)
src/libjpeg-turbo/jdcolor.c (+529/-0)
src/libjpeg-turbo/jdct.h (+184/-0)
src/libjpeg-turbo/jddctmgr.c (+288/-0)
src/libjpeg-turbo/jdhuff.c (+808/-0)
src/libjpeg-turbo/jdhuff.h (+234/-0)
src/libjpeg-turbo/jdinput.c (+471/-0)
src/libjpeg-turbo/jdmainct.c (+514/-0)
src/libjpeg-turbo/jdmarker.c (+1364/-0)
src/libjpeg-turbo/jdmaster.c (+601/-0)
src/libjpeg-turbo/jdmerge.c (+455/-0)
src/libjpeg-turbo/jdmrgext.c.inc (+156/-0)
src/libjpeg-turbo/jdphuff.c (+668/-0)
src/libjpeg-turbo/jdpostct.c (+290/-0)
src/libjpeg-turbo/jdsample.c (+496/-0)
src/libjpeg-turbo/jdtrans.c (+152/-0)
src/libjpeg-turbo/jerror.c (+252/-0)
src/libjpeg-turbo/jerror.h (+314/-0)
src/libjpeg-turbo/jfdctflt.c (+168/-0)
src/libjpeg-turbo/jfdctfst.c (+224/-0)
src/libjpeg-turbo/jfdctint.c (+283/-0)
src/libjpeg-turbo/jidctflt.c (+242/-0)
src/libjpeg-turbo/jidctfst.c (+368/-0)
src/libjpeg-turbo/jidctint.c (+389/-0)
src/libjpeg-turbo/jidctred.c (+398/-0)
src/libjpeg-turbo/jinclude.h (+91/-0)
src/libjpeg-turbo/jmemmgr.c (+1151/-0)
src/libjpeg-turbo/jmemnobs.c (+109/-0)
src/libjpeg-turbo/jmemsys.h (+198/-0)
src/libjpeg-turbo/jmorecfg.h (+404/-0)
src/libjpeg-turbo/jpegcomp.h (+26/-0)
src/libjpeg-turbo/jpegint.h (+401/-0)
src/libjpeg-turbo/jpeglib.h (+1213/-0)
src/libjpeg-turbo/jquant1.c (+860/-0)
src/libjpeg-turbo/jquant2.c (+1293/-0)
src/libjpeg-turbo/jsimd.h (+98/-0)
src/libjpeg-turbo/jsimddct.h (+102/-0)
src/libjpeg-turbo/jutils.c (+179/-0)
src/libjpeg-turbo/jversion.h (+31/-0)
src/libjpeg-turbo/simd/jsimd.h (+666/-0)
src/libjpeg-turbo/simd/jsimd_arm.c (+670/-0)
src/libjpeg-turbo/simd/jsimd_arm_neon.S (+2159/-0)
src/libmatrix/COPYING (+21/-0)
src/libmatrix/Makefile (+42/-0)
src/libmatrix/README (+11/-0)
src/libmatrix/gl-if.h (+18/-0)
src/libmatrix/log.cc (+173/-0)
src/libmatrix/log.h (+51/-0)
src/libmatrix/mat.cc (+173/-0)
src/libmatrix/mat.h (+1221/-0)
src/libmatrix/program.cc (+360/-0)
src/libmatrix/program.h (+165/-0)
src/libmatrix/shader-source.cc (+615/-0)
src/libmatrix/shader-source.h (+103/-0)
src/libmatrix/stack.h (+106/-0)
src/libmatrix/test/basic-global-const.vert (+15/-0)
src/libmatrix/test/basic.frag (+7/-0)
src/libmatrix/test/basic.vert (+14/-0)
src/libmatrix/test/const_vec_test.cc (+60/-0)
src/libmatrix/test/const_vec_test.h (+39/-0)
src/libmatrix/test/inverse_test.cc (+172/-0)
src/libmatrix/test/inverse_test.h (+39/-0)
src/libmatrix/test/libmatrix_test.cc (+72/-0)
src/libmatrix/test/libmatrix_test.h (+51/-0)
src/libmatrix/test/options.cc (+76/-0)
src/libmatrix/test/shader_source_test.cc (+49/-0)
src/libmatrix/test/shader_source_test.h (+32/-0)
src/libmatrix/test/transpose_test.cc (+297/-0)
src/libmatrix/test/transpose_test.h (+38/-0)
src/libmatrix/test/util_split_test.cc (+180/-0)
src/libmatrix/test/util_split_test.h (+31/-0)
src/libmatrix/util.cc (+343/-0)
src/libmatrix/util.h (+142/-0)
src/libmatrix/vec.h (+716/-0)
src/libpng/ANNOUNCE (+65/-0)
src/libpng/CMakeLists.txt (+284/-0)
src/libpng/INSTALL (+143/-0)
src/libpng/KNOWNBUG (+22/-0)
src/libpng/LICENSE (+111/-0)
src/libpng/README (+275/-0)
src/libpng/TODO (+25/-0)
src/libpng/Y2KINFO (+55/-0)
src/libpng/png.c (+1100/-0)
src/libpng/png.h (+3796/-0)
src/libpng/pngconf.h (+1665/-0)
src/libpng/pngerror.c (+396/-0)
src/libpng/pnggccrd.c (+103/-0)
src/libpng/pngget.c (+944/-0)
src/libpng/pngmem.c (+641/-0)
src/libpng/pngpread.c (+1774/-0)
src/libpng/pngread.c (+1528/-0)
src/libpng/pngrio.c (+180/-0)
src/libpng/pngrtran.c (+4467/-0)
src/libpng/pngrutil.c (+3390/-0)
src/libpng/pngset.c (+1226/-0)
src/libpng/pngtrans.c (+699/-0)
src/libpng/pngvcrd.c (+1/-0)
src/libpng/pngwio.c (+260/-0)
src/libpng/pngwrite.c (+1593/-0)
src/libpng/pngwtran.c (+582/-0)
src/libpng/pngwutil.c (+2832/-0)
src/main-loop.cpp (+333/-0)
src/main-loop.h (+141/-0)
src/main.cpp (+213/-0)
src/mesh.cpp (+639/-0)
src/mesh.h (+117/-0)
src/model.cpp (+901/-0)
src/model.h (+144/-0)
src/native-state-drm.cpp (+348/-0)
src/native-state-drm.h (+92/-0)
src/native-state-mir.cpp (+269/-0)
src/native-state-mir.h (+52/-0)
src/native-state-wayland.cpp (+300/-0)
src/native-state-wayland.h (+117/-0)
src/native-state-x11.cpp (+210/-0)
src/native-state-x11.h (+51/-0)
src/native-state.h (+68/-0)
src/options.cpp (+199/-0)
src/options.h (+59/-0)
src/scene-buffer.cpp (+472/-0)
src/scene-build.cpp (+269/-0)
src/scene-bump.cpp (+417/-0)
src/scene-clear.cpp (+81/-0)
src/scene-collection.h (+81/-0)
src/scene-conditionals.cpp (+156/-0)
src/scene-default-options.cpp (+62/-0)
src/scene-desktop.cpp (+1039/-0)
src/scene-effect-2d.cpp (+444/-0)
src/scene-function.cpp (+182/-0)
src/scene-grid.cpp (+126/-0)
src/scene-ideas.cpp (+414/-0)
src/scene-ideas/a.cc (+179/-0)
src/scene-ideas/characters.h (+157/-0)
src/scene-ideas/d.cc (+142/-0)
src/scene-ideas/e.cc (+139/-0)
src/scene-ideas/i.cc (+116/-0)
src/scene-ideas/lamp.cc (+258/-0)
src/scene-ideas/lamp.h (+64/-0)
src/scene-ideas/logo.cc (+788/-0)
src/scene-ideas/logo.h (+126/-0)
src/scene-ideas/m.cc (+210/-0)
src/scene-ideas/n.cc (+146/-0)
src/scene-ideas/o.cc (+139/-0)
src/scene-ideas/s.cc (+130/-0)
src/scene-ideas/splines.cc (+200/-0)
src/scene-ideas/splines.h (+83/-0)
src/scene-ideas/t.cc (+147/-0)
src/scene-ideas/table.cc (+353/-0)
src/scene-ideas/table.h (+94/-0)
src/scene-jellyfish.cpp (+631/-0)
src/scene-jellyfish.h (+124/-0)
src/scene-loop.cpp (+179/-0)
src/scene-pulsar.cpp (+331/-0)
src/scene-refract.cpp (+483/-0)
src/scene-refract.h (+106/-0)
src/scene-shading.cpp (+353/-0)
src/scene-shadow.cpp (+560/-0)
src/scene-terrain.cpp (+362/-0)
src/scene-terrain/base-renderer.cpp (+144/-0)
src/scene-terrain/blur-renderer.cpp (+161/-0)
src/scene-terrain/copy-renderer.cpp (+55/-0)
src/scene-terrain/luminance-renderer.cpp (+57/-0)
src/scene-terrain/normal-from-height-renderer.cpp (+59/-0)
src/scene-terrain/overlay-renderer.cpp (+122/-0)
src/scene-terrain/renderer-chain.cpp (+115/-0)
src/scene-terrain/renderer.h (+348/-0)
src/scene-terrain/simplex-noise-renderer.cpp (+56/-0)
src/scene-terrain/terrain-renderer.cpp (+246/-0)
src/scene-terrain/texture-renderer.cpp (+69/-0)
src/scene-texture.cpp (+348/-0)
src/scene.cpp (+287/-0)
src/scene.h (+605/-0)
src/text-renderer.cpp (+292/-0)
src/text-renderer.h (+60/-0)
src/texture.cpp (+212/-0)
src/texture.h (+87/-0)
src/wscript_build (+81/-0)
waf (+162/-0)
waflib/Build.py (+731/-0)
waflib/ConfigSet.py (+151/-0)
waflib/Configure.py (+315/-0)
waflib/Context.py (+299/-0)
waflib/Errors.py (+37/-0)
waflib/Logs.py (+149/-0)
waflib/Node.py (+506/-0)
waflib/Options.py (+134/-0)
waflib/Runner.py (+197/-0)
waflib/Scripting.py (+367/-0)
waflib/Task.py (+672/-0)
waflib/TaskGen.py (+353/-0)
waflib/Tools/__init__.py (+4/-0)
waflib/Tools/ar.py (+12/-0)
waflib/Tools/asm.py (+25/-0)
waflib/Tools/bison.py (+29/-0)
waflib/Tools/c.py (+27/-0)
waflib/Tools/c_aliases.py (+56/-0)
waflib/Tools/c_config.py (+713/-0)
waflib/Tools/c_osx.py (+121/-0)
waflib/Tools/c_preproc.py (+606/-0)
waflib/Tools/c_tests.py (+146/-0)
waflib/Tools/ccroot.py (+375/-0)
waflib/Tools/compiler_c.py (+39/-0)
waflib/Tools/compiler_cxx.py (+39/-0)
waflib/Tools/compiler_d.py (+30/-0)
waflib/Tools/compiler_fc.py (+43/-0)
waflib/Tools/cs.py (+98/-0)
waflib/Tools/cxx.py (+27/-0)
waflib/Tools/d.py (+56/-0)
waflib/Tools/d_config.py (+47/-0)
waflib/Tools/d_scan.py (+133/-0)
waflib/Tools/dbus.py (+30/-0)
waflib/Tools/dmd.py (+47/-0)
waflib/Tools/errcheck.py (+161/-0)
waflib/Tools/fc.py (+123/-0)
waflib/Tools/fc_config.py (+283/-0)
waflib/Tools/fc_scan.py (+68/-0)
waflib/Tools/flex.py (+27/-0)
waflib/Tools/g95.py (+55/-0)
waflib/Tools/gas.py (+11/-0)
waflib/Tools/gcc.py (+98/-0)
waflib/Tools/gdc.py (+34/-0)
waflib/Tools/gfortran.py (+69/-0)
waflib/Tools/glib2.py (+174/-0)
waflib/Tools/gnu_dirs.py (+65/-0)
waflib/Tools/gxx.py (+98/-0)
waflib/Tools/icc.py (+31/-0)
waflib/Tools/icpc.py (+30/-0)
waflib/Tools/ifort.py (+49/-0)
waflib/Tools/intltool.py (+78/-0)
waflib/Tools/irixcc.py (+49/-0)
waflib/Tools/javaw.py (+275/-0)
waflib/Tools/kde4.py (+49/-0)
waflib/Tools/lua.py (+19/-0)
waflib/Tools/msvc.py (+654/-0)
waflib/Tools/nasm.py (+14/-0)
waflib/Tools/perl.py (+81/-0)
waflib/Tools/python.py (+336/-0)
waflib/Tools/qt4.py (+434/-0)
waflib/Tools/ruby.py (+104/-0)
waflib/Tools/suncc.py (+54/-0)
waflib/Tools/suncxx.py (+55/-0)
waflib/Tools/tex.py (+242/-0)
waflib/Tools/vala.py (+216/-0)
waflib/Tools/waf_unit_test.py (+79/-0)
waflib/Tools/winres.py (+34/-0)
waflib/Tools/xlc.py (+46/-0)
waflib/Tools/xlcxx.py (+46/-0)
waflib/Utils.py (+336/-0)
waflib/__init__.py (+4/-0)
waflib/ansiterm.py (+177/-0)
waflib/extras/__init__.py (+4/-0)
waflib/extras/compat15.py (+223/-0)
waflib/fixpy2.py (+50/-0)
wscript (+202/-0)
Conflict adding file COPYING.SGI.  Moved existing file to COPYING.SGI.moved.
Conflict adding file COPYING.  Moved existing file to COPYING.moved.
Conflict adding file INSTALL.android.  Moved existing file to INSTALL.android.moved.
Conflict adding file INSTALL.  Moved existing file to INSTALL.moved.
Conflict adding file NEWS.  Moved existing file to NEWS.moved.
Conflict adding file README.android.  Moved existing file to README.android.moved.
Conflict adding file README.  Moved existing file to README.moved.
Conflict adding file android.  Moved existing file to android.moved.
Conflict adding file data.  Moved existing file to data.moved.
Conflict adding file doc.  Moved existing file to doc.moved.
Conflict adding file src.  Moved existing file to src.moved.
Conflict adding file waf.  Moved existing file to waf.moved.
Conflict adding file waflib.  Moved existing file to waflib.moved.
Conflict adding file wscript.  Moved existing file to wscript.moved.
To merge this branch: bzr merge lp:~glmark2-dev/glmark2/glmark2-package
Reviewer Review Type Date Requested Status
glmark2 developers Pending
Review via email: mp+218698@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

28. By Alexandros Frantzis

* New upstream release 2014.03.
* debian/control:
  - Update Standards-Version to 3.9.5.
  - Add binary packages for wayland, mir and drm variants.
* debian/rules:
  - Build wayland, mir and drm variants.
  - Programatically create .install and .manpages files for
    variant binary packages.

27. By Alexandros Frantzis

debian/rules: Update configuration flags

26. By Jesse Barker

New upstream release 2012.12.

25. By Jesse Barker

New upstream release 2012.11.

24. By Alexandros Frantzis

New upstream release 2012.08.

23. By Alexandros Frantzis

* New upstream release 2012.07.
* debian/changelog:
  - Update dates to -2012 where needed.
  - Add section for src/scene-ideas*.
  - Add section for src/libjpeg-turbo/*.

22. By Alexandros Frantzis

* debian/control:
  - Add libjpeg-dev build dependency.

21. By Alexandros Frantzis

* New upstream release 2012.06.
* debian/rules:
  - Clean compiled python code from unpacked waflib/ directory, as
    described in http://wiki.debian.org/UnpackWaf .

20. By Alexandros Frantzis

Remove changelog entry that messed up bzr merge-upstream.

19. By Alexandros Frantzis

* debian/rules:
  - Clean compiled python code from unpacked waflib/ directory, as
    described in http://wiki.debian.org/UnpackWaf .

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'COPYING'
2--- COPYING 1970-01-01 00:00:00 +0000
3+++ COPYING 2014-05-07 20:44:08 +0000
4@@ -0,0 +1,674 @@
5+ GNU GENERAL PUBLIC LICENSE
6+ Version 3, 29 June 2007
7+
8+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
9+ Everyone is permitted to copy and distribute verbatim copies
10+ of this license document, but changing it is not allowed.
11+
12+ Preamble
13+
14+ The GNU General Public License is a free, copyleft license for
15+software and other kinds of works.
16+
17+ The licenses for most software and other practical works are designed
18+to take away your freedom to share and change the works. By contrast,
19+the GNU General Public License is intended to guarantee your freedom to
20+share and change all versions of a program--to make sure it remains free
21+software for all its users. We, the Free Software Foundation, use the
22+GNU General Public License for most of our software; it applies also to
23+any other work released this way by its authors. You can apply it to
24+your programs, too.
25+
26+ When we speak of free software, we are referring to freedom, not
27+price. Our General Public Licenses are designed to make sure that you
28+have the freedom to distribute copies of free software (and charge for
29+them if you wish), that you receive source code or can get it if you
30+want it, that you can change the software or use pieces of it in new
31+free programs, and that you know you can do these things.
32+
33+ To protect your rights, we need to prevent others from denying you
34+these rights or asking you to surrender the rights. Therefore, you have
35+certain responsibilities if you distribute copies of the software, or if
36+you modify it: responsibilities to respect the freedom of others.
37+
38+ For example, if you distribute copies of such a program, whether
39+gratis or for a fee, you must pass on to the recipients the same
40+freedoms that you received. You must make sure that they, too, receive
41+or can get the source code. And you must show them these terms so they
42+know their rights.
43+
44+ Developers that use the GNU GPL protect your rights with two steps:
45+(1) assert copyright on the software, and (2) offer you this License
46+giving you legal permission to copy, distribute and/or modify it.
47+
48+ For the developers' and authors' protection, the GPL clearly explains
49+that there is no warranty for this free software. For both users' and
50+authors' sake, the GPL requires that modified versions be marked as
51+changed, so that their problems will not be attributed erroneously to
52+authors of previous versions.
53+
54+ Some devices are designed to deny users access to install or run
55+modified versions of the software inside them, although the manufacturer
56+can do so. This is fundamentally incompatible with the aim of
57+protecting users' freedom to change the software. The systematic
58+pattern of such abuse occurs in the area of products for individuals to
59+use, which is precisely where it is most unacceptable. Therefore, we
60+have designed this version of the GPL to prohibit the practice for those
61+products. If such problems arise substantially in other domains, we
62+stand ready to extend this provision to those domains in future versions
63+of the GPL, as needed to protect the freedom of users.
64+
65+ Finally, every program is threatened constantly by software patents.
66+States should not allow patents to restrict development and use of
67+software on general-purpose computers, but in those that do, we wish to
68+avoid the special danger that patents applied to a free program could
69+make it effectively proprietary. To prevent this, the GPL assures that
70+patents cannot be used to render the program non-free.
71+
72+ The precise terms and conditions for copying, distribution and
73+modification follow.
74+
75+ TERMS AND CONDITIONS
76+
77+ 0. Definitions.
78+
79+ "This License" refers to version 3 of the GNU General Public License.
80+
81+ "Copyright" also means copyright-like laws that apply to other kinds of
82+works, such as semiconductor masks.
83+
84+ "The Program" refers to any copyrightable work licensed under this
85+License. Each licensee is addressed as "you". "Licensees" and
86+"recipients" may be individuals or organizations.
87+
88+ To "modify" a work means to copy from or adapt all or part of the work
89+in a fashion requiring copyright permission, other than the making of an
90+exact copy. The resulting work is called a "modified version" of the
91+earlier work or a work "based on" the earlier work.
92+
93+ A "covered work" means either the unmodified Program or a work based
94+on the Program.
95+
96+ To "propagate" a work means to do anything with it that, without
97+permission, would make you directly or secondarily liable for
98+infringement under applicable copyright law, except executing it on a
99+computer or modifying a private copy. Propagation includes copying,
100+distribution (with or without modification), making available to the
101+public, and in some countries other activities as well.
102+
103+ To "convey" a work means any kind of propagation that enables other
104+parties to make or receive copies. Mere interaction with a user through
105+a computer network, with no transfer of a copy, is not conveying.
106+
107+ An interactive user interface displays "Appropriate Legal Notices"
108+to the extent that it includes a convenient and prominently visible
109+feature that (1) displays an appropriate copyright notice, and (2)
110+tells the user that there is no warranty for the work (except to the
111+extent that warranties are provided), that licensees may convey the
112+work under this License, and how to view a copy of this License. If
113+the interface presents a list of user commands or options, such as a
114+menu, a prominent item in the list meets this criterion.
115+
116+ 1. Source Code.
117+
118+ The "source code" for a work means the preferred form of the work
119+for making modifications to it. "Object code" means any non-source
120+form of a work.
121+
122+ A "Standard Interface" means an interface that either is an official
123+standard defined by a recognized standards body, or, in the case of
124+interfaces specified for a particular programming language, one that
125+is widely used among developers working in that language.
126+
127+ The "System Libraries" of an executable work include anything, other
128+than the work as a whole, that (a) is included in the normal form of
129+packaging a Major Component, but which is not part of that Major
130+Component, and (b) serves only to enable use of the work with that
131+Major Component, or to implement a Standard Interface for which an
132+implementation is available to the public in source code form. A
133+"Major Component", in this context, means a major essential component
134+(kernel, window system, and so on) of the specific operating system
135+(if any) on which the executable work runs, or a compiler used to
136+produce the work, or an object code interpreter used to run it.
137+
138+ The "Corresponding Source" for a work in object code form means all
139+the source code needed to generate, install, and (for an executable
140+work) run the object code and to modify the work, including scripts to
141+control those activities. However, it does not include the work's
142+System Libraries, or general-purpose tools or generally available free
143+programs which are used unmodified in performing those activities but
144+which are not part of the work. For example, Corresponding Source
145+includes interface definition files associated with source files for
146+the work, and the source code for shared libraries and dynamically
147+linked subprograms that the work is specifically designed to require,
148+such as by intimate data communication or control flow between those
149+subprograms and other parts of the work.
150+
151+ The Corresponding Source need not include anything that users
152+can regenerate automatically from other parts of the Corresponding
153+Source.
154+
155+ The Corresponding Source for a work in source code form is that
156+same work.
157+
158+ 2. Basic Permissions.
159+
160+ All rights granted under this License are granted for the term of
161+copyright on the Program, and are irrevocable provided the stated
162+conditions are met. This License explicitly affirms your unlimited
163+permission to run the unmodified Program. The output from running a
164+covered work is covered by this License only if the output, given its
165+content, constitutes a covered work. This License acknowledges your
166+rights of fair use or other equivalent, as provided by copyright law.
167+
168+ You may make, run and propagate covered works that you do not
169+convey, without conditions so long as your license otherwise remains
170+in force. You may convey covered works to others for the sole purpose
171+of having them make modifications exclusively for you, or provide you
172+with facilities for running those works, provided that you comply with
173+the terms of this License in conveying all material for which you do
174+not control copyright. Those thus making or running the covered works
175+for you must do so exclusively on your behalf, under your direction
176+and control, on terms that prohibit them from making any copies of
177+your copyrighted material outside their relationship with you.
178+
179+ Conveying under any other circumstances is permitted solely under
180+the conditions stated below. Sublicensing is not allowed; section 10
181+makes it unnecessary.
182+
183+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
184+
185+ No covered work shall be deemed part of an effective technological
186+measure under any applicable law fulfilling obligations under article
187+11 of the WIPO copyright treaty adopted on 20 December 1996, or
188+similar laws prohibiting or restricting circumvention of such
189+measures.
190+
191+ When you convey a covered work, you waive any legal power to forbid
192+circumvention of technological measures to the extent such circumvention
193+is effected by exercising rights under this License with respect to
194+the covered work, and you disclaim any intention to limit operation or
195+modification of the work as a means of enforcing, against the work's
196+users, your or third parties' legal rights to forbid circumvention of
197+technological measures.
198+
199+ 4. Conveying Verbatim Copies.
200+
201+ You may convey verbatim copies of the Program's source code as you
202+receive it, in any medium, provided that you conspicuously and
203+appropriately publish on each copy an appropriate copyright notice;
204+keep intact all notices stating that this License and any
205+non-permissive terms added in accord with section 7 apply to the code;
206+keep intact all notices of the absence of any warranty; and give all
207+recipients a copy of this License along with the Program.
208+
209+ You may charge any price or no price for each copy that you convey,
210+and you may offer support or warranty protection for a fee.
211+
212+ 5. Conveying Modified Source Versions.
213+
214+ You may convey a work based on the Program, or the modifications to
215+produce it from the Program, in the form of source code under the
216+terms of section 4, provided that you also meet all of these conditions:
217+
218+ a) The work must carry prominent notices stating that you modified
219+ it, and giving a relevant date.
220+
221+ b) The work must carry prominent notices stating that it is
222+ released under this License and any conditions added under section
223+ 7. This requirement modifies the requirement in section 4 to
224+ "keep intact all notices".
225+
226+ c) You must license the entire work, as a whole, under this
227+ License to anyone who comes into possession of a copy. This
228+ License will therefore apply, along with any applicable section 7
229+ additional terms, to the whole of the work, and all its parts,
230+ regardless of how they are packaged. This License gives no
231+ permission to license the work in any other way, but it does not
232+ invalidate such permission if you have separately received it.
233+
234+ d) If the work has interactive user interfaces, each must display
235+ Appropriate Legal Notices; however, if the Program has interactive
236+ interfaces that do not display Appropriate Legal Notices, your
237+ work need not make them do so.
238+
239+ A compilation of a covered work with other separate and independent
240+works, which are not by their nature extensions of the covered work,
241+and which are not combined with it such as to form a larger program,
242+in or on a volume of a storage or distribution medium, is called an
243+"aggregate" if the compilation and its resulting copyright are not
244+used to limit the access or legal rights of the compilation's users
245+beyond what the individual works permit. Inclusion of a covered work
246+in an aggregate does not cause this License to apply to the other
247+parts of the aggregate.
248+
249+ 6. Conveying Non-Source Forms.
250+
251+ You may convey a covered work in object code form under the terms
252+of sections 4 and 5, provided that you also convey the
253+machine-readable Corresponding Source under the terms of this License,
254+in one of these ways:
255+
256+ a) Convey the object code in, or embodied in, a physical product
257+ (including a physical distribution medium), accompanied by the
258+ Corresponding Source fixed on a durable physical medium
259+ customarily used for software interchange.
260+
261+ b) Convey the object code in, or embodied in, a physical product
262+ (including a physical distribution medium), accompanied by a
263+ written offer, valid for at least three years and valid for as
264+ long as you offer spare parts or customer support for that product
265+ model, to give anyone who possesses the object code either (1) a
266+ copy of the Corresponding Source for all the software in the
267+ product that is covered by this License, on a durable physical
268+ medium customarily used for software interchange, for a price no
269+ more than your reasonable cost of physically performing this
270+ conveying of source, or (2) access to copy the
271+ Corresponding Source from a network server at no charge.
272+
273+ c) Convey individual copies of the object code with a copy of the
274+ written offer to provide the Corresponding Source. This
275+ alternative is allowed only occasionally and noncommercially, and
276+ only if you received the object code with such an offer, in accord
277+ with subsection 6b.
278+
279+ d) Convey the object code by offering access from a designated
280+ place (gratis or for a charge), and offer equivalent access to the
281+ Corresponding Source in the same way through the same place at no
282+ further charge. You need not require recipients to copy the
283+ Corresponding Source along with the object code. If the place to
284+ copy the object code is a network server, the Corresponding Source
285+ may be on a different server (operated by you or a third party)
286+ that supports equivalent copying facilities, provided you maintain
287+ clear directions next to the object code saying where to find the
288+ Corresponding Source. Regardless of what server hosts the
289+ Corresponding Source, you remain obligated to ensure that it is
290+ available for as long as needed to satisfy these requirements.
291+
292+ e) Convey the object code using peer-to-peer transmission, provided
293+ you inform other peers where the object code and Corresponding
294+ Source of the work are being offered to the general public at no
295+ charge under subsection 6d.
296+
297+ A separable portion of the object code, whose source code is excluded
298+from the Corresponding Source as a System Library, need not be
299+included in conveying the object code work.
300+
301+ A "User Product" is either (1) a "consumer product", which means any
302+tangible personal property which is normally used for personal, family,
303+or household purposes, or (2) anything designed or sold for incorporation
304+into a dwelling. In determining whether a product is a consumer product,
305+doubtful cases shall be resolved in favor of coverage. For a particular
306+product received by a particular user, "normally used" refers to a
307+typical or common use of that class of product, regardless of the status
308+of the particular user or of the way in which the particular user
309+actually uses, or expects or is expected to use, the product. A product
310+is a consumer product regardless of whether the product has substantial
311+commercial, industrial or non-consumer uses, unless such uses represent
312+the only significant mode of use of the product.
313+
314+ "Installation Information" for a User Product means any methods,
315+procedures, authorization keys, or other information required to install
316+and execute modified versions of a covered work in that User Product from
317+a modified version of its Corresponding Source. The information must
318+suffice to ensure that the continued functioning of the modified object
319+code is in no case prevented or interfered with solely because
320+modification has been made.
321+
322+ If you convey an object code work under this section in, or with, or
323+specifically for use in, a User Product, and the conveying occurs as
324+part of a transaction in which the right of possession and use of the
325+User Product is transferred to the recipient in perpetuity or for a
326+fixed term (regardless of how the transaction is characterized), the
327+Corresponding Source conveyed under this section must be accompanied
328+by the Installation Information. But this requirement does not apply
329+if neither you nor any third party retains the ability to install
330+modified object code on the User Product (for example, the work has
331+been installed in ROM).
332+
333+ The requirement to provide Installation Information does not include a
334+requirement to continue to provide support service, warranty, or updates
335+for a work that has been modified or installed by the recipient, or for
336+the User Product in which it has been modified or installed. Access to a
337+network may be denied when the modification itself materially and
338+adversely affects the operation of the network or violates the rules and
339+protocols for communication across the network.
340+
341+ Corresponding Source conveyed, and Installation Information provided,
342+in accord with this section must be in a format that is publicly
343+documented (and with an implementation available to the public in
344+source code form), and must require no special password or key for
345+unpacking, reading or copying.
346+
347+ 7. Additional Terms.
348+
349+ "Additional permissions" are terms that supplement the terms of this
350+License by making exceptions from one or more of its conditions.
351+Additional permissions that are applicable to the entire Program shall
352+be treated as though they were included in this License, to the extent
353+that they are valid under applicable law. If additional permissions
354+apply only to part of the Program, that part may be used separately
355+under those permissions, but the entire Program remains governed by
356+this License without regard to the additional permissions.
357+
358+ When you convey a copy of a covered work, you may at your option
359+remove any additional permissions from that copy, or from any part of
360+it. (Additional permissions may be written to require their own
361+removal in certain cases when you modify the work.) You may place
362+additional permissions on material, added by you to a covered work,
363+for which you have or can give appropriate copyright permission.
364+
365+ Notwithstanding any other provision of this License, for material you
366+add to a covered work, you may (if authorized by the copyright holders of
367+that material) supplement the terms of this License with terms:
368+
369+ a) Disclaiming warranty or limiting liability differently from the
370+ terms of sections 15 and 16 of this License; or
371+
372+ b) Requiring preservation of specified reasonable legal notices or
373+ author attributions in that material or in the Appropriate Legal
374+ Notices displayed by works containing it; or
375+
376+ c) Prohibiting misrepresentation of the origin of that material, or
377+ requiring that modified versions of such material be marked in
378+ reasonable ways as different from the original version; or
379+
380+ d) Limiting the use for publicity purposes of names of licensors or
381+ authors of the material; or
382+
383+ e) Declining to grant rights under trademark law for use of some
384+ trade names, trademarks, or service marks; or
385+
386+ f) Requiring indemnification of licensors and authors of that
387+ material by anyone who conveys the material (or modified versions of
388+ it) with contractual assumptions of liability to the recipient, for
389+ any liability that these contractual assumptions directly impose on
390+ those licensors and authors.
391+
392+ All other non-permissive additional terms are considered "further
393+restrictions" within the meaning of section 10. If the Program as you
394+received it, or any part of it, contains a notice stating that it is
395+governed by this License along with a term that is a further
396+restriction, you may remove that term. If a license document contains
397+a further restriction but permits relicensing or conveying under this
398+License, you may add to a covered work material governed by the terms
399+of that license document, provided that the further restriction does
400+not survive such relicensing or conveying.
401+
402+ If you add terms to a covered work in accord with this section, you
403+must place, in the relevant source files, a statement of the
404+additional terms that apply to those files, or a notice indicating
405+where to find the applicable terms.
406+
407+ Additional terms, permissive or non-permissive, may be stated in the
408+form of a separately written license, or stated as exceptions;
409+the above requirements apply either way.
410+
411+ 8. Termination.
412+
413+ You may not propagate or modify a covered work except as expressly
414+provided under this License. Any attempt otherwise to propagate or
415+modify it is void, and will automatically terminate your rights under
416+this License (including any patent licenses granted under the third
417+paragraph of section 11).
418+
419+ However, if you cease all violation of this License, then your
420+license from a particular copyright holder is reinstated (a)
421+provisionally, unless and until the copyright holder explicitly and
422+finally terminates your license, and (b) permanently, if the copyright
423+holder fails to notify you of the violation by some reasonable means
424+prior to 60 days after the cessation.
425+
426+ Moreover, your license from a particular copyright holder is
427+reinstated permanently if the copyright holder notifies you of the
428+violation by some reasonable means, this is the first time you have
429+received notice of violation of this License (for any work) from that
430+copyright holder, and you cure the violation prior to 30 days after
431+your receipt of the notice.
432+
433+ Termination of your rights under this section does not terminate the
434+licenses of parties who have received copies or rights from you under
435+this License. If your rights have been terminated and not permanently
436+reinstated, you do not qualify to receive new licenses for the same
437+material under section 10.
438+
439+ 9. Acceptance Not Required for Having Copies.
440+
441+ You are not required to accept this License in order to receive or
442+run a copy of the Program. Ancillary propagation of a covered work
443+occurring solely as a consequence of using peer-to-peer transmission
444+to receive a copy likewise does not require acceptance. However,
445+nothing other than this License grants you permission to propagate or
446+modify any covered work. These actions infringe copyright if you do
447+not accept this License. Therefore, by modifying or propagating a
448+covered work, you indicate your acceptance of this License to do so.
449+
450+ 10. Automatic Licensing of Downstream Recipients.
451+
452+ Each time you convey a covered work, the recipient automatically
453+receives a license from the original licensors, to run, modify and
454+propagate that work, subject to this License. You are not responsible
455+for enforcing compliance by third parties with this License.
456+
457+ An "entity transaction" is a transaction transferring control of an
458+organization, or substantially all assets of one, or subdividing an
459+organization, or merging organizations. If propagation of a covered
460+work results from an entity transaction, each party to that
461+transaction who receives a copy of the work also receives whatever
462+licenses to the work the party's predecessor in interest had or could
463+give under the previous paragraph, plus a right to possession of the
464+Corresponding Source of the work from the predecessor in interest, if
465+the predecessor has it or can get it with reasonable efforts.
466+
467+ You may not impose any further restrictions on the exercise of the
468+rights granted or affirmed under this License. For example, you may
469+not impose a license fee, royalty, or other charge for exercise of
470+rights granted under this License, and you may not initiate litigation
471+(including a cross-claim or counterclaim in a lawsuit) alleging that
472+any patent claim is infringed by making, using, selling, offering for
473+sale, or importing the Program or any portion of it.
474+
475+ 11. Patents.
476+
477+ A "contributor" is a copyright holder who authorizes use under this
478+License of the Program or a work on which the Program is based. The
479+work thus licensed is called the contributor's "contributor version".
480+
481+ A contributor's "essential patent claims" are all patent claims
482+owned or controlled by the contributor, whether already acquired or
483+hereafter acquired, that would be infringed by some manner, permitted
484+by this License, of making, using, or selling its contributor version,
485+but do not include claims that would be infringed only as a
486+consequence of further modification of the contributor version. For
487+purposes of this definition, "control" includes the right to grant
488+patent sublicenses in a manner consistent with the requirements of
489+this License.
490+
491+ Each contributor grants you a non-exclusive, worldwide, royalty-free
492+patent license under the contributor's essential patent claims, to
493+make, use, sell, offer for sale, import and otherwise run, modify and
494+propagate the contents of its contributor version.
495+
496+ In the following three paragraphs, a "patent license" is any express
497+agreement or commitment, however denominated, not to enforce a patent
498+(such as an express permission to practice a patent or covenant not to
499+sue for patent infringement). To "grant" such a patent license to a
500+party means to make such an agreement or commitment not to enforce a
501+patent against the party.
502+
503+ If you convey a covered work, knowingly relying on a patent license,
504+and the Corresponding Source of the work is not available for anyone
505+to copy, free of charge and under the terms of this License, through a
506+publicly available network server or other readily accessible means,
507+then you must either (1) cause the Corresponding Source to be so
508+available, or (2) arrange to deprive yourself of the benefit of the
509+patent license for this particular work, or (3) arrange, in a manner
510+consistent with the requirements of this License, to extend the patent
511+license to downstream recipients. "Knowingly relying" means you have
512+actual knowledge that, but for the patent license, your conveying the
513+covered work in a country, or your recipient's use of the covered work
514+in a country, would infringe one or more identifiable patents in that
515+country that you have reason to believe are valid.
516+
517+ If, pursuant to or in connection with a single transaction or
518+arrangement, you convey, or propagate by procuring conveyance of, a
519+covered work, and grant a patent license to some of the parties
520+receiving the covered work authorizing them to use, propagate, modify
521+or convey a specific copy of the covered work, then the patent license
522+you grant is automatically extended to all recipients of the covered
523+work and works based on it.
524+
525+ A patent license is "discriminatory" if it does not include within
526+the scope of its coverage, prohibits the exercise of, or is
527+conditioned on the non-exercise of one or more of the rights that are
528+specifically granted under this License. You may not convey a covered
529+work if you are a party to an arrangement with a third party that is
530+in the business of distributing software, under which you make payment
531+to the third party based on the extent of your activity of conveying
532+the work, and under which the third party grants, to any of the
533+parties who would receive the covered work from you, a discriminatory
534+patent license (a) in connection with copies of the covered work
535+conveyed by you (or copies made from those copies), or (b) primarily
536+for and in connection with specific products or compilations that
537+contain the covered work, unless you entered into that arrangement,
538+or that patent license was granted, prior to 28 March 2007.
539+
540+ Nothing in this License shall be construed as excluding or limiting
541+any implied license or other defenses to infringement that may
542+otherwise be available to you under applicable patent law.
543+
544+ 12. No Surrender of Others' Freedom.
545+
546+ If conditions are imposed on you (whether by court order, agreement or
547+otherwise) that contradict the conditions of this License, they do not
548+excuse you from the conditions of this License. If you cannot convey a
549+covered work so as to satisfy simultaneously your obligations under this
550+License and any other pertinent obligations, then as a consequence you may
551+not convey it at all. For example, if you agree to terms that obligate you
552+to collect a royalty for further conveying from those to whom you convey
553+the Program, the only way you could satisfy both those terms and this
554+License would be to refrain entirely from conveying the Program.
555+
556+ 13. Use with the GNU Affero General Public License.
557+
558+ Notwithstanding any other provision of this License, you have
559+permission to link or combine any covered work with a work licensed
560+under version 3 of the GNU Affero General Public License into a single
561+combined work, and to convey the resulting work. The terms of this
562+License will continue to apply to the part which is the covered work,
563+but the special requirements of the GNU Affero General Public License,
564+section 13, concerning interaction through a network will apply to the
565+combination as such.
566+
567+ 14. Revised Versions of this License.
568+
569+ The Free Software Foundation may publish revised and/or new versions of
570+the GNU General Public License from time to time. Such new versions will
571+be similar in spirit to the present version, but may differ in detail to
572+address new problems or concerns.
573+
574+ Each version is given a distinguishing version number. If the
575+Program specifies that a certain numbered version of the GNU General
576+Public License "or any later version" applies to it, you have the
577+option of following the terms and conditions either of that numbered
578+version or of any later version published by the Free Software
579+Foundation. If the Program does not specify a version number of the
580+GNU General Public License, you may choose any version ever published
581+by the Free Software Foundation.
582+
583+ If the Program specifies that a proxy can decide which future
584+versions of the GNU General Public License can be used, that proxy's
585+public statement of acceptance of a version permanently authorizes you
586+to choose that version for the Program.
587+
588+ Later license versions may give you additional or different
589+permissions. However, no additional obligations are imposed on any
590+author or copyright holder as a result of your choosing to follow a
591+later version.
592+
593+ 15. Disclaimer of Warranty.
594+
595+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
596+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
597+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
598+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
599+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
600+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
601+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
602+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
603+
604+ 16. Limitation of Liability.
605+
606+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
607+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
608+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
609+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
610+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
611+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
612+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
613+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
614+SUCH DAMAGES.
615+
616+ 17. Interpretation of Sections 15 and 16.
617+
618+ If the disclaimer of warranty and limitation of liability provided
619+above cannot be given local legal effect according to their terms,
620+reviewing courts shall apply local law that most closely approximates
621+an absolute waiver of all civil liability in connection with the
622+Program, unless a warranty or assumption of liability accompanies a
623+copy of the Program in return for a fee.
624+
625+ END OF TERMS AND CONDITIONS
626+
627+ How to Apply These Terms to Your New Programs
628+
629+ If you develop a new program, and you want it to be of the greatest
630+possible use to the public, the best way to achieve this is to make it
631+free software which everyone can redistribute and change under these terms.
632+
633+ To do so, attach the following notices to the program. It is safest
634+to attach them to the start of each source file to most effectively
635+state the exclusion of warranty; and each file should have at least
636+the "copyright" line and a pointer to where the full notice is found.
637+
638+ <one line to give the program's name and a brief idea of what it does.>
639+ Copyright (C) <year> <name of author>
640+
641+ This program is free software: you can redistribute it and/or modify
642+ it under the terms of the GNU General Public License as published by
643+ the Free Software Foundation, either version 3 of the License, or
644+ (at your option) any later version.
645+
646+ This program is distributed in the hope that it will be useful,
647+ but WITHOUT ANY WARRANTY; without even the implied warranty of
648+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
649+ GNU General Public License for more details.
650+
651+ You should have received a copy of the GNU General Public License
652+ along with this program. If not, see <http://www.gnu.org/licenses/>.
653+
654+Also add information on how to contact you by electronic and paper mail.
655+
656+ If the program does terminal interaction, make it output a short
657+notice like this when it starts in an interactive mode:
658+
659+ <program> Copyright (C) <year> <name of author>
660+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
661+ This is free software, and you are welcome to redistribute it
662+ under certain conditions; type `show c' for details.
663+
664+The hypothetical commands `show w' and `show c' should show the appropriate
665+parts of the General Public License. Of course, your program's commands
666+might be different; for a GUI interface, you would use an "about box".
667+
668+ You should also get your employer (if you work as a programmer) or school,
669+if any, to sign a "copyright disclaimer" for the program, if necessary.
670+For more information on this, and how to apply and follow the GNU GPL, see
671+<http://www.gnu.org/licenses/>.
672+
673+ The GNU General Public License does not permit incorporating your program
674+into proprietary programs. If your program is a subroutine library, you
675+may consider it more useful to permit linking proprietary applications with
676+the library. If this is what you want to do, use the GNU Lesser General
677+Public License instead of this License. But first, please read
678+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
679
680=== added file 'COPYING.SGI'
681--- COPYING.SGI 1970-01-01 00:00:00 +0000
682+++ COPYING.SGI 2014-05-07 20:44:08 +0000
683@@ -0,0 +1,40 @@
684+The data and some of the control logic for the "ideas" scene was adapted from
685+the "Ideas in Motion" GLUT demo. Per the rights granted by the source for that
686+demo, the following notice is reproduced here:
687+
688+/*
689+ * (c) Copyright 1993, Silicon Graphics, Inc.
690+ * ALL RIGHTS RESERVED
691+ * Permission to use, copy, modify, and distribute this software for
692+ * any purpose and without fee is hereby granted, provided that the above
693+ * copyright notice appear in all copies and that both the copyright notice
694+ * and this permission notice appear in supporting documentation, and that
695+ * the name of Silicon Graphics, Inc. not be used in advertising
696+ * or publicity pertaining to distribution of the software without specific,
697+ * written prior permission.
698+ *
699+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
700+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
701+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
702+ * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
703+ * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
704+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
705+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
706+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
707+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
708+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
709+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
710+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
711+ *
712+ * US Government Users Restricted Rights
713+ * Use, duplication, or disclosure by the Government is subject to
714+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
715+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
716+ * clause at DFARS 252.227-7013 and/or in similar or successor
717+ * clauses in the FAR or the DOD or NASA FAR Supplement.
718+ * Unpublished-- rights reserved under the copyright laws of the
719+ * United States. Contractor/manufacturer is Silicon Graphics,
720+ * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
721+ *
722+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
723+ */
724
725=== renamed file 'COPYING.SGI' => 'COPYING.SGI.moved'
726=== renamed file 'COPYING' => 'COPYING.moved'
727=== added file 'INSTALL'
728--- INSTALL 1970-01-01 00:00:00 +0000
729+++ INSTALL 2014-05-07 20:44:08 +0000
730@@ -0,0 +1,13 @@
731+glmark2 uses the WAF build system.
732+
733+To configure glmark2 use:
734+
735+$ ./waf configure [--enable-gl --enable-glesv2 --enable-gl-drm --enable-glesv2-drm --data-path=DATA_PATH --prefix=PREFIX]
736+
737+To build use:
738+
739+$ ./waf
740+
741+To install use:
742+
743+$ ./waf install --destdir=DESTDIR
744
745=== added file 'INSTALL.android'
746--- INSTALL.android 1970-01-01 00:00:00 +0000
747+++ INSTALL.android 2014-05-07 20:44:08 +0000
748@@ -0,0 +1,35 @@
749+The minimum Android API level for glmark2 is 9 (>= Android 2.3).
750+
751+Building using the SDK and NDK
752+------------------------------
753+
754+To build and install glmark2 you need the Android SDK and NDK. The 'android',
755+'adb' and 'ndk-build' tools used below are included there.
756+
757+To build glmark2 for Android we start by building the native part:
758+
759+$ cd android
760+$ ndk-build
761+
762+To continue building the package from the command line:
763+
764+$ android update project -p . -s -t <target> (where target, e.g., android-10)
765+$ ant debug {or release}
766+
767+To install to a device, you need to have set up an ADB connection
768+to the device. Then do:
769+
770+$ adb install bin/Glmark2-debug.apk
771+
772+Alternatively you can load the project (in the android/ directory) in Eclipse
773+using the ADT plugin and manage the build and install process from there. Keep
774+in mind that when updating the native build (ndk-build etc) you need to refresh
775+the Eclipse project, otherwise it won't notice that something has changed.
776+
777+Building using the Android build system
778+---------------------------------------
779+
780+Copy the glmark2 source tree to somewhere the Android build system can access
781+it (eg external/glmark2) and build the GLMark2 module:
782+
783+$ make GLMark2
784
785=== renamed file 'INSTALL.android' => 'INSTALL.android.moved'
786=== renamed file 'INSTALL' => 'INSTALL.moved'
787=== added file 'NEWS'
788--- NEWS 1970-01-01 00:00:00 +0000
789+++ NEWS 2014-05-07 20:44:08 +0000
790@@ -0,0 +1,218 @@
791+glmark2 2014.03 (20140310)
792+==========================
793+
794+* Refactor canvas code to make it easier to support new platforms.
795+* Add Wayland backend.
796+* Add Mir backend.
797+* Add a new 'cel' (or 'toon') shading model (scene 'shading').
798+* Add a new 'clear' scene, which just clears the canvas.
799+* Improve support for the Wavefront .obj file format.
800+
801+glmark2 2012.12 (20121218)
802+==========================
803+
804+* Add a refraction (2 interface) and reflection benchmark (scene 'reflect').
805+* Add a new canvas object which allows rendering to GBM managed surfaces
806+ and page flipping to DRM managed framebuffer from a console.
807+* Enhancements to visual config mechanism to consider stencil size in the
808+ selection criteria and to query all config attribs.
809+
810+glmark2 2012.11 (20121126)
811+==========================
812+
813+* Add a shadow mapping benchmark (scene 'shadow').
814+* Consolidate EGL interactions into a separate state object.
815+
816+glmark2 2012.08 (20120817)
817+==========================
818+
819+* Display benchmark results in the Android GUI.
820+* Add an Android option menu offering load/save/delete benchmark list
821+ functionality, access to last benchmark results, settings and
822+ information about glmark2.
823+* Properly handle spaces in scene options on Android.
824+* Exclude from score calculation benchmarks whose set up wasn't successful.
825+* Display an appropriate message (instead of a 0 FPS value) if benchmark
826+ set up isn't successful.
827+* Add support for standard GNU installation directories.
828+
829+glmark2 2012.07 (20120719)
830+==========================
831+
832+* Add Android GUI for defining and running benchmarks.
833+* Add benchmark based on the WebGL jellyfish demo (scene 'jellyfish').
834+* Add benchmark based on the WebGL dynamic terrain demo (scene 'terrain').
835+* Extend texture scene with the option to compute texture coordinates
836+ in the shader (option 'texgen').
837+* Add support for reading texture data from JPEG files.
838+* Properly support options that have a finite set of acceptable values.
839+
840+glmark2 2012.06 (20120621)
841+==========================
842+
843+* Add command-line option to render in fullscreen mode (--fullscreen).
844+* Display the frame time in addition to the FPS for each benchmark.
845+
846+glmark2 2012.05 (20120524)
847+==========================
848+
849+* Add benchmark based on the SGI "Ideas in Motion" demo.
850+* Ensure that the framebuffer is drawn opaquely.
851+* Add command-line option to configure the visual used for rendering
852+ (--visual-config).
853+* Add support for additional models and textures in the 'texture' scene.
854+
855+glmark2 2012.03 (20120322)
856+==========================
857+
858+* X11:
859+ - Support rendering to an off-screen surface (--off-screen).
860+ - Add command-line option to select which method to use to "end"
861+ a frame (--frame-end).
862+
863+glmark2 2012.02 (20120216)
864+==========================
865+
866+* Consolidate X11 and Android main loops.
867+* Accept command-line options on Android through either a file
868+ ('/data/glmark2/args') or an extra intent key ('args').
869+* Support per-scene options for displaying an FPS count on screen
870+ (show-fps, fps-pos, fps-size), and remove --show-fps command-line option.
871+* Support per-scene options for displaying a benchmark title on screen
872+ (title, title-pos, title-size).
873+* Add command-line option to run benchmarks indefinitely (--run-forever).
874+* Add command-line option to annotate the benchmarks with on-screen
875+ information (--annotate == -b :show-fps=true:title=#info#).
876+* Move various utility classes to libmatrix.
877+* Fix build issues on Android ICS.
878+
879+glmark2 2012.01 (20120119)
880+==========================
881+
882+* X11:
883+ - Run each benchmark in a fresh GL context. Use --reuse-context
884+ to revert to the old default behavior of using the same context
885+ for all benchmarks.
886+ - Add option for showing a live FPS counter on screen (--show-fps).
887+ - If the list of benchmarks to run contains only option-setting
888+ descriptions, run the default benchmarks.
889+* Android:
890+ - Fix crash on platforms not supporting glMapBufferOES.
891+ - Log the glmark2 score when finishing.
892+ - Log an error message if we fail to find a suitable EGLContext.
893+ - Implement various stability improvements.
894+
895+glmark2 2011.12 (20111215)
896+==========================
897+
898+* Add benchmark for bilinear filtering implemented in the fragment
899+ shader (not included in the default benchmarks).
900+* Ensure we don't call any GL functions before binding a GL context.
901+* Fix bug in the ShaderSource object that could lead to shader
902+ compilation errors in strict OpenGL ES 2.0 implementations.
903+* Refactor scene update code to reduce duplication.
904+
905+glmark2 2011.11 (20111116)
906+==========================
907+
908+* Add benchmark for bump mapping using a height map.
909+* Add benchmark for bump mapping using a tangent space normal map
910+ (not included in the default benchmarks).
911+* Implement validation support for all default benchmarks.
912+* Add a colored prefix to log messages in debug mode.
913+* Clean up and refactor code.
914+
915+glmark2 2011.10 (20111018)
916+==========================
917+
918+* Add benchmark for buffer (VBO) updates.
919+* Add benchmark for drop-shadow desktop effect.
920+* Add support for glmark2 extra large models.
921+* Enable the selection of additional models in the shading benchmark.
922+* Gracefully handle unsupported OpenGL versions, on both X11 and Android.
923+* Disable screen dimming and screen rotation on Android.
924+
925+glmark2 2011.09 (20110921)
926+==========================
927+
928+* Add benchmark for blur desktop effect.
929+* Add support for multiple lights in the phong shading benchmark.
930+* Add support for loading models from OBJ geometry files.
931+* Add Stanford Bunny model and make it available in the build benchmark.
932+* Add per-scene options to set shader precision at runtime.
933+* Add command-line option to specify the benchmarks to run using a text file.
934+
935+glmark2 2011.08 (20110818)
936+==========================
937+
938+* Port to Android (see INSTALL.android).
939+* Add benchmark based on pulsar X11 GL screensaver.
940+* Add benchmark for 2D image processing using the GPU.
941+* Add command line option to set the size of the output window (-s, --size).
942+* Implement ShaderSource object to simplify complex shader creation.
943+* Implement utility functions to access resources in an abstract way.
944+
945+glmark2 2011.07 (20110719)
946+==========================
947+
948+* Replace SDL with custom window handling code.
949+* Add benchmark for shader conditionals.
950+* Add benchmark for shader function calls.
951+* Add benchmark for shader loops.
952+* Add benchmark for real phong (vs blinn-phong) lighting model.
953+* Add benchmark for normal mapping.
954+* Refactor Mesh class to increase flexibility in vertex attribute
955+ handling.
956+
957+glmark2 2011.06 (20110624)
958+==========================
959+
960+* Improve benchmark versatility by allowing runtime-configurable,
961+ per-scene options.
962+* Add command line option to list avalaible scenes and their
963+ supported options (-l,--list-scenes).
964+* Allow specifying the scenes to run and their options from the
965+ command line (-b,--benchmark).
966+* Add basic output validation functionality (--validate).
967+* Add command line option to call glFinish() instead of swapping
968+ the front and back buffers (--no-swap-buffers).
969+* Manually disable VSync for GL/GLX (work around an SDL bug).
970+* Replace custom math and shader infrastructure with functionality
971+ provided by LibMatrix (lp:libmatrix).
972+* Improve user documentation (--help and man page).
973+
974+glmark2 11.05 (20110530)
975+==========================
976+
977+* Don't use the SDL_OPENGL flag for GLESv2 (LP: #761848).
978+* Ensure our screen updates are not synchronized with the vertical
979+ retrace (LP: 761855).
980+* Use the correct GL headers depending on the flavor (desktop vs ES2).
981+* Query the correct GL object for shader linking status.
982+
983+glmark2 11.01 (20110125)
984+==========================
985+
986+* Fix visual corruption in glmark2-es2 due to missing depth buffer.
987+* Fix linking issues with gcc 4.5.
988+* Use correct GL functions to manipulate shaders vs programs.
989+* Make result reporting more parser-friendly.
990+* Upgrade build system to waf 1.6.2.
991+
992+glmark2 10.07.1 (20100728)
993+==========================
994+
995+* Define the precision of fragment shader variables for OpenGL ES 2.0.
996+
997+glmark2 10.07 (20100715)
998+========================
999+
1000+* First release.
1001+* Included benchmarks:
1002+ - Rendering using vertex arrays
1003+ - Rendering using VBOs
1004+ - Texturing using nearest filtering
1005+ - Texturing using linear filtering
1006+ - Texturing using trilinear mipmapped filtering
1007+ - Lighting per vertex using simple GLSL shaders
1008+ - Lighting per pixel using elaborate GLSL shaders
1009
1010=== renamed file 'NEWS' => 'NEWS.moved'
1011=== added file 'README'
1012--- README 1970-01-01 00:00:00 +0000
1013+++ README 2014-05-07 20:44:08 +0000
1014@@ -0,0 +1,24 @@
1015+glmark2 is an OpenGL 2.0 and ES 2.0 benchmark.
1016+
1017+glmark2 was developed by Alexandros Frantzis based on the original glmark
1018+benchmark by Ben Smith.
1019+
1020+It is licensed under the GPLv3 (see COPYING).
1021+
1022+To build glmark2 for X11/GL(ES2) you need:
1023+
1024+ * python 2.x (>= 2.4) for the build system (waf)
1025+ * libpng 1.2
1026+
1027+and for OpenGL 2.0:
1028+
1029+ * libGL
1030+
1031+or for OpenGL ES 2.0:
1032+
1033+ * libEGL
1034+ * libGLESv2
1035+
1036+Read the INSTALL file for building/installation instructions,
1037+
1038+Read the INSTALL.android file for instructions for Android.
1039
1040=== added file 'README.android'
1041--- README.android 1970-01-01 00:00:00 +0000
1042+++ README.android 2014-05-07 20:44:08 +0000
1043@@ -0,0 +1,50 @@
1044+Command-line arguments
1045+======================
1046+
1047+The Android version of glmark2 can accept command-line arguments from either
1048+an extra intent key or a file. If arguments are specified in an intent key, the
1049+file is disregarded.
1050+
1051+Arguments from an extra intent key
1052+----------------------------------
1053+
1054+The 'args' extra intent key is used to specify arguments. For example:
1055+
1056+am start -a android.intent.action.MAIN \
1057+ -n org.linaro.glmark2/org.linaro.glmark2.Glmark2Activity \
1058+ -e args '-b :duration=2 -b texture -f /path/file --debug'
1059+
1060+Arguments from a file
1061+---------------------
1062+
1063+If the 'args' intent key is not defined, the contents of the file
1064+'/data/glmark2/args' (if present) are used as command line arguments. The
1065+arguments can be placed in either a single or multiple lines. For example:
1066+
1067+-b :duration -b texture
1068+-f /path/file
1069+--debug
1070+
1071+Android limitations and peculiarities
1072+=====================================
1073+
1074+The Android version of glmark2 doesn't accept all of the command-line arguments
1075+that the X11 version accepts. In particular, the Android version currently
1076+ignores the following:
1077+
1078+--validate
1079+--frame-end
1080+--off-screen
1081+--reuse-context
1082+--fullscreen
1083+-l,--list-scenes
1084+
1085+The default visual config used on Android is:
1086+
1087+'red=5:green=6:blue=5:alpha=0:depth=16:buffer=1'
1088+
1089+Of course, you can change it using the '--visual-config' option.
1090+
1091+The Android system is free to resize the application at will, so although the
1092+'-s,--size' option is initially taken into account, it usually doesn't have any
1093+lasting effect.
1094
1095=== renamed file 'README.android' => 'README.android.moved'
1096=== renamed file 'README' => 'README.moved'
1097=== added directory 'android'
1098=== renamed directory 'android' => 'android.moved'
1099=== added file 'android/Android.mk'
1100--- android/Android.mk 1970-01-01 00:00:00 +0000
1101+++ android/Android.mk 2014-05-07 20:44:08 +0000
1102@@ -0,0 +1,14 @@
1103+LOCAL_PATH := $(call my-dir)
1104+
1105+include $(CLEAR_VARS)
1106+
1107+LOCAL_SRC_FILES := $(call all-java-files-under, src)
1108+
1109+LOCAL_MODULE_TAGS := optional
1110+LOCAL_PACKAGE_NAME := GLMark2
1111+
1112+LOCAL_JNI_SHARED_LIBRARIES := libglmark2-android
1113+
1114+include $(BUILD_PACKAGE)
1115+
1116+include $(LOCAL_PATH)/jni/Android.mk
1117
1118=== added file 'android/AndroidManifest.xml'
1119--- android/AndroidManifest.xml 1970-01-01 00:00:00 +0000
1120+++ android/AndroidManifest.xml 2014-05-07 20:44:08 +0000
1121@@ -0,0 +1,54 @@
1122+<?xml version="1.0" encoding="utf-8"?>
1123+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
1124+ android:versionCode="1"
1125+ android:versionName="2014.03" package="org.linaro.glmark2">
1126+ <application android:label="@string/app_name">
1127+ <activity android:name="org.linaro.glmark2.MainActivity"
1128+ android:label="@string/title_activity_main">
1129+ <intent-filter>
1130+ <action android:name="android.intent.action.MAIN" />
1131+ <category android:name="android.intent.category.LAUNCHER" />
1132+ </intent-filter>
1133+ </activity>
1134+ <activity
1135+ android:name="org.linaro.glmark2.EditorActivity"
1136+ android:label="@string/title_activity_editor" >
1137+ <intent-filter>
1138+ <action android:name="android.intent.action.MAIN" />
1139+ </intent-filter>
1140+ </activity>
1141+ <activity android:label="@string/title_activity_glmark2"
1142+ android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
1143+ android:screenOrientation="nosensor"
1144+ android:process=":glmark2"
1145+ android:name="org.linaro.glmark2.Glmark2Activity">
1146+ <intent-filter>
1147+ <action android:name="android.intent.action.MAIN" />
1148+ </intent-filter>
1149+ </activity>
1150+ <activity android:label="@string/title_activity_preferences"
1151+ android:name="org.linaro.glmark2.MainPreferencesActivity">
1152+ <intent-filter>
1153+ <action android:name="android.intent.action.MAIN" />
1154+ </intent-filter>
1155+ </activity>
1156+ <activity android:label="@string/title_activity_about"
1157+ android:name="org.linaro.glmark2.AboutActivity"
1158+ android:theme="@android:style/Theme.Dialog">
1159+ <intent-filter>
1160+ <action android:name="android.intent.action.MAIN" />
1161+ </intent-filter>
1162+ </activity>
1163+ <activity android:label="@string/title_activity_results"
1164+ android:name="org.linaro.glmark2.ResultsActivity">
1165+ <intent-filter>
1166+ <action android:name="android.intent.action.MAIN" />
1167+ </intent-filter>
1168+ </activity>
1169+ </application>
1170+ <uses-permission android:name="android.permission.WAKE_LOCK" />
1171+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
1172+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1173+ <uses-feature android:glEsVersion="0x00020000"/>
1174+ <uses-sdk android:minSdkVersion="9"/>
1175+</manifest>
1176
1177=== added file 'android/CleanSpec.mk'
1178--- android/CleanSpec.mk 1970-01-01 00:00:00 +0000
1179+++ android/CleanSpec.mk 2014-05-07 20:44:08 +0000
1180@@ -0,0 +1,6 @@
1181+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/GLMark2*)
1182+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app/GLMark2.apk)
1183+
1184+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libglmark2-android_intermediates)
1185+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libglmark2-matrix_intermediates)
1186+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libglmark2-png_intermediates)
1187
1188=== added symlink 'android/assets'
1189=== target is u'../data/'
1190=== added file 'android/build.xml'
1191--- android/build.xml 1970-01-01 00:00:00 +0000
1192+++ android/build.xml 2014-05-07 20:44:08 +0000
1193@@ -0,0 +1,92 @@
1194+<?xml version="1.0" encoding="UTF-8"?>
1195+<project name="Glmark2" default="help">
1196+
1197+ <!-- The local.properties file is created and updated by the 'android' tool.
1198+ It contains the path to the SDK. It should *NOT* be checked into
1199+ Version Control Systems. -->
1200+ <property file="local.properties" />
1201+
1202+ <!-- The ant.properties file can be created by you. It is only edited by the
1203+ 'android' tool to add properties to it.
1204+ This is the place to change some Ant specific build properties.
1205+ Here are some properties you may want to change/update:
1206+
1207+ source.dir
1208+ The name of the source directory. Default is 'src'.
1209+ out.dir
1210+ The name of the output directory. Default is 'bin'.
1211+
1212+ For other overridable properties, look at the beginning of the rules
1213+ files in the SDK, at tools/ant/build.xml
1214+
1215+ Properties related to the SDK location or the project target should
1216+ be updated using the 'android' tool with the 'update' action.
1217+
1218+ This file is an integral part of the build system for your
1219+ application and should be checked into Version Control Systems.
1220+
1221+ -->
1222+ <property file="ant.properties" />
1223+
1224+ <!-- if sdk.dir was not set from one of the property file, then
1225+ get it from the ANDROID_HOME env var.
1226+ This must be done before we load project.properties since
1227+ the proguard config can use sdk.dir -->
1228+ <property environment="env" />
1229+ <condition property="sdk.dir" value="${env.ANDROID_HOME}">
1230+ <isset property="env.ANDROID_HOME" />
1231+ </condition>
1232+
1233+ <!-- The project.properties file is created and updated by the 'android'
1234+ tool, as well as ADT.
1235+
1236+ This contains project specific properties such as project target, and library
1237+ dependencies. Lower level build properties are stored in ant.properties
1238+ (or in .classpath for Eclipse projects).
1239+
1240+ This file is an integral part of the build system for your
1241+ application and should be checked into Version Control Systems. -->
1242+ <loadproperties srcFile="project.properties" />
1243+
1244+ <!-- quick check on sdk.dir -->
1245+ <fail
1246+ message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
1247+ unless="sdk.dir"
1248+ />
1249+
1250+ <!--
1251+ Import per project custom build rules if present at the root of the project.
1252+ This is the place to put custom intermediary targets such as:
1253+ -pre-build
1254+ -pre-compile
1255+ -post-compile (This is typically used for code obfuscation.
1256+ Compiled code location: ${out.classes.absolute.dir}
1257+ If this is not done in place, override ${out.dex.input.absolute.dir})
1258+ -post-package
1259+ -post-build
1260+ -pre-clean
1261+ -->
1262+ <import file="custom_rules.xml" optional="true" />
1263+
1264+ <!-- Import the actual build file.
1265+
1266+ To customize existing targets, there are two options:
1267+ - Customize only one target:
1268+ - copy/paste the target into this file, *before* the
1269+ <import> task.
1270+ - customize it to your needs.
1271+ - Customize the whole content of build.xml
1272+ - copy/paste the content of the rules files (minus the top node)
1273+ into this file, replacing the <import> task.
1274+ - customize to your needs.
1275+
1276+ ***********************
1277+ ****** IMPORTANT ******
1278+ ***********************
1279+ In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
1280+ in order to avoid having your file be overridden by tools such as "android update project"
1281+ -->
1282+ <!-- version-tag: 1 -->
1283+ <import file="${sdk.dir}/tools/ant/build.xml" />
1284+
1285+</project>
1286
1287=== added directory 'android/jni'
1288=== added file 'android/jni/Android.mk'
1289--- android/jni/Android.mk 1970-01-01 00:00:00 +0000
1290+++ android/jni/Android.mk 2014-05-07 20:44:08 +0000
1291@@ -0,0 +1,76 @@
1292+LOCAL_PATH := $(call my-dir)
1293+
1294+include $(CLEAR_VARS)
1295+
1296+LOCAL_CPP_EXTENSION := .cc
1297+LOCAL_MODULE := libglmark2-matrix
1298+LOCAL_CFLAGS := -DGLMARK2_USE_GLESv2 -Werror -Wall -Wextra -Wnon-virtual-dtor \
1299+ -Wno-error=unused-parameter
1300+LOCAL_C_INCLUDES := $(LOCAL_PATH)/src
1301+LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libmatrix/*.cc))
1302+LOCAL_SHARED_LIBRARIES := libdl libstlport
1303+
1304+include external/stlport/libstlport.mk
1305+
1306+include $(BUILD_STATIC_LIBRARY)
1307+
1308+include $(CLEAR_VARS)
1309+
1310+LOCAL_MODULE := libglmark2-png
1311+LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libpng/*.c))
1312+LOCAL_C_INCLUDES := external/zlib
1313+
1314+include $(BUILD_STATIC_LIBRARY)
1315+
1316+include $(CLEAR_VARS)
1317+
1318+LOCAL_MODULE := libglmark2-jpeg
1319+LOCAL_CFLAGS := -Werror -Wall -Wextra -Wno-error=attributes \
1320+ -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-variable
1321+LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/libjpeg-turbo/
1322+LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libjpeg-turbo/simd/*.c)) \
1323+ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libjpeg-turbo/simd/*.S)) \
1324+ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libjpeg-turbo/*.c))
1325+
1326+include $(BUILD_STATIC_LIBRARY)
1327+
1328+include $(CLEAR_VARS)
1329+
1330+LOCAL_CPP_EXTENSION := .cc
1331+LOCAL_MODULE := libglmark2-ideas
1332+LOCAL_CFLAGS := -DGLMARK_DATA_PATH="" -DGLMARK2_USE_GLESv2 -Werror -Wall -Wextra\
1333+ -Wnon-virtual-dtor -Wno-error=unused-parameter
1334+LOCAL_C_INCLUDES := $(LOCAL_PATH)/src \
1335+ $(LOCAL_PATH)/src/libmatrix
1336+LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/scene-ideas/*.cc))
1337+LOCAL_SHARED_LIBRARIES := libdl libstlport
1338+
1339+include external/stlport/libstlport.mk
1340+
1341+include $(BUILD_STATIC_LIBRARY)
1342+
1343+include $(CLEAR_VARS)
1344+
1345+LOCAL_MODULE_TAGS := optional
1346+LOCAL_MODULE := libglmark2-android
1347+LOCAL_STATIC_LIBRARIES := libglmark2-matrix libglmark2-png libglmark2-ideas libglmark2-jpeg
1348+LOCAL_CFLAGS := -DGLMARK_DATA_PATH="" -DGLMARK_VERSION="\"2014.03\"" \
1349+ -DGLMARK2_USE_GLESv2 -Werror -Wall -Wextra -Wnon-virtual-dtor \
1350+ -Wno-error=unused-parameter
1351+LOCAL_SHARED_LIBRARIES := liblog libz libEGL libGLESv2 libandroid libdl libstlport
1352+LOCAL_C_INCLUDES := $(LOCAL_PATH)/src \
1353+ $(LOCAL_PATH)/src/libmatrix \
1354+ $(LOCAL_PATH)/src/scene-ideas \
1355+ $(LOCAL_PATH)/src/scene-terrain \
1356+ $(LOCAL_PATH)/src/libjpeg-turbo \
1357+ $(LOCAL_PATH)/src/libpng \
1358+ external/zlib
1359+LOCAL_SRC_FILES := $(filter-out src/canvas% src/gl-state% src/native-state% src/main.cpp, \
1360+ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/*.cpp))) \
1361+ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/scene-terrain/*.cpp)) \
1362+ src/canvas-android.cpp
1363+LOCAL_PRELINK_MODULE := false
1364+
1365+include external/stlport/libstlport.mk
1366+
1367+include $(BUILD_SHARED_LIBRARY)
1368
1369=== added file 'android/jni/Android.ndk.mk'
1370--- android/jni/Android.ndk.mk 1970-01-01 00:00:00 +0000
1371+++ android/jni/Android.ndk.mk 2014-05-07 20:44:08 +0000
1372@@ -0,0 +1,65 @@
1373+LOCAL_PATH := $(call my-dir)
1374+
1375+include $(CLEAR_VARS)
1376+
1377+LOCAL_CPP_EXTENSION := .cc
1378+LOCAL_MODULE := libglmark2-matrix
1379+LOCAL_CFLAGS := -DGLMARK2_USE_GLESv2 -Werror -Wall -Wextra -Wnon-virtual-dtor \
1380+ -Wno-error=unused-parameter
1381+LOCAL_C_INCLUDES := $(LOCAL_PATH)/src
1382+LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libmatrix/*.cc))
1383+
1384+include $(BUILD_STATIC_LIBRARY)
1385+
1386+include $(CLEAR_VARS)
1387+
1388+LOCAL_MODULE := libglmark2-png
1389+LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libpng/*.c))
1390+
1391+include $(BUILD_STATIC_LIBRARY)
1392+
1393+include $(CLEAR_VARS)
1394+
1395+LOCAL_MODULE := libglmark2-jpeg
1396+LOCAL_CFLAGS := -Werror -Wall -Wextra -Wno-error=attributes \
1397+ -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-variable
1398+LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/libjpeg-turbo/
1399+LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libjpeg-turbo/simd/*.c)) \
1400+ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libjpeg-turbo/simd/*.S)) \
1401+ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/libjpeg-turbo/*.c))
1402+
1403+include $(BUILD_STATIC_LIBRARY)
1404+
1405+include $(CLEAR_VARS)
1406+
1407+LOCAL_CPP_EXTENSION := .cc
1408+LOCAL_MODULE := libglmark2-ideas
1409+LOCAL_CFLAGS := -DGLMARK_DATA_PATH="" -DGLMARK2_USE_GLESv2 -Werror -Wall -Wextra\
1410+ -Wnon-virtual-dtor -Wno-error=unused-parameter
1411+LOCAL_C_INCLUDES := $(LOCAL_PATH)/src \
1412+ $(LOCAL_PATH)/src/libmatrix
1413+LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/scene-ideas/*.cc))
1414+
1415+include $(BUILD_STATIC_LIBRARY)
1416+
1417+include $(CLEAR_VARS)
1418+
1419+LOCAL_MODULE_TAGS := optional
1420+LOCAL_MODULE := libglmark2-android
1421+LOCAL_STATIC_LIBRARIES := libglmark2-matrix libglmark2-png libglmark2-ideas libglmark2-jpeg
1422+LOCAL_CFLAGS := -DGLMARK_DATA_PATH="" -DGLMARK_VERSION="\"2014.03\"" \
1423+ -DGLMARK2_USE_GLESv2 -Werror -Wall -Wextra -Wnon-virtual-dtor \
1424+ -Wno-error=unused-parameter
1425+LOCAL_LDLIBS := -landroid -llog -lGLESv2 -lEGL -lz
1426+LOCAL_C_INCLUDES := $(LOCAL_PATH)/src \
1427+ $(LOCAL_PATH)/src/libmatrix \
1428+ $(LOCAL_PATH)/src/scene-ideas \
1429+ $(LOCAL_PATH)/src/scene-terrain \
1430+ $(LOCAL_PATH)/src/libjpeg-turbo \
1431+ $(LOCAL_PATH)/src/libpng
1432+LOCAL_SRC_FILES := $(filter-out src/canvas% src/gl-state% src/native-state% src/main.cpp, \
1433+ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/*.cpp))) \
1434+ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/scene-terrain/*.cpp)) \
1435+ src/canvas-android.cpp
1436+
1437+include $(BUILD_SHARED_LIBRARY)
1438
1439=== added file 'android/jni/Application.mk'
1440--- android/jni/Application.mk 1970-01-01 00:00:00 +0000
1441+++ android/jni/Application.mk 2014-05-07 20:44:08 +0000
1442@@ -0,0 +1,3 @@
1443+APP_STL := stlport_static
1444+APP_PLATFORM := android-9
1445+APP_BUILD_SCRIPT := jni/Android.ndk.mk
1446
1447=== added symlink 'android/jni/src'
1448=== target is u'../../src/'
1449=== added file 'android/project.properties'
1450--- android/project.properties 1970-01-01 00:00:00 +0000
1451+++ android/project.properties 2014-05-07 20:44:08 +0000
1452@@ -0,0 +1,14 @@
1453+# This file is automatically generated by Android Tools.
1454+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
1455+#
1456+# This file must be checked in Version Control Systems.
1457+#
1458+# To customize properties used by the Ant build system edit
1459+# "ant.properties", and override values to adapt the script to your
1460+# project structure.
1461+#
1462+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
1463+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
1464+
1465+# Project target.
1466+target=android-10
1467
1468=== added directory 'android/res'
1469=== added directory 'android/res/drawable'
1470=== added file 'android/res/drawable/menu_about.png'
1471Binary files android/res/drawable/menu_about.png 1970-01-01 00:00:00 +0000 and android/res/drawable/menu_about.png 2014-05-07 20:44:08 +0000 differ
1472=== added file 'android/res/drawable/menu_delete.png'
1473Binary files android/res/drawable/menu_delete.png 1970-01-01 00:00:00 +0000 and android/res/drawable/menu_delete.png 2014-05-07 20:44:08 +0000 differ
1474=== added file 'android/res/drawable/menu_load.png'
1475Binary files android/res/drawable/menu_load.png 1970-01-01 00:00:00 +0000 and android/res/drawable/menu_load.png 2014-05-07 20:44:08 +0000 differ
1476=== added file 'android/res/drawable/menu_results.png'
1477Binary files android/res/drawable/menu_results.png 1970-01-01 00:00:00 +0000 and android/res/drawable/menu_results.png 2014-05-07 20:44:08 +0000 differ
1478=== added file 'android/res/drawable/menu_save.png'
1479Binary files android/res/drawable/menu_save.png 1970-01-01 00:00:00 +0000 and android/res/drawable/menu_save.png 2014-05-07 20:44:08 +0000 differ
1480=== added file 'android/res/drawable/menu_settings.png'
1481Binary files android/res/drawable/menu_settings.png 1970-01-01 00:00:00 +0000 and android/res/drawable/menu_settings.png 2014-05-07 20:44:08 +0000 differ
1482=== added directory 'android/res/layout'
1483=== added file 'android/res/layout/activity_about.xml'
1484--- android/res/layout/activity_about.xml 1970-01-01 00:00:00 +0000
1485+++ android/res/layout/activity_about.xml 2014-05-07 20:44:08 +0000
1486@@ -0,0 +1,43 @@
1487+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
1488+ android:layout_width="match_parent"
1489+ android:layout_height="match_parent"
1490+ android:orientation="vertical"
1491+ android:padding="10dp">
1492+
1493+ <TextView android:id="@+id/name_version"
1494+ android:layout_width="match_parent"
1495+ android:layout_height="wrap_content"
1496+ android:gravity="center_horizontal"
1497+ android:text="@string/about_name_version_format" />
1498+
1499+ <TextView android:id="@+id/description"
1500+ android:layout_width="match_parent"
1501+ android:layout_height="wrap_content"
1502+ android:gravity="center_horizontal"
1503+ android:text="@string/about_description" />
1504+
1505+ <TextView android:id="@+id/copyright"
1506+ android:layout_width="match_parent"
1507+ android:layout_height="wrap_content"
1508+ android:gravity="center_horizontal"
1509+ android:text="@string/about_copyright" />
1510+
1511+ <TextView android:id="@+id/url"
1512+ android:layout_width="match_parent"
1513+ android:layout_height="wrap_content"
1514+ android:gravity="center_horizontal"
1515+ android:text="@string/about_url" />
1516+
1517+ <TextView android:id="@+id/license1"
1518+ android:layout_width="match_parent"
1519+ android:layout_height="wrap_content"
1520+ android:gravity="center_horizontal"
1521+ android:text="@string/about_license_1" />
1522+
1523+ <TextView android:id="@+id/license2"
1524+ android:layout_width="match_parent"
1525+ android:layout_height="wrap_content"
1526+ android:gravity="center_horizontal"
1527+ android:text="@string/about_license_2" />
1528+</LinearLayout>
1529+
1530
1531=== added file 'android/res/layout/activity_editor.xml'
1532--- android/res/layout/activity_editor.xml 1970-01-01 00:00:00 +0000
1533+++ android/res/layout/activity_editor.xml 2014-05-07 20:44:08 +0000
1534@@ -0,0 +1,34 @@
1535+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
1536+ xmlns:tools="http://schemas.android.com/tools"
1537+ android:layout_width="match_parent"
1538+ android:layout_height="match_parent" >
1539+
1540+ <LinearLayout android:id="@+id/buttonLinearLayout"
1541+ android:layout_width="match_parent"
1542+ android:layout_height="wrap_content"
1543+ android:layout_alignParentBottom="true">
1544+
1545+ <Button android:id="@+id/runButton"
1546+ android:layout_width="0dip"
1547+ android:layout_height="wrap_content"
1548+ android:layout_weight="1.0"
1549+ android:layout_alignParentBottom="true"
1550+ android:text="@string/runButtonText" />
1551+
1552+ <Button android:id="@+id/saveButton"
1553+ android:layout_width="0dip"
1554+ android:layout_height="wrap_content"
1555+ android:layout_weight="1.0"
1556+ android:layout_alignParentBottom="true"
1557+ android:text="@string/saveButtonText" />
1558+
1559+ </LinearLayout>
1560+
1561+
1562+ <ListView android:id="@+id/editorListView"
1563+ android:layout_above="@id/buttonLinearLayout"
1564+ android:layout_weight="1.0"
1565+ android:layout_width="match_parent"
1566+ android:layout_height="match_parent"
1567+ android:layout_alignParentTop="true" />
1568+</RelativeLayout>
1569
1570=== added file 'android/res/layout/activity_main.xml'
1571--- android/res/layout/activity_main.xml 1970-01-01 00:00:00 +0000
1572+++ android/res/layout/activity_main.xml 2014-05-07 20:44:08 +0000
1573@@ -0,0 +1,20 @@
1574+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
1575+ xmlns:tools="http://schemas.android.com/tools"
1576+ android:layout_width="match_parent"
1577+ android:layout_height="match_parent" >
1578+
1579+ <Button android:id="@+id/runButton"
1580+ android:layout_width="match_parent"
1581+ android:layout_height="wrap_content"
1582+ android:layout_alignParentBottom="true"
1583+ android:text="@string/runButtonText" />
1584+
1585+ <ListView android:id="@+id/benchmarkListView"
1586+ android:layout_above="@id/runButton"
1587+ android:layout_weight="1.0"
1588+ android:layout_width="match_parent"
1589+ android:layout_height="match_parent"
1590+ android:layout_alignParentTop="true" />
1591+
1592+
1593+</RelativeLayout>
1594
1595=== added file 'android/res/layout/activity_results.xml'
1596--- android/res/layout/activity_results.xml 1970-01-01 00:00:00 +0000
1597+++ android/res/layout/activity_results.xml 2014-05-07 20:44:08 +0000
1598@@ -0,0 +1,15 @@
1599+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
1600+ android:layout_width="match_parent"
1601+ android:layout_height="wrap_content">
1602+
1603+ <HorizontalScrollView android:layout_width="match_parent"
1604+ android:layout_height="wrap_content">
1605+
1606+ <TextView android:id="@+id/results"
1607+ android:layout_width="match_parent"
1608+ android:layout_height="wrap_content"
1609+ android:typeface="monospace" />
1610+
1611+ </HorizontalScrollView>
1612+
1613+</ScrollView>
1614
1615=== added file 'android/res/layout/list_header.xml'
1616--- android/res/layout/list_header.xml 1970-01-01 00:00:00 +0000
1617+++ android/res/layout/list_header.xml 2014-05-07 20:44:08 +0000
1618@@ -0,0 +1,5 @@
1619+<?xml version="1.0" encoding="utf-8"?>
1620+
1621+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
1622+ style="?android:attr/listSeparatorTextViewStyle"
1623+ android:id="@+id/listHeader" />
1624
1625=== added file 'android/res/layout/list_item.xml'
1626--- android/res/layout/list_item.xml 1970-01-01 00:00:00 +0000
1627+++ android/res/layout/list_item.xml 2014-05-07 20:44:08 +0000
1628@@ -0,0 +1,32 @@
1629+<?xml version="1.0" encoding="utf-8"?>
1630+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
1631+ android:layout_width="wrap_content"
1632+ android:layout_height="wrap_content"
1633+ android:minHeight="?android:attr/listPreferredItemHeight"
1634+ android:gravity="center_vertical"
1635+ android:paddingRight="?android:attr/scrollbarSize" >
1636+
1637+ <RelativeLayout android:layout_width="wrap_content"
1638+ android:layout_height="wrap_content"
1639+ android:layout_marginLeft="15dip"
1640+ android:layout_marginRight="6dip"
1641+ android:layout_marginTop="6dip"
1642+ android:layout_marginBottom="6dip"
1643+ android:layout_weight="1">
1644+
1645+ <TextView android:id="@+id/title"
1646+ android:layout_width="wrap_content"
1647+ android:layout_height="wrap_content"
1648+ android:textAppearance="?android:attr/textAppearanceLarge" />
1649+
1650+ <TextView android:id="@+id/summary"
1651+ android:layout_width="wrap_content"
1652+ android:layout_height="wrap_content"
1653+ android:layout_alignLeft="@id/title"
1654+ android:layout_below="@id/title"
1655+ android:textAppearance="?android:attr/textAppearanceSmall"
1656+ android:textColor="?android:attr/textColorSecondary" />
1657+
1658+ </RelativeLayout>
1659+
1660+</LinearLayout>
1661
1662=== added file 'android/res/layout/save_dialog.xml'
1663--- android/res/layout/save_dialog.xml 1970-01-01 00:00:00 +0000
1664+++ android/res/layout/save_dialog.xml 2014-05-07 20:44:08 +0000
1665@@ -0,0 +1,28 @@
1666+<?xml version="1.0" encoding="utf-8"?>
1667+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
1668+ android:layout_width="wrap_content"
1669+ android:layout_height="wrap_content"
1670+ android:gravity="center_vertical" >
1671+
1672+ <RelativeLayout android:layout_width="wrap_content"
1673+ android:layout_height="wrap_content"
1674+ android:layout_marginLeft="15dip"
1675+ android:layout_marginRight="15dip"
1676+ android:layout_marginTop="6dip"
1677+ android:layout_marginBottom="6dip"
1678+ android:layout_weight="1">
1679+
1680+ <EditText android:id="@+id/listName"
1681+ android:layout_width="match_parent"
1682+ android:layout_height="wrap_content" />
1683+
1684+ <CheckBox android:id="@+id/external"
1685+ android:layout_width="wrap_content"
1686+ android:layout_height="wrap_content"
1687+ android:layout_alignLeft="@id/listName"
1688+ android:layout_below="@id/listName"
1689+ android:text="@string/externalSaveDialogText"/>
1690+
1691+ </RelativeLayout>
1692+
1693+</LinearLayout>
1694
1695=== added directory 'android/res/menu'
1696=== added file 'android/res/menu/main_options_menu.xml'
1697--- android/res/menu/main_options_menu.xml 1970-01-01 00:00:00 +0000
1698+++ android/res/menu/main_options_menu.xml 2014-05-07 20:44:08 +0000
1699@@ -0,0 +1,26 @@
1700+<?xml version="1.0" encoding="utf-8"?>
1701+<menu xmlns:android="http://schemas.android.com/apk/res/android">
1702+ <item android:id="@+id/save_benchmark_list"
1703+ android:title="@string/saveMainOptionsText"
1704+ android:icon="@drawable/menu_save" />
1705+
1706+ <item android:id="@+id/load_benchmark_list"
1707+ android:title="@string/loadMainOptionsText"
1708+ android:icon="@drawable/menu_load" />
1709+
1710+ <item android:id="@+id/delete_benchmark_list"
1711+ android:title="@string/deleteMainOptionsText"
1712+ android:icon="@drawable/menu_delete" />
1713+
1714+ <item android:id="@+id/settings"
1715+ android:title="@string/settingsMainOptionsText"
1716+ android:icon="@drawable/menu_settings" />
1717+
1718+ <item android:id="@+id/results"
1719+ android:title="@string/resultsMainOptionsText"
1720+ android:icon="@drawable/menu_results" />
1721+
1722+ <item android:id="@+id/about"
1723+ android:title="@string/aboutMainOptionsText"
1724+ android:icon="@drawable/menu_about" />
1725+</menu>
1726
1727=== added directory 'android/res/values'
1728=== added file 'android/res/values/strings.xml'
1729--- android/res/values/strings.xml 1970-01-01 00:00:00 +0000
1730+++ android/res/values/strings.xml 2014-05-07 20:44:08 +0000
1731@@ -0,0 +1,46 @@
1732+<?xml version="1.0" encoding="utf-8"?>
1733+<resources>
1734+ <string name="app_name">GLMark2</string>
1735+ <string name="title_activity_main">GLMark2</string>
1736+ <string name="title_activity_editor">GLMark2 Benchmark Editor</string>
1737+ <string name="title_activity_preferences">GLMark2 Settings</string>
1738+ <string name="title_activity_about">About GLMark2</string>
1739+ <string name="title_activity_results">GLMark2 Results</string>
1740+ <string name="title_activity_glmark2">GLMark2</string>
1741+ <string name="runButtonText">Run</string>
1742+ <string name="saveButtonText">Save</string>
1743+
1744+ <string name="saveMainOptionsText">Save list</string>
1745+ <string name="loadMainOptionsText">Load list</string>
1746+ <string name="deleteMainOptionsText">Delete list</string>
1747+ <string name="settingsMainOptionsText">Settings</string>
1748+ <string name="resultsMainOptionsText">Last results</string>
1749+ <string name="aboutMainOptionsText">About</string>
1750+
1751+ <string name="externalSaveDialogText">Save to external storage</string>
1752+
1753+ <string name="runForeverPreferenceTitle">Run forever</string>
1754+ <string name="runForeverPreferenceSummary">Run indefinitely, looping from the last benchmark back to the first</string>
1755+ <string name="logDebugPreferenceTitle">Log debug messages</string>
1756+ <string name="logDebugPreferenceSummary">Display debug messages in the log</string>
1757+ <string name="showResultsPreferenceTitle">Show benchmark results</string>
1758+ <string name="showResultsPreferenceSummary">Show results after running benchmarks</string>
1759+
1760+ <string name="about_name_version_format">GLMark2 %1$s</string>
1761+ <string name="about_description">OpenGL (ES) 2.0 benchmark suite</string>
1762+ <string name="about_copyright">Copyright © 2010-2012 Linaro Limited</string>
1763+ <string name="about_url">http://launchpad.net/glmark2</string>
1764+ <string name="about_license_1">
1765+ glmark2 is free software: you can redistribute it and/or modify it
1766+ under the terms of the GNU General Public License as published by the
1767+ Free Software Foundation, either version 3 of the License, or (at your
1768+ option) any later version
1769+ </string>
1770+ <string name="about_license_2">
1771+ glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
1772+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1773+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
1774+ details.
1775+ </string>
1776+
1777+</resources>
1778
1779=== added directory 'android/res/xml'
1780=== added file 'android/res/xml/preferences.xml'
1781--- android/res/xml/preferences.xml 1970-01-01 00:00:00 +0000
1782+++ android/res/xml/preferences.xml 2014-05-07 20:44:08 +0000
1783@@ -0,0 +1,15 @@
1784+<?xml version="1.0" encoding="utf-8"?>
1785+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
1786+ <CheckBoxPreference android:key="run_forever"
1787+ android:title="@string/runForeverPreferenceTitle"
1788+ android:summary="@string/runForeverPreferenceSummary"
1789+ android:defaultValue="false" />
1790+ <CheckBoxPreference android:key="log_debug"
1791+ android:title="@string/logDebugPreferenceTitle"
1792+ android:summary="@string/logDebugPreferenceSummary"
1793+ android:defaultValue="false" />
1794+ <CheckBoxPreference android:key="show_results"
1795+ android:title="@string/showResultsPreferenceTitle"
1796+ android:summary="@string/showResultsPreferenceSummary"
1797+ android:defaultValue="true" />
1798+</PreferenceScreen>
1799
1800=== added directory 'android/src'
1801=== added directory 'android/src/org'
1802=== added directory 'android/src/org/linaro'
1803=== added directory 'android/src/org/linaro/glmark2'
1804=== added file 'android/src/org/linaro/glmark2/AboutActivity.java'
1805--- android/src/org/linaro/glmark2/AboutActivity.java 1970-01-01 00:00:00 +0000
1806+++ android/src/org/linaro/glmark2/AboutActivity.java 2014-05-07 20:44:08 +0000
1807@@ -0,0 +1,52 @@
1808+/*
1809+ * Copyright © 2012 Linaro Limited
1810+ *
1811+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
1812+ *
1813+ * glmark2 is free software: you can redistribute it and/or modify it under the
1814+ * terms of the GNU General Public License as published by the Free Software
1815+ * Foundation, either version 3 of the License, or (at your option) any later
1816+ * version.
1817+ *
1818+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
1819+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1820+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
1821+ * details.
1822+ *
1823+ * You should have received a copy of the GNU General Public License along with
1824+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
1825+ *
1826+ * Authors:
1827+ * Alexandros Frantzis
1828+ */
1829+package org.linaro.glmark2;
1830+
1831+import android.app.Activity;
1832+import android.content.pm.PackageInfo;
1833+import android.os.Bundle;
1834+import android.view.Window;
1835+import android.widget.TextView;
1836+
1837+public class AboutActivity extends Activity {
1838+ @Override
1839+ public void onCreate(Bundle savedInstanceState) {
1840+ super.onCreate(savedInstanceState);
1841+ requestWindowFeature(Window.FEATURE_NO_TITLE);
1842+ setContentView(R.layout.activity_about);
1843+
1844+ /* Get the application version */
1845+ String versionName = "?";
1846+
1847+ try {
1848+ PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0);
1849+ versionName = info.versionName;
1850+ }
1851+ catch (Exception e) {
1852+ }
1853+
1854+ /* Display the application version */
1855+ TextView tv = (TextView) findViewById(R.id.name_version);
1856+ String formatString = getString(R.string.about_name_version_format);
1857+ tv.setText(String.format(formatString, versionName));
1858+ }
1859+}
1860
1861=== added file 'android/src/org/linaro/glmark2/BenchmarkListManager.java'
1862--- android/src/org/linaro/glmark2/BenchmarkListManager.java 1970-01-01 00:00:00 +0000
1863+++ android/src/org/linaro/glmark2/BenchmarkListManager.java 2014-05-07 20:44:08 +0000
1864@@ -0,0 +1,189 @@
1865+/*
1866+ * Copyright © 2012 Linaro Limited
1867+ *
1868+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
1869+ *
1870+ * glmark2 is free software: you can redistribute it and/or modify it under the
1871+ * terms of the GNU General Public License as published by the Free Software
1872+ * Foundation, either version 3 of the License, or (at your option) any later
1873+ * version.
1874+ *
1875+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
1876+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1877+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
1878+ * details.
1879+ *
1880+ * You should have received a copy of the GNU General Public License along with
1881+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
1882+ *
1883+ * Authors:
1884+ * Alexandros Frantzis
1885+ */
1886+package org.linaro.glmark2;
1887+
1888+import java.util.ArrayList;
1889+import java.util.Collections;
1890+import java.io.*;
1891+
1892+import android.app.Activity;
1893+import android.os.Environment;
1894+
1895+class BenchmarkListManager {
1896+
1897+ private ArrayList<String> benchmarks;
1898+ private Activity activity;
1899+
1900+ BenchmarkListManager(Activity activity, ArrayList<String> benchmarks)
1901+ {
1902+ this.activity = activity;
1903+ if (benchmarks == null) {
1904+ this.benchmarks = new ArrayList<String>();
1905+ this.benchmarks.add("Add benchmark...");
1906+ }
1907+ else {
1908+ this.benchmarks = benchmarks;
1909+ }
1910+ }
1911+
1912+ /**
1913+ * Gets the list holding the benchmarks.
1914+ *
1915+ * The reference to this list is constant for the life of
1916+ * the BenchmarkListManager,
1917+ *
1918+ * @return the operation error code
1919+ */
1920+ ArrayList<String> getBenchmarkList() {
1921+ return benchmarks;
1922+ }
1923+
1924+ /**
1925+ * Gets the saved benchmark lists.
1926+ *
1927+ * Each list name is prefixed with either "internal/" or "external/"
1928+ * to denote in which storage area it is saved in.
1929+ *
1930+ * @return an array containing the saved list names
1931+ */
1932+ String[] getSavedLists() {
1933+ File externalPath = getSavedListPath(true);
1934+ File internalPath = getSavedListPath(false);
1935+ ArrayList<String> lists = new ArrayList<String>();
1936+
1937+ if (externalPath != null && externalPath.isDirectory()) {
1938+ for (File f: externalPath.listFiles())
1939+ lists.add("external/" + f.getName());
1940+ }
1941+
1942+ if (internalPath != null && internalPath.isDirectory()) {
1943+ for (File f: internalPath.listFiles())
1944+ lists.add("internal/" + f.getName());
1945+ }
1946+
1947+ Collections.sort(lists);
1948+
1949+ String[] a = new String[0];
1950+ return lists.toArray(a);
1951+ }
1952+
1953+ /**
1954+ * Saves the current benchmark list to a file.
1955+ *
1956+ * @param listName the list filename
1957+ * @param external whether the file is to be stored in external storage
1958+ */
1959+ void saveBenchmarkList(String listName, boolean external) throws Exception {
1960+ File listPath = getSavedListPath(external);
1961+ if (listPath == null)
1962+ throw new Exception("External storage not present");
1963+
1964+ listPath.mkdirs();
1965+
1966+ File f = new File(listPath, listName);
1967+
1968+ BufferedWriter out = new BufferedWriter(new FileWriter(f));
1969+ try {
1970+ for (int i = 0; i < benchmarks.size() - 1; i++) {
1971+ out.write(benchmarks.get(i));
1972+ out.newLine();
1973+ }
1974+ }
1975+ catch (Exception ex) {
1976+ throw ex;
1977+ }
1978+ finally {
1979+ out.close();
1980+ }
1981+ }
1982+
1983+ /**
1984+ * Loads a benchmark list from a file.
1985+ *
1986+ * @param listName the list filename
1987+ * @param external whether the file is stored in external storage
1988+ */
1989+ void loadBenchmarkList(String listName, boolean external) throws Exception {
1990+ /* Get the list file path */
1991+ File listPath = getSavedListPath(external);
1992+ if (listPath == null)
1993+ throw new Exception("External storage not present");
1994+
1995+ File f = new File(listPath, listName);
1996+
1997+ ArrayList<String> newBenchmarks = new ArrayList<String>();
1998+
1999+ /* Read benchmarks from file */
2000+ BufferedReader reader = new BufferedReader(new FileReader(f));
2001+ String line = null;
2002+
2003+ while ((line = reader.readLine()) != null)
2004+ newBenchmarks.add(line);
2005+
2006+ /* If everything went well, replace current benchmarks */
2007+ benchmarks.clear();
2008+ benchmarks.addAll(newBenchmarks);
2009+ benchmarks.add("Add benchmark...");
2010+ }
2011+
2012+ /**
2013+ * Delete a benchmark list file.
2014+ *
2015+ * @param listName the list filename
2016+ * @param external whether the file is stored in external storage
2017+ */
2018+ void deleteBenchmarkList(String listName, boolean external) throws Exception {
2019+ /* Get the list file path */
2020+ File listPath = getSavedListPath(external);
2021+ if (listPath == null)
2022+ throw new Exception("External storage not present");
2023+
2024+ File f = new File(listPath, listName);
2025+ f.delete();
2026+ }
2027+
2028+ /**
2029+ * Gets the path where benchmark lists are saved in.
2030+ *
2031+ * @param external whether to get the path for external storage
2032+ *
2033+ * @return the saved list path
2034+ */
2035+ private File getSavedListPath(boolean external) {
2036+ File f = null;
2037+
2038+ if (external) {
2039+ String state = Environment.getExternalStorageState();
2040+ if (!Environment.MEDIA_MOUNTED.equals(state))
2041+ return null;
2042+ f = activity.getExternalFilesDir(null);
2043+ }
2044+ else {
2045+ f = activity.getFilesDir();
2046+ }
2047+
2048+ if (f != null)
2049+ f = new File(f, "lists");
2050+
2051+ return f;
2052+ }
2053+}
2054
2055=== added file 'android/src/org/linaro/glmark2/EditorActivity.java'
2056--- android/src/org/linaro/glmark2/EditorActivity.java 1970-01-01 00:00:00 +0000
2057+++ android/src/org/linaro/glmark2/EditorActivity.java 2014-05-07 20:44:08 +0000
2058@@ -0,0 +1,548 @@
2059+/*
2060+ * Copyright © 2012 Linaro Limited
2061+ *
2062+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
2063+ *
2064+ * glmark2 is free software: you can redistribute it and/or modify it under the
2065+ * terms of the GNU General Public License as published by the Free Software
2066+ * Foundation, either version 3 of the License, or (at your option) any later
2067+ * version.
2068+ *
2069+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
2070+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
2071+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
2072+ * details.
2073+ *
2074+ * You should have received a copy of the GNU General Public License along with
2075+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
2076+ *
2077+ * Authors:
2078+ * Alexandros Frantzis
2079+ */
2080+package org.linaro.glmark2;
2081+
2082+import java.util.ArrayList;
2083+import java.util.Collections;
2084+import java.util.Comparator;
2085+
2086+import android.app.Activity;
2087+import android.app.AlertDialog;
2088+import android.app.Dialog;
2089+import android.content.Context;
2090+import android.content.DialogInterface;
2091+import android.content.DialogInterface.OnDismissListener;
2092+import android.content.Intent;
2093+import android.graphics.Color;
2094+import android.os.Bundle;
2095+import android.os.Parcelable;
2096+import android.text.SpannableString;
2097+import android.text.style.ForegroundColorSpan;
2098+import android.util.Log;
2099+import android.view.inputmethod.EditorInfo;
2100+import android.view.KeyEvent;
2101+import android.view.LayoutInflater;
2102+import android.view.View;
2103+import android.view.ViewGroup;
2104+import android.view.WindowManager;
2105+import android.widget.AdapterView;
2106+import android.widget.AdapterView.OnItemClickListener;
2107+import android.widget.AdapterView.OnItemLongClickListener;
2108+import android.widget.ArrayAdapter;
2109+import android.widget.Button;
2110+import android.widget.EditText;
2111+import android.widget.ListView;
2112+import android.widget.TextView;
2113+import android.widget.TextView.OnEditorActionListener;
2114+
2115+public class EditorActivity extends Activity {
2116+ public static final int DIALOG_SCENE_NAME_ID = 0;
2117+ public static final int DIALOG_SCENE_OPTION_TEXT_ID = 1;
2118+ public static final int DIALOG_SCENE_OPTION_LIST_ID = 2;
2119+
2120+ public static final int ITEM_POSITION_SCENE_NAME_HEADER = 0;
2121+ public static final int ITEM_POSITION_SCENE_NAME = 1;
2122+ public static final int ITEM_POSITION_SCENE_OPTION_HEADER = 2;
2123+ public static final int ITEM_POSITION_SCENE_OPTION = 3;
2124+
2125+ private EditorItemAdapter adapter;
2126+ private ArrayList<SceneInfo> sceneInfoList;
2127+ private String[] sceneNames;
2128+
2129+ @Override
2130+ public void onCreate(Bundle savedInstanceState) {
2131+ super.onCreate(savedInstanceState);
2132+ setContentView(R.layout.activity_editor);
2133+
2134+ /* Get information about the available scenes */
2135+ sceneInfoList = getSceneInfoList();
2136+ sceneNames = getSceneNames();
2137+
2138+ /* Read information sent by the main activity */
2139+ final int benchmarkPos = this.getIntent().getIntExtra("benchmark-pos", 0);
2140+ String benchmarkText = getIntent().getStringExtra("benchmark-text");
2141+ if (benchmarkText.isEmpty())
2142+ benchmarkText = sceneNames[0];
2143+
2144+ /* Set up the run button */
2145+ Button runButton = (Button) findViewById(R.id.runButton);
2146+ runButton.setOnClickListener(new View.OnClickListener() {
2147+ public void onClick(View v) {
2148+ Intent intent = new Intent(EditorActivity.this, Glmark2Activity.class);
2149+ String args = "-b \"" + getBenchmarkDescriptionText() + "\"";
2150+ intent.putExtra("args", args);
2151+ startActivity(intent);
2152+ }
2153+ });
2154+
2155+ /* Set up the save button */
2156+ Button button = (Button) findViewById(R.id.saveButton);
2157+ button.setOnClickListener(new View.OnClickListener() {
2158+ public void onClick(View v) {
2159+ String newBenchmarkText = getBenchmarkDescriptionText();
2160+ Intent intent = new Intent();
2161+ intent.putExtra("benchmark-text", newBenchmarkText);
2162+ intent.putExtra("benchmark-pos", benchmarkPos);
2163+ setResult(RESULT_OK, intent);
2164+ finish();
2165+ }
2166+ });
2167+
2168+ /* Set up list view */
2169+ ListView lv = (ListView) findViewById(R.id.editorListView);
2170+ adapter = new EditorItemAdapter(this, R.layout.list_item,
2171+ getEditorItemList(benchmarkText));
2172+ lv.setAdapter(adapter);
2173+
2174+ lv.setOnItemClickListener(new OnItemClickListener() {
2175+ public void onItemClick(AdapterView<?> parentView, View childView, int position, long id) {
2176+ Bundle bundle = new Bundle();
2177+ bundle.putInt("item-pos", position);
2178+ /* Show the right dialog, depending on the clicked list position */
2179+ if (position == ITEM_POSITION_SCENE_NAME) {
2180+ showDialog(DIALOG_SCENE_NAME_ID, bundle);
2181+ }
2182+ else if (position >= ITEM_POSITION_SCENE_OPTION) {
2183+ String[] values = adapter.getItem(position).option.acceptableValues;
2184+ if (values.length == 0)
2185+ showDialog(DIALOG_SCENE_OPTION_TEXT_ID, bundle);
2186+ else
2187+ showDialog(DIALOG_SCENE_OPTION_LIST_ID, bundle);
2188+ }
2189+ }
2190+ });
2191+
2192+ lv.setOnItemLongClickListener(new OnItemLongClickListener() {
2193+ public boolean onItemLongClick(AdapterView<?> parentView, View childView, int position, long id) {
2194+ /* Reset the value of the long-clicked option */
2195+ if (position >= ITEM_POSITION_SCENE_OPTION) {
2196+ EditorItem item = adapter.getItem(position);
2197+ item.value = null;
2198+ adapter.notifyDataSetChanged();
2199+ }
2200+ return true;
2201+ }
2202+ });
2203+ }
2204+
2205+ @Override
2206+ protected Dialog onCreateDialog(int id, Bundle bundle) {
2207+ final int itemPos = bundle.getInt("item-pos");
2208+ Dialog dialog;
2209+ final int finalId = id;
2210+
2211+ switch (id) {
2212+ case DIALOG_SCENE_NAME_ID:
2213+ {
2214+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
2215+ builder.setTitle("Pick a scene");
2216+ builder.setItems(sceneNames, new DialogInterface.OnClickListener() {
2217+ public void onClick(DialogInterface dialog, int item) {
2218+ adapter.clear();
2219+ for (EditorItem ei: getEditorItemList(sceneNames[item]))
2220+ adapter.add(ei);
2221+ adapter.notifyDataSetChanged();
2222+ dismissDialog(DIALOG_SCENE_NAME_ID);
2223+ }
2224+ });
2225+ dialog = builder.create();
2226+ }
2227+ break;
2228+
2229+ case DIALOG_SCENE_OPTION_TEXT_ID:
2230+ {
2231+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
2232+ final EditorItem item = adapter.getItem(itemPos);
2233+ final EditText input = new EditText(this);
2234+ if (item.value != null)
2235+ input.setText(item.value);
2236+
2237+ input.setOnEditorActionListener(new OnEditorActionListener() {
2238+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
2239+ if (actionId == EditorInfo.IME_ACTION_DONE ||
2240+ (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER &&
2241+ event.getAction() == KeyEvent.ACTION_UP))
2242+ {
2243+ item.value = v.getText().toString();
2244+ adapter.notifyDataSetChanged();
2245+ dismissDialog(DIALOG_SCENE_OPTION_TEXT_ID);
2246+ }
2247+ return true;
2248+ }
2249+ });
2250+ builder.setTitle(item.option.name + ": " + item.option.description);
2251+ dialog = builder.create();
2252+ ((AlertDialog)dialog).setView(input, 15, 6, 15, 6);
2253+ dialog.getWindow().setSoftInputMode(
2254+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN |
2255+ WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
2256+ );
2257+
2258+ }
2259+ break;
2260+
2261+ case DIALOG_SCENE_OPTION_LIST_ID:
2262+ {
2263+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
2264+ final EditorItem item = adapter.getItem(itemPos);
2265+ builder.setTitle(item.option.name + ": " + item.option.description);
2266+
2267+ builder.setItems(item.option.acceptableValues, new DialogInterface.OnClickListener() {
2268+ public void onClick(DialogInterface dialog, int index) {
2269+ item.value = item.option.acceptableValues[index];
2270+ adapter.notifyDataSetChanged();
2271+ dismissDialog(DIALOG_SCENE_OPTION_LIST_ID);
2272+ }
2273+ });
2274+
2275+ dialog = builder.create();
2276+ }
2277+ break;
2278+
2279+ default:
2280+ dialog = null;
2281+ break;
2282+ }
2283+
2284+ if (dialog != null) {
2285+ dialog.setOnDismissListener(new OnDismissListener() {
2286+ public void onDismiss(DialogInterface dialog) {
2287+ removeDialog(finalId);
2288+ }
2289+ });
2290+ }
2291+
2292+ return dialog;
2293+ }
2294+
2295+ /**
2296+ * Gets the value of an option.
2297+ *
2298+ * @param benchArray an array of option strings ("opt=val")
2299+ * @param opt the options to get the value of
2300+ *
2301+ * @return the value or null
2302+ */
2303+ private String getOptionValue(String[] benchArray, String opt) {
2304+ String ret = null;
2305+
2306+ /* Search from the end to the beginning */
2307+ for (int n = benchArray.length - 1; n >= 0; n--) {
2308+ String s = benchArray[n].trim();
2309+ if (s.startsWith(opt + "=")) {
2310+ int i = s.indexOf('=');
2311+ if (i >= 0 && i + 1 < s.length()) {
2312+ ret = s.substring(i + 1).trim();
2313+ break;
2314+ }
2315+ }
2316+ }
2317+
2318+ return ret;
2319+ }
2320+
2321+ /**
2322+ * Gets the benchmark description string of the current editing state.
2323+ *
2324+ * @return the string
2325+ */
2326+ private String getBenchmarkDescriptionText() {
2327+ String ret = "";
2328+
2329+ for (int i = 0; i < adapter.getCount(); i++) {
2330+ /* Convert each list item to a proper string representation */
2331+ EditorItem item = adapter.getItem(i);
2332+ if (item == null)
2333+ continue;
2334+
2335+ String s = "";
2336+
2337+ /*
2338+ * Append "opt=" if this is an option item, except the
2339+ * "__custom__" item.
2340+ */
2341+ if (item.option != null && item.value != null &&
2342+ !item.option.name.equals("__custom__"))
2343+ {
2344+ s += item.option.name + "=";
2345+ }
2346+
2347+ /*
2348+ * Append the item value if this is not "__custom__".
2349+ */
2350+ if (item.value != null && !item.value.equals("__custom__"))
2351+ s += item.value;
2352+
2353+ /*
2354+ * Append ":" to the description string if needed.
2355+ */
2356+ if (!s.isEmpty() && !ret.isEmpty())
2357+ ret += ":";
2358+
2359+ /* Append the item representation */
2360+ ret += s;
2361+ }
2362+
2363+ return ret;
2364+ }
2365+
2366+ /**
2367+ * Creates an EditorItem list from a benchmark description string.
2368+ *
2369+ * @param benchDesc the benchmark description string
2370+ *
2371+ * @return the list
2372+ */
2373+ private ArrayList<EditorItem> getEditorItemList(String benchDesc) {
2374+ String[] benchArray = benchDesc.split(":");
2375+ String benchName = benchArray[0].trim();
2376+
2377+ if (benchName.isEmpty())
2378+ benchName = "__custom__";
2379+
2380+ /* Find SceneInfo from name */
2381+ SceneInfo sceneInfo = null;
2382+ for (SceneInfo si: sceneInfoList) {
2383+ if (si.name.equals(benchName)) {
2384+ sceneInfo = si;
2385+ break;
2386+ }
2387+ }
2388+
2389+ /* If we couldn't find a matching SceneInfo, use __custom__ */
2390+ if (sceneInfo == null) {
2391+ for (SceneInfo si: sceneInfoList) {
2392+ if (si.name.equals("__custom__")) {
2393+ sceneInfo = si;
2394+ break;
2395+ }
2396+ }
2397+ }
2398+
2399+ ArrayList<EditorItem> l = new ArrayList<EditorItem>();
2400+
2401+ /* Append null item for Scene header */
2402+ l.add(null);
2403+
2404+ /* Append scene name item */
2405+ l.add(new EditorItem(null, sceneInfo.name));
2406+
2407+ /* Append null item for Options header */
2408+ l.add(null);
2409+
2410+ /* Append items to the list */
2411+ if (!sceneInfo.name.equals("__custom__")) {
2412+ /* Append scene option items */
2413+ for (SceneInfo.Option opt: sceneInfo.options)
2414+ l.add(new EditorItem(opt, getOptionValue(benchArray, opt.name)));
2415+ }
2416+ else {
2417+ String desc = new String(benchDesc);
2418+ if (desc.startsWith("__custom__"))
2419+ desc = "";
2420+
2421+ /* Append scene option items (only one for __custom__) */
2422+ for (SceneInfo.Option opt: sceneInfo.options)
2423+ l.add(new EditorItem(opt, desc));
2424+ }
2425+
2426+ return l;
2427+ }
2428+
2429+ /**
2430+ * Gets a list of information about the available scenes.
2431+ *
2432+ * @return the list
2433+ */
2434+ private ArrayList<SceneInfo> getSceneInfoList() {
2435+ ArrayList<SceneInfo> l = new ArrayList<SceneInfo>();
2436+ SceneInfo customSceneInfo = new SceneInfo("__custom__");
2437+ customSceneInfo.addOption("__custom__", "Custom benchmark string", "", new String[0]);
2438+
2439+ for (Parcelable p: getIntent().getParcelableArrayExtra("scene-info"))
2440+ l.add((SceneInfo)p);
2441+
2442+ /* Sort SceneInfo list by name */
2443+ Collections.sort(l, new Comparator<SceneInfo>() {
2444+ public int compare(SceneInfo s1, SceneInfo s2) {
2445+ return s1.name.compareTo(s2.name);
2446+ }
2447+ });
2448+
2449+ /* Add the "__custom__" SceneInfo */
2450+ l.add(customSceneInfo);
2451+
2452+ return l;
2453+ }
2454+
2455+ /**
2456+ * Gets the array of scene names.
2457+ *
2458+ * @return the array
2459+ */
2460+ private String[] getSceneNames() {
2461+ ArrayList<String> l = new ArrayList<String>();
2462+
2463+ for (SceneInfo si: sceneInfoList) {
2464+ if (!si.name.isEmpty())
2465+ l.add(si.name);
2466+ }
2467+
2468+ String[] a = new String[0];
2469+ return l.toArray(a);
2470+ }
2471+
2472+
2473+ static private class EditorItem {
2474+ SceneInfo.Option option;
2475+
2476+ public EditorItem(SceneInfo.Option o, String value) {
2477+ this.option = o;
2478+ this.value = value;
2479+ }
2480+
2481+ public String value;
2482+ }
2483+
2484+ /**
2485+ * A ListView adapter that creates list item views from EditorItems
2486+ */
2487+ private class EditorItemAdapter extends ArrayAdapter<EditorItem> {
2488+ static final int VIEW_TYPE_HEADER = 0;
2489+ static final int VIEW_TYPE_SCENE_NAME = 1;
2490+ static final int VIEW_TYPE_SCENE_OPTION = 2;
2491+ static final int VIEW_TYPE_COUNT = 3;
2492+
2493+ public ArrayList<EditorItem> items;
2494+
2495+ public EditorItemAdapter(Context context, int textViewResourceId,
2496+ ArrayList<EditorItem> items)
2497+ {
2498+ super(context, textViewResourceId, items);
2499+ this.items = items;
2500+ }
2501+
2502+ @Override
2503+ public boolean isEnabled(int position) {
2504+ return position == ITEM_POSITION_SCENE_NAME ||
2505+ position >= ITEM_POSITION_SCENE_OPTION;
2506+ }
2507+
2508+ @Override
2509+ public int getItemViewType(int position) {
2510+ if (position == ITEM_POSITION_SCENE_NAME)
2511+ return VIEW_TYPE_SCENE_NAME;
2512+ else if (position >= ITEM_POSITION_SCENE_OPTION)
2513+ return VIEW_TYPE_SCENE_OPTION;
2514+ else
2515+ return VIEW_TYPE_HEADER;
2516+ }
2517+
2518+ @Override
2519+ public int getViewTypeCount() {
2520+ return VIEW_TYPE_COUNT;
2521+ }
2522+
2523+ @Override
2524+ public View getView(int position, View convertView, ViewGroup parent) {
2525+ int viewType = getItemViewType(position);
2526+ View v = null;
2527+
2528+ if (viewType == VIEW_TYPE_HEADER)
2529+ v = getViewHeader(position, convertView);
2530+ else if (viewType == VIEW_TYPE_SCENE_NAME)
2531+ v = getViewScene(position, convertView);
2532+ else if (viewType == VIEW_TYPE_SCENE_OPTION)
2533+ v = getViewOption(position, convertView);
2534+
2535+ return v;
2536+ }
2537+
2538+ private View getViewHeader(int position, View convertView) {
2539+ /* Get the view/widget to use */
2540+ View v = convertView;
2541+ if (v == null) {
2542+ LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
2543+ v = vi.inflate(R.layout.list_header, null);
2544+ }
2545+
2546+ TextView tv = (TextView) v;
2547+
2548+ if (position == ITEM_POSITION_SCENE_NAME_HEADER)
2549+ tv.setText("Scene");
2550+ else if (position == ITEM_POSITION_SCENE_OPTION_HEADER)
2551+ tv.setText("Options");
2552+
2553+ return tv;
2554+ }
2555+
2556+ private View getViewScene(int position, View convertView) {
2557+ /* Get the view/widget to use */
2558+ View v = convertView;
2559+ if (v == null) {
2560+ LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
2561+ v = vi.inflate(R.layout.list_item, null);
2562+ }
2563+
2564+ EditorItem item = items.get(position);
2565+
2566+ TextView title = (TextView) v.findViewById(R.id.title);
2567+ TextView summary = (TextView) v.findViewById(R.id.summary);
2568+
2569+ if (title != null)
2570+ title.setText(item.value);
2571+ if (summary != null)
2572+ summary.setText("The scene to use");
2573+
2574+ return v;
2575+ }
2576+
2577+ private View getViewOption(int position, View convertView) {
2578+ /* Get the view/widget to use */
2579+ View v = convertView;
2580+ if (v == null) {
2581+ LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
2582+ v = vi.inflate(R.layout.list_item, null);
2583+ }
2584+
2585+ EditorItem item = items.get(position);
2586+
2587+ TextView title = (TextView) v.findViewById(R.id.title);
2588+ TextView summary = (TextView) v.findViewById(R.id.summary);
2589+ boolean hasUserSetValue = item.value != null;
2590+ String value = hasUserSetValue ? item.value : item.option.defaultValue;
2591+
2592+ if (title != null) {
2593+ /* If the option has been edited by the user show it with emphasis */
2594+ SpannableString titleText = new SpannableString(item.option.name + " = " + value);
2595+ ForegroundColorSpan span = new ForegroundColorSpan(hasUserSetValue ? Color.CYAN : Color.LTGRAY);
2596+ titleText.setSpan(span, item.option.name.length() + " = ".length(), titleText.length(), 0);
2597+ title.setText(titleText);
2598+ }
2599+
2600+ if (summary != null)
2601+ summary.setText(item.option.description);
2602+
2603+ return v;
2604+ }
2605+ }
2606+}
2607
2608=== added file 'android/src/org/linaro/glmark2/GLVisualConfig.java'
2609--- android/src/org/linaro/glmark2/GLVisualConfig.java 1970-01-01 00:00:00 +0000
2610+++ android/src/org/linaro/glmark2/GLVisualConfig.java 2014-05-07 20:44:08 +0000
2611@@ -0,0 +1,46 @@
2612+/*
2613+ * Copyright © 2012 Linaro Limited
2614+ *
2615+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
2616+ *
2617+ * glmark2 is free software: you can redistribute it and/or modify it under the
2618+ * terms of the GNU General Public License as published by the Free Software
2619+ * Foundation, either version 3 of the License, or (at your option) any later
2620+ * version.
2621+ *
2622+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
2623+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
2624+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
2625+ * details.
2626+ *
2627+ * You should have received a copy of the GNU General Public License along with
2628+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
2629+ *
2630+ * Authors:
2631+ * Alexandros Frantzis
2632+ */
2633+package org.linaro.glmark2;
2634+
2635+/**
2636+ * Class that holds a configuration of a GL visual.
2637+ */
2638+class GLVisualConfig {
2639+ public GLVisualConfig() {}
2640+ public GLVisualConfig(int r, int g, int b, int a, int d, int s, int buf) {
2641+ red = r;
2642+ green = g;
2643+ blue = b;
2644+ alpha = a;
2645+ depth = d;
2646+ stencil = s;
2647+ buffer = buf;
2648+ }
2649+
2650+ public int red;
2651+ public int green;
2652+ public int blue;
2653+ public int alpha;
2654+ public int depth;
2655+ public int stencil;
2656+ public int buffer;
2657+}
2658
2659=== added file 'android/src/org/linaro/glmark2/Glmark2Activity.java'
2660--- android/src/org/linaro/glmark2/Glmark2Activity.java 1970-01-01 00:00:00 +0000
2661+++ android/src/org/linaro/glmark2/Glmark2Activity.java 2014-05-07 20:44:08 +0000
2662@@ -0,0 +1,88 @@
2663+package org.linaro.glmark2;
2664+
2665+import android.app.Activity;
2666+import android.os.Bundle;
2667+import android.opengl.GLSurfaceView;
2668+import android.app.Dialog;
2669+import android.app.AlertDialog;
2670+import android.content.DialogInterface;
2671+import android.content.Context;
2672+import android.os.PowerManager;
2673+import android.os.PowerManager.WakeLock;
2674+
2675+public class Glmark2Activity extends Activity {
2676+ public static final int DIALOG_EGLCONFIG_FAIL_ID = 0;
2677+ public static final String TAG = "GLMark2";
2678+ private WakeLock mWakeLock;
2679+
2680+ @Override
2681+ protected void onDestroy() {
2682+ super.onDestroy();
2683+ mWakeLock.release();
2684+ }
2685+
2686+ @Override
2687+ protected void onCreate(Bundle savedInstanceState) {
2688+ super.onCreate(savedInstanceState);
2689+
2690+ PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
2691+ mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG);
2692+ mWakeLock.acquire();
2693+
2694+ mGLView = new Glmark2SurfaceView(this);
2695+ setContentView(mGLView);
2696+ }
2697+
2698+ @Override
2699+ protected void onPause() {
2700+ super.onPause();
2701+ mGLView.onPause();
2702+ Glmark2Activity.this.finish();
2703+ android.os.Process.killProcess(android.os.Process.myPid());
2704+ }
2705+
2706+ @Override
2707+ protected void onResume() {
2708+ super.onResume();
2709+ mGLView.onResume();
2710+ }
2711+
2712+ @Override
2713+ protected Dialog onCreateDialog(int id) {
2714+ Dialog dialog;
2715+ switch (id) {
2716+ case DIALOG_EGLCONFIG_FAIL_ID:
2717+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
2718+ builder.setMessage("Glmark2 cannot run because it couldn't find a suitable EGLConfig for GLES2.0. Please check that proper GLES2.0 drivers are installed.");
2719+ builder.setCancelable(false);
2720+ builder.setPositiveButton("Quit",
2721+ new DialogInterface.OnClickListener() {
2722+ public void onClick(DialogInterface dialog, int id) {
2723+ Glmark2Activity.this.finish();
2724+ /*
2725+ * Force process shutdown. There is no safer way to
2726+ * do this, as we have open threads we can't close
2727+ * when we fail to get an EGLConfig
2728+ */
2729+ android.os.Process.killProcess(android.os.Process.myPid());
2730+ }
2731+ });
2732+
2733+ dialog = builder.create();
2734+ break;
2735+ default:
2736+ dialog = null;
2737+ break;
2738+ }
2739+
2740+ return dialog;
2741+ }
2742+
2743+
2744+ private GLSurfaceView mGLView;
2745+
2746+ static {
2747+ System.loadLibrary("glmark2-android");
2748+ }
2749+}
2750+
2751
2752=== added file 'android/src/org/linaro/glmark2/Glmark2Native.java'
2753--- android/src/org/linaro/glmark2/Glmark2Native.java 1970-01-01 00:00:00 +0000
2754+++ android/src/org/linaro/glmark2/Glmark2Native.java 2014-05-07 20:44:08 +0000
2755@@ -0,0 +1,34 @@
2756+/*
2757+ * Copyright © 2012 Linaro Limited
2758+ *
2759+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
2760+ *
2761+ * glmark2 is free software: you can redistribute it and/or modify it under the
2762+ * terms of the GNU General Public License as published by the Free Software
2763+ * Foundation, either version 3 of the License, or (at your option) any later
2764+ * version.
2765+ *
2766+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
2767+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
2768+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
2769+ * details.
2770+ *
2771+ * You should have received a copy of the GNU General Public License along with
2772+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
2773+ *
2774+ * Authors:
2775+ * Alexandros Frantzis
2776+ */
2777+package org.linaro.glmark2;
2778+
2779+import android.content.res.AssetManager;
2780+
2781+class Glmark2Native {
2782+ public static native void init(AssetManager assetManager, String args,
2783+ String logFilePath);
2784+ public static native void resize(int w, int h);
2785+ public static native boolean render();
2786+ public static native void done();
2787+ public static native int scoreConfig(GLVisualConfig vc, GLVisualConfig target);
2788+ public static native SceneInfo[] getSceneInfo(AssetManager assetManager);
2789+}
2790
2791=== added file 'android/src/org/linaro/glmark2/Glmark2SurfaceView.java'
2792--- android/src/org/linaro/glmark2/Glmark2SurfaceView.java 1970-01-01 00:00:00 +0000
2793+++ android/src/org/linaro/glmark2/Glmark2SurfaceView.java 2014-05-07 20:44:08 +0000
2794@@ -0,0 +1,218 @@
2795+package org.linaro.glmark2;
2796+
2797+import java.io.File;
2798+
2799+import android.graphics.PixelFormat;
2800+import android.opengl.GLSurfaceView;
2801+import android.app.Activity;
2802+import android.util.Log;
2803+
2804+import javax.microedition.khronos.egl.EGL10;
2805+import javax.microedition.khronos.egl.EGLDisplay;
2806+import javax.microedition.khronos.egl.EGLConfig;
2807+import javax.microedition.khronos.opengles.GL10;
2808+
2809+class Glmark2SurfaceView extends GLSurfaceView {
2810+
2811+ public static final String LOG_TAG = "glmark2";
2812+
2813+ public Glmark2SurfaceView(Activity activity) {
2814+ super(activity);
2815+ mActivity = activity;
2816+
2817+ setEGLContextClientVersion(2);
2818+
2819+ setEGLConfigChooser(getConfigChooser());
2820+
2821+ setRenderer(new Glmark2Renderer(this));
2822+ }
2823+
2824+ private EGLConfigChooser getConfigChooser() {
2825+ String args = mActivity.getIntent().getStringExtra("args");
2826+
2827+ if (args == null)
2828+ args = "";
2829+
2830+ String[] argv = args.split(" ");
2831+
2832+ /* Find the visual-config option argument */
2833+ String configString = new String();
2834+ boolean keepNext = false;
2835+ for (String arg : argv) {
2836+ if (keepNext) {
2837+ configString = arg;
2838+ break;
2839+ }
2840+
2841+ if (arg.equals("--visual-config"))
2842+ keepNext = true;
2843+ }
2844+
2845+ /* Parse the config string parameters */
2846+ String[] configParams = configString.split(":");
2847+ GLVisualConfig targetConfig = new GLVisualConfig(5, 6, 5, 0, 16, 0, 1);
2848+
2849+ for (String param : configParams) {
2850+ String[] paramKeyValue = param.split("=");
2851+ if (paramKeyValue.length < 2)
2852+ continue;
2853+
2854+ if (paramKeyValue[0].equals("red") || paramKeyValue[0].equals("r"))
2855+ targetConfig.red = Integer.parseInt(paramKeyValue[1]);
2856+ else if (paramKeyValue[0].equals("green") || paramKeyValue[0].equals("g"))
2857+ targetConfig.green = Integer.parseInt(paramKeyValue[1]);
2858+ else if (paramKeyValue[0].equals("blue") || paramKeyValue[0].equals("b"))
2859+ targetConfig.blue = Integer.parseInt(paramKeyValue[1]);
2860+ else if (paramKeyValue[0].equals("alpha") || paramKeyValue[0].equals("a"))
2861+ targetConfig.alpha = Integer.parseInt(paramKeyValue[1]);
2862+ else if (paramKeyValue[0].equals("depth") || paramKeyValue[0].equals("d"))
2863+ targetConfig.depth = Integer.parseInt(paramKeyValue[1]);
2864+ else if (paramKeyValue[0].equals("stencil") || paramKeyValue[0].equals("s"))
2865+ targetConfig.stencil = Integer.parseInt(paramKeyValue[1]);
2866+ else if (paramKeyValue[0].equals("buffer") || paramKeyValue[0].equals("buf"))
2867+ targetConfig.buffer = Integer.parseInt(paramKeyValue[1]);
2868+ }
2869+
2870+ return new Glmark2ConfigChooser(targetConfig);
2871+ }
2872+
2873+ /**
2874+ * EGLConfigChooser that quits with an error dialog when a suitable config
2875+ * cannot be found.
2876+ */
2877+ private class Glmark2ConfigChooser implements EGLConfigChooser {
2878+ private int[] mAttribList;
2879+
2880+ public Glmark2ConfigChooser(GLVisualConfig targetConfig)
2881+ {
2882+ mAttribList = new int[] {
2883+ EGL10.EGL_RED_SIZE, targetConfig.red,
2884+ EGL10.EGL_GREEN_SIZE, targetConfig.green,
2885+ EGL10.EGL_BLUE_SIZE, targetConfig.blue,
2886+ EGL10.EGL_ALPHA_SIZE, targetConfig.alpha,
2887+ EGL10.EGL_DEPTH_SIZE, targetConfig.depth,
2888+ EGL10.EGL_STENCIL_SIZE, targetConfig.stencil,
2889+ EGL10.EGL_BUFFER_SIZE, targetConfig.buffer,
2890+ EGL10.EGL_RENDERABLE_TYPE, 4, /* 4 = EGL_OPENGL_ES2_BIT */
2891+ EGL10.EGL_NONE };
2892+
2893+ mTargetConfig = targetConfig;
2894+ }
2895+
2896+ @Override
2897+ public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
2898+ try {
2899+ return chooseConfigInternal(egl, display);
2900+ }
2901+ catch (Exception e) {
2902+ /* Log an error message */
2903+ Log.e(LOG_TAG, "No suitable EGLConfig for GLES2.0 found. Please check that proper GLES2.0 drivers are installed.");
2904+ /* Display an informative (and lethal for the app) dialog */
2905+ mActivity.runOnUiThread(new Runnable() {
2906+ public void run() {
2907+ mActivity.showDialog(Glmark2Activity.DIALOG_EGLCONFIG_FAIL_ID);
2908+ }
2909+ });
2910+
2911+ /* Wait here until the app process gets killed... */
2912+ synchronized (this) {
2913+ try { this.wait(); } catch (Exception ex) { }
2914+ }
2915+ }
2916+ return null;
2917+ }
2918+
2919+ private EGLConfig chooseConfigInternal(EGL10 egl, EGLDisplay display) {
2920+ /* Get the number of available configs matching the attributes */
2921+ int[] num_config = new int[1];
2922+ if (!egl.eglChooseConfig(display, mAttribList, null, 0, num_config)) {
2923+ throw new IllegalArgumentException("eglChooseConfig failed");
2924+ }
2925+
2926+ int numConfigs = num_config[0];
2927+
2928+ if (numConfigs <= 0) {
2929+ throw new IllegalArgumentException("No matching configs found");
2930+ }
2931+
2932+ /* Get the matching configs */
2933+ EGLConfig[] configs = new EGLConfig[numConfigs];
2934+ if (!egl.eglChooseConfig(display, mAttribList, configs, numConfigs,
2935+ num_config))
2936+ {
2937+ throw new IllegalArgumentException("eglChooseConfig#2 failed");
2938+ }
2939+
2940+ /* Find the best matching config. */
2941+ int bestScore = Integer.MIN_VALUE;
2942+ EGLConfig bestConfig = configs[0];
2943+
2944+ for (EGLConfig config : configs) {
2945+ GLVisualConfig vc = new GLVisualConfig();
2946+ vc.red = findConfigAttrib(egl, display, config,
2947+ EGL10.EGL_RED_SIZE, 0);
2948+ vc.green = findConfigAttrib(egl, display, config,
2949+ EGL10.EGL_GREEN_SIZE, 0);
2950+ vc.blue = findConfigAttrib(egl, display, config,
2951+ EGL10.EGL_BLUE_SIZE, 0);
2952+ vc.alpha = findConfigAttrib(egl, display, config,
2953+ EGL10.EGL_ALPHA_SIZE, 0);
2954+ vc.depth = findConfigAttrib(egl, display, config,
2955+ EGL10.EGL_DEPTH_SIZE, 0);
2956+ vc.stencil = findConfigAttrib(egl, display, config,
2957+ EGL10.EGL_STENCIL_SIZE, 0);
2958+ vc.buffer = findConfigAttrib(egl, display, config,
2959+ EGL10.EGL_BUFFER_SIZE, 0);
2960+
2961+ int score = Glmark2Native.scoreConfig(vc, mTargetConfig);
2962+
2963+ if (score > bestScore) {
2964+ bestScore = score;
2965+ bestConfig = config;
2966+ }
2967+ }
2968+
2969+ return bestConfig;
2970+ }
2971+
2972+ private int findConfigAttrib(EGL10 egl, EGLDisplay display, EGLConfig config,
2973+ int attribute, int defaultValue)
2974+ {
2975+ int[] value = new int[] { defaultValue };
2976+ egl.eglGetConfigAttrib(display, config, attribute, value);
2977+ return value[0];
2978+ }
2979+
2980+ protected GLVisualConfig mTargetConfig;
2981+ }
2982+
2983+ public Activity getActivity() {
2984+ return mActivity;
2985+ }
2986+
2987+ private Activity mActivity;
2988+
2989+}
2990+
2991+class Glmark2Renderer implements GLSurfaceView.Renderer {
2992+ public Glmark2Renderer(Glmark2SurfaceView view) {
2993+ mView = view;
2994+ }
2995+
2996+ public void onDrawFrame(GL10 gl) {
2997+ if (!Glmark2Native.render())
2998+ mView.getActivity().finish();
2999+ }
3000+
3001+ public void onSurfaceChanged(GL10 gl, int width, int height) {
3002+ Glmark2Native.resize(width, height);
3003+ }
3004+
3005+ public void onSurfaceCreated(GL10 gl, EGLConfig config) {
3006+ String args = mView.getActivity().getIntent().getStringExtra("args");
3007+ File f = new File(mView.getActivity().getFilesDir(), "last_run.log");
3008+ Glmark2Native.init(mView.getActivity().getAssets(), args, f.getAbsolutePath());
3009+ }
3010+
3011+ private Glmark2SurfaceView mView;
3012+}
3013
3014=== added file 'android/src/org/linaro/glmark2/MainActivity.java'
3015--- android/src/org/linaro/glmark2/MainActivity.java 1970-01-01 00:00:00 +0000
3016+++ android/src/org/linaro/glmark2/MainActivity.java 2014-05-07 20:44:08 +0000
3017@@ -0,0 +1,482 @@
3018+/*
3019+ * Copyright © 2012 Linaro Limited
3020+ *
3021+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
3022+ *
3023+ * glmark2 is free software: you can redistribute it and/or modify it under the
3024+ * terms of the GNU General Public License as published by the Free Software
3025+ * Foundation, either version 3 of the License, or (at your option) any later
3026+ * version.
3027+ *
3028+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
3029+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
3030+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
3031+ * details.
3032+ *
3033+ * You should have received a copy of the GNU General Public License along with
3034+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
3035+ *
3036+ * Authors:
3037+ * Alexandros Frantzis
3038+ */
3039+package org.linaro.glmark2;
3040+
3041+import java.util.ArrayList;
3042+
3043+import android.os.Bundle;
3044+import android.app.Activity;
3045+import android.app.AlertDialog;
3046+import android.app.Dialog;
3047+import android.content.Context;
3048+import android.content.DialogInterface;
3049+import android.content.DialogInterface.OnDismissListener;
3050+import android.content.Intent;
3051+import android.content.SharedPreferences;
3052+import android.preference.PreferenceManager;
3053+import android.widget.BaseAdapter;
3054+import android.widget.ArrayAdapter;
3055+import android.widget.ListView;
3056+import android.widget.TextView;
3057+import android.widget.Button;
3058+import android.widget.EditText;
3059+import android.widget.CheckBox;
3060+import android.view.KeyEvent;
3061+import android.view.LayoutInflater;
3062+import android.view.Menu;
3063+import android.view.MenuInflater;
3064+import android.view.MenuItem;
3065+import android.view.View;
3066+import android.view.ViewGroup;
3067+import android.view.WindowManager;
3068+import android.view.inputmethod.EditorInfo;
3069+import android.util.Log;
3070+import android.widget.AdapterView.OnItemClickListener;
3071+import android.widget.AdapterView.OnItemLongClickListener;
3072+import android.widget.AdapterView;
3073+import android.widget.TextView.OnEditorActionListener;
3074+
3075+public class MainActivity extends Activity {
3076+ public static final int DIALOG_ERROR_ID = 0;
3077+ public static final int DIALOG_BENCHMARK_ACTIONS_ID = 1;
3078+ public static final int DIALOG_SAVE_LIST_ID = 2;
3079+ public static final int DIALOG_LOAD_LIST_ID = 3;
3080+ public static final int DIALOG_DELETE_LIST_ID = 4;
3081+
3082+ public static final int ACTIVITY_GLMARK2_REQUEST_CODE = 1;
3083+ public static final int ACTIVITY_EDITOR_REQUEST_CODE = 2;
3084+
3085+ /**
3086+ * The supported benchmark item actions.
3087+ */
3088+ public enum BenchmarkItemAction {
3089+ EDIT, DELETE, CLONE, MOVEUP, MOVEDOWN
3090+ }
3091+
3092+ BaseAdapter adapter;
3093+ SceneInfo[] sceneInfoList;
3094+ BenchmarkListManager benchmarkListManager;
3095+
3096+ @Override
3097+ public void onCreate(Bundle savedInstanceState) {
3098+ super.onCreate(savedInstanceState);
3099+ setContentView(R.layout.activity_main);
3100+ ArrayList<String> savedBenchmarks = null;
3101+
3102+ if (savedInstanceState != null)
3103+ savedBenchmarks = savedInstanceState.getStringArrayList("benchmarks");
3104+
3105+ init(savedBenchmarks);
3106+ }
3107+
3108+ @Override
3109+ protected void onSaveInstanceState(Bundle outState) {
3110+ super.onSaveInstanceState(outState);
3111+ outState.putStringArrayList("benchmarks", benchmarkListManager.getBenchmarkList());
3112+ }
3113+
3114+ @Override
3115+ protected Dialog onCreateDialog(int id, Bundle bundle) {
3116+ final CharSequence[] benchmarkActions = {"Delete", "Clone", "Move Up", "Move Down"};
3117+ final BenchmarkItemAction[] benchmarkActionsId = {
3118+ BenchmarkItemAction.DELETE, BenchmarkItemAction.CLONE,
3119+ BenchmarkItemAction.MOVEUP, BenchmarkItemAction.MOVEDOWN
3120+ };
3121+ final int finalId = id;
3122+
3123+ Dialog dialog;
3124+
3125+ switch (id) {
3126+ case DIALOG_ERROR_ID:
3127+ {
3128+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
3129+ builder.setMessage(bundle.getString("message") + ": " +
3130+ bundle.getString("detail"));
3131+ builder.setCancelable(false);
3132+ builder.setPositiveButton("OK", null);
3133+ dialog = builder.create();
3134+ }
3135+ break;
3136+
3137+ case DIALOG_BENCHMARK_ACTIONS_ID:
3138+ {
3139+ final int benchmarkPos = bundle.getInt("benchmark-pos");
3140+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
3141+ builder.setTitle("Pick an action");
3142+ builder.setItems(benchmarkActions, new DialogInterface.OnClickListener() {
3143+ public void onClick(DialogInterface dialog, int item) {
3144+ doBenchmarkItemAction(benchmarkPos, benchmarkActionsId[item], null);
3145+ dismissDialog(DIALOG_BENCHMARK_ACTIONS_ID);
3146+ }
3147+ });
3148+ dialog = builder.create();
3149+ }
3150+ break;
3151+
3152+ case DIALOG_SAVE_LIST_ID:
3153+ {
3154+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
3155+ View layout = getLayoutInflater().inflate(R.layout.save_dialog, null);
3156+ final EditText input = (EditText) layout.findViewById(R.id.listName);
3157+ final CheckBox checkBox = (CheckBox) layout.findViewById(R.id.external);
3158+
3159+ input.setOnEditorActionListener(new OnEditorActionListener() {
3160+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
3161+ if (actionId == EditorInfo.IME_ACTION_DONE ||
3162+ (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER &&
3163+ event.getAction() == KeyEvent.ACTION_UP))
3164+ {
3165+ String listName = v.getText().toString();
3166+ try {
3167+ benchmarkListManager.saveBenchmarkList(listName,
3168+ checkBox.isChecked());
3169+ }
3170+ catch (Exception ex) {
3171+ Bundle bundle = new Bundle();
3172+ bundle.putString("message", "Cannot save list to file " + listName);
3173+ bundle.putString("detail", ex.getMessage());
3174+ showDialog(DIALOG_ERROR_ID, bundle);
3175+ }
3176+ dismissDialog(DIALOG_SAVE_LIST_ID);
3177+ }
3178+ return true;
3179+ }
3180+ });
3181+
3182+ builder.setTitle("Save list as");
3183+ builder.setView(layout);
3184+
3185+ dialog = builder.create();
3186+ dialog.getWindow().setSoftInputMode(
3187+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN |
3188+ WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
3189+ );
3190+ }
3191+ break;
3192+
3193+ case DIALOG_LOAD_LIST_ID:
3194+ case DIALOG_DELETE_LIST_ID:
3195+ {
3196+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
3197+ if (id == DIALOG_LOAD_LIST_ID)
3198+ builder.setTitle("Load list");
3199+ else
3200+ builder.setTitle("Delete list");
3201+ final String[] savedLists = benchmarkListManager.getSavedLists();
3202+
3203+ builder.setItems(savedLists, new DialogInterface.OnClickListener() {
3204+ public void onClick(DialogInterface dialog, int index) {
3205+ String desc = savedLists[index];
3206+ String filename = "";
3207+ boolean external = false;
3208+
3209+ if (desc.startsWith("internal/")) {
3210+ filename = desc.replace("internal/", "");
3211+ external = false;
3212+ }
3213+ else if (desc.startsWith("external/")) {
3214+ filename = desc.replace("external/", "");
3215+ external = true;
3216+ }
3217+
3218+ try {
3219+ if (finalId == DIALOG_LOAD_LIST_ID) {
3220+ benchmarkListManager.loadBenchmarkList(filename, external);
3221+ adapter.notifyDataSetChanged();
3222+ }
3223+ else {
3224+ benchmarkListManager.deleteBenchmarkList(filename, external);
3225+ }
3226+
3227+ }
3228+ catch (Exception ex) {
3229+ Bundle bundle = new Bundle();
3230+ if (finalId == DIALOG_LOAD_LIST_ID)
3231+ bundle.putString("message", "Cannot load list " + desc);
3232+ else
3233+ bundle.putString("message", "Cannot delete list " + desc);
3234+ bundle.putString("detail", ex.getMessage());
3235+ showDialog(DIALOG_ERROR_ID, bundle);
3236+ }
3237+ dismissDialog(finalId);
3238+ }
3239+ });
3240+
3241+ dialog = builder.create();
3242+ }
3243+ break;
3244+
3245+ default:
3246+ dialog = null;
3247+ break;
3248+ }
3249+
3250+ if (dialog != null) {
3251+ dialog.setOnDismissListener(new OnDismissListener() {
3252+ public void onDismiss(DialogInterface dialog) {
3253+ removeDialog(finalId);
3254+ }
3255+ });
3256+ }
3257+
3258+ return dialog;
3259+ }
3260+
3261+ @Override
3262+ public boolean onCreateOptionsMenu(Menu menu) {
3263+ MenuInflater inflater = getMenuInflater();
3264+ inflater.inflate(R.menu.main_options_menu, menu);
3265+ return true;
3266+ }
3267+
3268+ @Override
3269+ public boolean onOptionsItemSelected(MenuItem item) {
3270+ boolean ret = true;
3271+
3272+ switch (item.getItemId()) {
3273+ case R.id.save_benchmark_list:
3274+ showDialog(DIALOG_SAVE_LIST_ID);
3275+ ret = true;
3276+ break;
3277+ case R.id.load_benchmark_list:
3278+ showDialog(DIALOG_LOAD_LIST_ID);
3279+ ret = true;
3280+ break;
3281+ case R.id.delete_benchmark_list:
3282+ showDialog(DIALOG_DELETE_LIST_ID);
3283+ ret = true;
3284+ break;
3285+ case R.id.settings:
3286+ startActivity(new Intent(MainActivity.this, MainPreferencesActivity.class));
3287+ ret = true;
3288+ break;
3289+ case R.id.results:
3290+ startActivity(new Intent(MainActivity.this, ResultsActivity.class));
3291+ ret = true;
3292+ break;
3293+ case R.id.about:
3294+ startActivity(new Intent(MainActivity.this, AboutActivity.class));
3295+ ret = true;
3296+ break;
3297+ default:
3298+ ret = super.onOptionsItemSelected(item);
3299+ break;
3300+ }
3301+
3302+ return ret;
3303+ }
3304+
3305+ @Override
3306+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
3307+ if (requestCode == ACTIVITY_GLMARK2_REQUEST_CODE)
3308+ {
3309+ startActivity(new Intent(this, ResultsActivity.class));
3310+ return;
3311+ }
3312+ else if (requestCode == ACTIVITY_EDITOR_REQUEST_CODE &&
3313+ resultCode == RESULT_OK)
3314+ {
3315+ String benchmarkText = data.getStringExtra("benchmark-text");
3316+ int benchmarkPos = data.getIntExtra("benchmark-pos", 0);
3317+ doBenchmarkItemAction(benchmarkPos, BenchmarkItemAction.EDIT, benchmarkText);
3318+ }
3319+ }
3320+
3321+ /**
3322+ * Initialize the activity.
3323+ *
3324+ * @param savedBenchmarks a list of benchmarks to load the list with (or null)
3325+ */
3326+ private void init(ArrayList<String> savedBenchmarks)
3327+ {
3328+ /* Initialize benchmark list manager */
3329+ benchmarkListManager = new BenchmarkListManager(this, savedBenchmarks);
3330+ final ArrayList<String> benchmarks = benchmarkListManager.getBenchmarkList();
3331+
3332+ /* Get Scene information */
3333+ sceneInfoList = Glmark2Native.getSceneInfo(getAssets());
3334+
3335+ /* Set up the run button */
3336+ Button button = (Button) findViewById(R.id.runButton);
3337+ button.setOnClickListener(new View.OnClickListener() {
3338+ public void onClick(View v) {
3339+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
3340+ Intent intent = new Intent(MainActivity.this, Glmark2Activity.class);
3341+ String args = "";
3342+ for (int i = 0; i < benchmarks.size() - 1; i++)
3343+ args += "-b \"" + benchmarks.get(i) + "\" ";
3344+ if (prefs.getBoolean("run_forever", false))
3345+ args += "--run-forever ";
3346+ if (prefs.getBoolean("log_debug", false))
3347+ args += "--debug ";
3348+ if (!args.isEmpty())
3349+ intent.putExtra("args", args);
3350+
3351+ if (prefs.getBoolean("show_results", true))
3352+ startActivityForResult(intent, ACTIVITY_GLMARK2_REQUEST_CODE);
3353+ else
3354+ startActivity(intent);
3355+ }
3356+ });
3357+
3358+ /* Set up the benchmark list view */
3359+ ListView lv = (ListView) findViewById(R.id.benchmarkListView);
3360+ adapter = new BenchmarkAdapter(this, R.layout.list_item, benchmarks);
3361+ lv.setAdapter(adapter);
3362+
3363+ lv.setOnItemClickListener(new OnItemClickListener() {
3364+ public void onItemClick(AdapterView<?> parentView, View childView, int position, long id) {
3365+ Intent intent = new Intent(MainActivity.this, EditorActivity.class);
3366+ String t = benchmarks.get(position);
3367+ if (position == benchmarks.size() - 1)
3368+ t = "";
3369+ intent.putExtra("benchmark-text", t);
3370+ intent.putExtra("benchmark-pos", position);
3371+ intent.putExtra("scene-info", sceneInfoList);
3372+ startActivityForResult(intent, ACTIVITY_EDITOR_REQUEST_CODE);
3373+ }
3374+ });
3375+
3376+ lv.setOnItemLongClickListener(new OnItemLongClickListener() {
3377+ public boolean onItemLongClick(AdapterView<?> parentView, View childView, int position, long id) {
3378+ if (position < benchmarks.size() - 1) {
3379+ Bundle bundle = new Bundle();
3380+ bundle.putInt("benchmark-pos", position);
3381+ showDialog(DIALOG_BENCHMARK_ACTIONS_ID, bundle);
3382+ }
3383+ return true;
3384+ }
3385+ });
3386+
3387+ }
3388+
3389+ /**
3390+ * Perform an action on an listview benchmark item.
3391+ *
3392+ * @param position the position of the item in the listview
3393+ * @param action the action to perform
3394+ * @param data extra data needed by some actions
3395+ */
3396+ private void doBenchmarkItemAction(int position, BenchmarkItemAction action, String data)
3397+ {
3398+ int scrollPosition = position;
3399+ final ArrayList<String> benchmarks = benchmarkListManager.getBenchmarkList();
3400+
3401+ switch(action) {
3402+ case EDIT:
3403+ if (position == benchmarks.size() - 1) {
3404+ benchmarks.add(position, data);
3405+ scrollPosition = position + 1;
3406+ }
3407+ else {
3408+ benchmarks.set(position, data);
3409+ }
3410+ break;
3411+ case DELETE:
3412+ benchmarks.remove(position);
3413+ break;
3414+ case CLONE:
3415+ {
3416+ String s = benchmarks.get(position);
3417+ benchmarks.add(position, s);
3418+ scrollPosition = position + 1;
3419+ }
3420+ break;
3421+ case MOVEUP:
3422+ if (position > 0) {
3423+ String up = benchmarks.get(position - 1);
3424+ String s = benchmarks.get(position);
3425+ benchmarks.set(position - 1, s);
3426+ benchmarks.set(position, up);
3427+ scrollPosition = position - 1;
3428+ }
3429+ break;
3430+ case MOVEDOWN:
3431+ if (position < benchmarks.size() - 2) {
3432+ String down = benchmarks.get(position + 1);
3433+ String s = benchmarks.get(position);
3434+ benchmarks.set(position + 1, s);
3435+ benchmarks.set(position, down);
3436+ scrollPosition = position + 1;
3437+ }
3438+ break;
3439+ default:
3440+ break;
3441+ }
3442+
3443+
3444+ adapter.notifyDataSetChanged();
3445+
3446+ /* Scroll the list view so that the item of interest remains visible */
3447+ final int finalScrollPosition = scrollPosition;
3448+ final ListView lv = (ListView) findViewById(R.id.benchmarkListView);
3449+ lv.post(new Runnable() {
3450+ @Override
3451+ public void run() {
3452+ lv.smoothScrollToPosition(finalScrollPosition);
3453+ }
3454+ });
3455+ }
3456+
3457+ /**
3458+ * A ListView adapter that creates item views from benchmark strings.
3459+ */
3460+ private class BenchmarkAdapter extends ArrayAdapter<String> {
3461+ private ArrayList<String> items;
3462+
3463+ public BenchmarkAdapter(Context context, int textViewResourceId, ArrayList<String> items) {
3464+ super(context, textViewResourceId, items);
3465+ this.items = items;
3466+ }
3467+
3468+ @Override
3469+ public View getView(int position, View convertView, ViewGroup parent) {
3470+ /* Get the view/widget to use */
3471+ View v = convertView;
3472+ if (v == null) {
3473+ LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
3474+ v = vi.inflate(R.layout.list_item, null);
3475+ }
3476+
3477+ /* Split the benchmark into its scene name and its options */
3478+ String benchmark = items.get(position);
3479+ String[] ba = benchmark.split(":", 2);
3480+
3481+ if (ba != null) {
3482+ TextView title = (TextView) v.findViewById(R.id.title);
3483+ TextView summary = (TextView) v.findViewById(R.id.summary);
3484+ title.setText("");
3485+ summary.setText("");
3486+
3487+ if (title != null && ba.length > 0)
3488+ title.setText(ba[0]);
3489+ if (summary != null && ba.length > 1)
3490+ summary.setText(ba[1]);
3491+ }
3492+ return v;
3493+ }
3494+ }
3495+
3496+ static {
3497+ System.loadLibrary("glmark2-android");
3498+ }
3499+}
3500
3501=== added file 'android/src/org/linaro/glmark2/MainPreferencesActivity.java'
3502--- android/src/org/linaro/glmark2/MainPreferencesActivity.java 1970-01-01 00:00:00 +0000
3503+++ android/src/org/linaro/glmark2/MainPreferencesActivity.java 2014-05-07 20:44:08 +0000
3504@@ -0,0 +1,33 @@
3505+/*
3506+ * Copyright © 2012 Linaro Limited
3507+ *
3508+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
3509+ *
3510+ * glmark2 is free software: you can redistribute it and/or modify it under the
3511+ * terms of the GNU General Public License as published by the Free Software
3512+ * Foundation, either version 3 of the License, or (at your option) any later
3513+ * version.
3514+ *
3515+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
3516+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
3517+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
3518+ * details.
3519+ *
3520+ * You should have received a copy of the GNU General Public License along with
3521+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
3522+ *
3523+ * Authors:
3524+ * Alexandros Frantzis
3525+ */
3526+package org.linaro.glmark2;
3527+
3528+import android.os.Bundle;
3529+import android.preference.PreferenceActivity;
3530+
3531+public class MainPreferencesActivity extends PreferenceActivity {
3532+ @Override
3533+ protected void onCreate(Bundle savedInstanceState) {
3534+ super.onCreate(savedInstanceState);
3535+ addPreferencesFromResource(R.xml.preferences);
3536+ }
3537+}
3538
3539=== added file 'android/src/org/linaro/glmark2/ResultsActivity.java'
3540--- android/src/org/linaro/glmark2/ResultsActivity.java 1970-01-01 00:00:00 +0000
3541+++ android/src/org/linaro/glmark2/ResultsActivity.java 2014-05-07 20:44:08 +0000
3542@@ -0,0 +1,58 @@
3543+/*
3544+ * Copyright © 2012 Linaro Limited
3545+ *
3546+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
3547+ *
3548+ * glmark2 is free software: you can redistribute it and/or modify it under the
3549+ * terms of the GNU General Public License as published by the Free Software
3550+ * Foundation, either version 3 of the License, or (at your option) any later
3551+ * version.
3552+ *
3553+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
3554+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
3555+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
3556+ * details.
3557+ *
3558+ * You should have received a copy of the GNU General Public License along with
3559+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
3560+ *
3561+ * Authors:
3562+ * Alexandros Frantzis
3563+ */
3564+package org.linaro.glmark2;
3565+
3566+import java.io.*;
3567+
3568+import android.app.Activity;
3569+import android.os.Bundle;
3570+import android.widget.TextView;
3571+
3572+public class ResultsActivity extends Activity {
3573+ @Override
3574+ public void onCreate(Bundle savedInstanceState) {
3575+ super.onCreate(savedInstanceState);
3576+
3577+ setContentView(R.layout.activity_results);
3578+ TextView tv = (TextView) findViewById(R.id.results);
3579+
3580+ File f = new File(getFilesDir(), "last_run.log");
3581+
3582+ try {
3583+ /* Read log from file */
3584+ BufferedReader reader = new BufferedReader(new FileReader(f));
3585+ String line = null;
3586+ StringBuffer sb = new StringBuffer();
3587+
3588+ while ((line = reader.readLine()) != null) {
3589+ sb.append(line);
3590+ sb.append('\n');
3591+ }
3592+
3593+ reader.close();
3594+ tv.setText(sb.toString());
3595+ }
3596+ catch (Exception ex) {
3597+ }
3598+ }
3599+}
3600+
3601
3602=== added file 'android/src/org/linaro/glmark2/SceneInfo.java'
3603--- android/src/org/linaro/glmark2/SceneInfo.java 1970-01-01 00:00:00 +0000
3604+++ android/src/org/linaro/glmark2/SceneInfo.java 2014-05-07 20:44:08 +0000
3605@@ -0,0 +1,96 @@
3606+/*
3607+ * Copyright © 2012 Linaro Limited
3608+ *
3609+ * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark.
3610+ *
3611+ * glmark2 is free software: you can redistribute it and/or modify it under the
3612+ * terms of the GNU General Public License as published by the Free Software
3613+ * Foundation, either version 3 of the License, or (at your option) any later
3614+ * version.
3615+ *
3616+ * glmark2 is distributed in the hope that it will be useful, but WITHOUT ANY
3617+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
3618+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
3619+ * details.
3620+ *
3621+ * You should have received a copy of the GNU General Public License along with
3622+ * glmark2. If not, see <http://www.gnu.org/licenses/>.
3623+ *
3624+ * Authors:
3625+ * Alexandros Frantzis
3626+ */
3627+package org.linaro.glmark2;
3628+
3629+import android.os.Parcelable;
3630+import android.os.Parcel;
3631+import java.util.ArrayList;
3632+
3633+class SceneInfo implements Parcelable {
3634+ static class Option {
3635+ String name;
3636+ String description;
3637+ String defaultValue;
3638+ String[] acceptableValues;
3639+ }
3640+
3641+ public SceneInfo(String name) {
3642+ this.name = name;
3643+ this.options = new ArrayList<Option>();
3644+ }
3645+
3646+ public void addOption(String name, String description, String defaultValue,
3647+ String[] acceptableValues)
3648+ {
3649+ Option opt = new Option();
3650+ opt.name = name;
3651+ opt.description = description;
3652+ opt.defaultValue = defaultValue;
3653+ opt.acceptableValues = acceptableValues;
3654+ this.options.add(opt);
3655+ }
3656+
3657+ public String name;
3658+ public ArrayList<Option> options;
3659+
3660+ /* Parcelable interface */
3661+ public static final Parcelable.Creator<SceneInfo> CREATOR =
3662+ new Parcelable.Creator<SceneInfo>() {
3663+ public SceneInfo createFromParcel(Parcel in) {
3664+ return new SceneInfo(in);
3665+ }
3666+
3667+ public SceneInfo[] newArray(int size) {
3668+ return new SceneInfo[size];
3669+ }
3670+ };
3671+
3672+ public int describeContents() {
3673+ return 0;
3674+ }
3675+
3676+ public void writeToParcel(Parcel out, int flags) {
3677+ out.writeString(name);
3678+ out.writeInt(options.size());
3679+ for (Option opt: options) {
3680+ out.writeString(opt.name);
3681+ out.writeString(opt.description);
3682+ out.writeString(opt.defaultValue);
3683+ out.writeStringArray(opt.acceptableValues);
3684+ }
3685+ }
3686+
3687+ private SceneInfo(Parcel in) {
3688+ name = in.readString();
3689+ options = new ArrayList<Option>();
3690+
3691+ int size = in.readInt();
3692+ for (int i = 0; i < size; i++) {
3693+ Option opt = new Option();
3694+ opt.name = in.readString();
3695+ opt.description = in.readString();
3696+ opt.defaultValue = in.readString();
3697+ opt.acceptableValues = in.createStringArray();
3698+ options.add(opt);
3699+ }
3700+ }
3701+}
3702
3703=== added directory 'data'
3704=== renamed directory 'data' => 'data.moved'
3705=== added directory 'data/models'
3706=== added file 'data/models/asteroid-high.3ds'
3707Binary files data/models/asteroid-high.3ds 1970-01-01 00:00:00 +0000 and data/models/asteroid-high.3ds 2014-05-07 20:44:08 +0000 differ
3708=== added file 'data/models/asteroid-low.3ds'
3709Binary files data/models/asteroid-low.3ds 1970-01-01 00:00:00 +0000 and data/models/asteroid-low.3ds 2014-05-07 20:44:08 +0000 differ
3710=== added file 'data/models/bunny.obj'
3711--- data/models/bunny.obj 1970-01-01 00:00:00 +0000
3712+++ data/models/bunny.obj 2014-05-07 20:44:08 +0000
3713@@ -0,0 +1,104501 @@
3714+v 0.296502 -0.907931 0.450151
3715+v 0.315114 -0.913622 0.435867
3716+v 0.324517 -0.920404 0.443869
3717+v 0.325879 -0.966814 0.485578
3718+v 0.302693 -0.969589 0.506426
3719+v 0.29049 -0.968073 0.502572
3720+v 0.278223 -0.96657 0.498757
3721+v 0.256232 -0.967238 0.517897
3722+v 0.242885 -0.967829 0.515687
3723+v 0.220907 -0.96851 0.534853
3724+v 0.208062 -0.96806 0.53186
3725+v 0.197002 -0.964438 0.526298
3726+v 0.173341 -0.968279 0.547929
3727+v 0.161099 -0.966776 0.544075
3728+v 0.126289 -0.967007 0.560171
3729+v 0.112326 -0.968664 0.558732
3730+v 0.11889 -0.907418 0.505655
3731+v 0.10178 -0.963988 0.552425
3732+v 0.07826 -0.967765 0.573838
3733+v 0.0649908 -0.96824 0.571474
3734+v 0.0538154 -0.964656 0.566002
3735+v 0.0307452 -0.967842 0.586503
3736+v 0.0174889 -0.968317 0.584114
3737+v 0.00474634 -0.967778 0.58089
3738+v -0.0167567 -0.96797 0.599079
3739+v -0.0294992 -0.967431 0.595893
3740+v -0.00351319 -0.909242 0.528122
3741+v 0.0103597 -0.907585 0.529509
3742+v -0.0427042 -0.967906 0.593491
3743+v -0.0436933 -0.911066 0.521442
3744+v -0.13451 -0.969229 0.575058
3745+v -0.166648 -0.971927 0.547929
3746+v -0.124323 -0.915574 0.508661
3747+v -0.147766 -0.969704 0.572605
3748+v -0.160496 -0.969178 0.569458
3749+v -0.179365 -0.971374 0.544808
3750+v -0.192622 -0.97185 0.54238
3751+v -0.198222 -0.973596 0.520093
3752+v -0.210425 -0.972042 0.516175
3753+v -0.216 -0.973802 0.493915
3754+v -0.228165 -0.972248 0.49001
3755+v -0.231145 -0.968959 0.463908
3756+v -0.201472 -0.937116 0.442687
3757+v -0.18169 -0.924373 0.435802
3758+v -0.176295 -0.922665 0.458282
3759+v -0.162975 -0.92219 0.460709
3760+v -0.156937 -0.919364 0.482264
3761+v -0.144169 -0.91989 0.485462
3762+v -0.12923 -0.916255 0.485449
3763+v -0.121806 -0.969769 0.57818
3764+v -0.11054 -0.914084 0.510318
3765+v -0.0936743 -0.965761 0.580762
3766+v -0.107483 -0.967251 0.579092
3767+v -0.097104 -0.91348 0.512553
3768+v -0.0814841 -0.967315 0.584692
3769+v -0.0704243 -0.912273 0.516998
3770+v -0.0303213 -0.910462 0.523664
3771+v -0.0169494 -0.909858 0.525886
3772+v -0.0687031 -0.967855 0.587878
3773+v -0.0570524 -0.911669 0.51922
3774+v 0.0237188 -0.906981 0.531731
3775+v 0.0440016 -0.90946 0.515084
3776+v 0.0712978 -0.907199 0.518706
3777+v 0.0921457 -0.908625 0.501211
3778+v 0.105518 -0.908021 0.503433
3779+v 0.139738 -0.908856 0.488147
3780+v 0.152596 -0.909306 0.491191
3781+v 0.166481 -0.907649 0.492579
3782+v 0.187355 -0.909087 0.475058
3783+v 0.200714 -0.908497 0.477254
3784+v 0.214651 -0.906827 0.478641
3785+v 0.235512 -0.908278 0.461095
3786+v 0.248884 -0.907674 0.463304
3787+v 0.262256 -0.907084 0.465514
3788+v 0.283759 -0.907482 0.447119
3789+v 0.331685 -0.931477 0.455212
3790+v 0.148858 -0.96526 0.540209
3791+v 0.0579259 -0.907803 0.516484
3792+v -0.0559734 -0.968394 0.591102
3793+v -0.0832311 -0.911811 0.51394
3794+v -0.407922 -0.953686 0.138626
3795+v -0.458918 -0.98404 0.178575
3796+v -0.428115 -0.966955 0.146449
3797+v -0.46719 -0.983552 0.19941
3798+v -0.475205 -0.991233 0.250329
3799+v -0.477569 -0.987084 0.223315
3800+v -0.463028 -0.985555 0.293451
3801+v -0.469117 -0.988381 0.271896
3802+v -0.457453 -0.983731 0.315763
3803+v -0.439149 -0.982485 0.341261
3804+v -0.452379 -0.982948 0.338833
3805+v -0.420266 -0.98025 0.365924
3806+v -0.433021 -0.979698 0.362751
3807+v -0.407523 -0.980803 0.369084
3808+v -0.381576 -0.980918 0.374595
3809+v -0.346791 -0.980366 0.358731
3810+v -0.368281 -0.980443 0.377048
3811+v -0.333509 -0.979916 0.36112
3812+v -0.306418 -0.978015 0.365115
3813+v -0.321845 -0.982485 0.365796
3814+v -0.275397 -0.959865 0.332924
3815+v -0.247163 -0.963513 0.295866
3816+v -0.254652 -0.961471 0.315596
3817+v -0.243309 -0.963963 0.250869
3818+v -0.257696 -0.949781 0.188877
3819+v -0.24241 -0.953917 0.218884
3820+v -0.24715 -0.954457 0.195236
3821+v -0.276386 -0.951965 0.163867
3822+v -0.265814 -0.956654 0.170264
3823+v -0.287497 -0.948343 0.158344
3824+v -0.310169 -0.957925 0.139166
3825+v -0.297863 -0.959428 0.143071
3826+v -0.334652 -0.954881 0.131459
3827+v -0.322411 -0.956409 0.135312
3828+v -0.360844 -0.955022 0.126244
3829+v -0.346894 -0.953365 0.127592
3830+v -0.388744 -0.958323 0.123533
3831+v -0.374228 -0.955613 0.12406
3832+v -0.394254 -0.980366 0.37146
3833+v -0.24855 -0.957681 0.267259
3834+v 0.367279 -0.961702 0.0687223
3835+v 0.33744 -0.952145 0.0779067
3836+v 0.353329 -0.963333 0.0673993
3837+v 0.317568 -0.94833 0.0942716
3838+v 0.279482 -0.978259 0.137496
3839+v 0.296206 -0.963654 0.103867
3840+v 0.282475 -0.980841 0.163803
3841+v 0.292455 -0.978619 0.210509
3842+v 0.31225 -0.97429 0.233951
3843+v 0.300008 -0.972787 0.230136
3844+v 0.333252 -0.967855 0.255737
3845+v 0.32042 -0.967392 0.252693
3846+v 0.345995 -0.968317 0.25873
3847+v 0.36358 -0.968214 0.285525
3848+v 0.351274 -0.966686 0.281646
3849+v 0.37577 -0.96973 0.289417
3850+v 0.400304 -0.972749 0.297112
3851+v 0.386894 -0.97334 0.294941
3852+v 0.427074 -0.971567 0.301505
3853+v 0.459868 -0.950912 0.266193
3854+v 0.440985 -0.969923 0.302866
3855+v 0.491801 -0.948214 0.223482
3856+v 0.481936 -0.950308 0.246758
3857+v 0.502771 -0.951965 0.158858
3858+v 0.484762 -0.953339 0.132589
3859+v 0.494769 -0.959068 0.13986
3860+v 0.467896 -0.95262 0.104625
3861+v 0.479033 -0.956255 0.1102
3862+v 0.45735 -0.947944 0.0982537
3863+v 0.437068 -0.953545 0.0753377
3864+v 0.447639 -0.958208 0.0817603
3865+v 0.425391 -0.950976 0.0706491
3866+v 0.381807 -0.959017 0.0692105
3867+v 0.286033 -0.98237 0.18925
3868+v 0.413651 -0.972171 0.29927
3869+v 0.502168 -0.945041 0.19932
3870+v 0.506895 -0.952415 0.183572
3871+v 0.396335 -0.956332 0.0696857
3872+v 0.41315 -0.949447 0.0667955
3873+v -0.31681 -0.977553 -0.0308544
3874+v -0.32146 -0.978195 -0.054798
3875+v -0.293252 -0.950295 -0.0745413
3876+v -0.272661 -0.920173 -0.0741302
3877+v -0.262115 -0.924849 -0.0677333
3878+v -0.256334 -0.922074 -0.0454467
3879+v -0.243502 -0.922536 -0.0424152
3880+v -0.239443 -0.922922 -0.0176237
3881+v -0.226572 -0.923384 -0.0145794
3882+v -0.221922 -0.922806 0.00914585
3883+v -0.209667 -0.924335 0.0129994
3884+v -0.195679 -0.922691 0.0143354
3885+v -0.192146 -0.924219 0.0397562
3886+v -0.179288 -0.924682 0.0428134
3887+v -0.175178 -0.92517 0.0673607
3888+v -0.161767 -0.924579 0.0695444
3889+v -0.158222 -0.926133 0.0949396
3890+v -0.145351 -0.926583 0.0979582
3891+v -0.140662 -0.92603 0.121709
3892+v -0.128716 -0.928587 0.196122
3893+v -0.172981 -0.978285 0.208646
3894+v -0.176604 -0.976718 0.183277
3895+v -0.125107 -0.930141 0.221479
3896+v -0.15442 -0.960276 0.242609
3897+v -0.166507 -0.974534 0.229802
3898+v -0.181909 -0.978324 0.160438
3899+v -0.196385 -0.981021 0.159962
3900+v -0.201138 -0.981573 0.136301
3901+v -0.213958 -0.981111 0.133283
3902+v -0.218132 -0.98061 0.108697
3903+v -0.232082 -0.982254 0.1074
3904+v -0.236244 -0.981753 0.082865
3905+v -0.249642 -0.982344 0.0806428
3906+v -0.262988 -0.982935 0.0784719
3907+v -0.267176 -0.982434 0.0539246
3908+v -0.280522 -0.983025 0.0517794
3909+v -0.282436 -0.978324 0.0238409
3910+v -0.296347 -0.979955 0.0225178
3911+v -0.297067 -0.973198 -0.00728328
3912+v -0.313817 -0.980083 -0.00440594
3913+v -0.132904 -0.928086 0.171626
3914+v -0.137066 -0.927585 0.147092
3915+v -0.96948 0.285294 0.25381
3916+v -0.967758 0.285089 0.240991
3917+v -0.975298 0.26767 0.241081
3918+v -0.903378 0.00303149 0.255609
3919+v -0.926409 0.0219269 0.255275
3920+v -0.90691 0.00385359 0.242494
3921+v -0.91201 -0.0659092 0.204292
3922+v -0.904264 -0.0487993 0.204189
3923+v -0.904444 -0.048825 0.191408
3924+v -0.912074 -0.0659478 0.191485
3925+v -0.19004 -0.758386 -0.151934
3926+v -0.196514 -0.75768 -0.139847
3927+v -0.193457 -0.739902 -0.140258
3928+v -0.922646 0.408288 0.176417
3929+v -0.930533 0.40848 0.189853
3930+v -0.923802 0.425912 0.175814
3931+v -0.231684 -0.0572772 -0.242892
3932+v -0.231697 -0.0388442 -0.239963
3933+v -0.218826 -0.0571744 -0.244433
3934+v -0.205416 -0.220759 -0.289559
3935+v -0.218248 -0.220926 -0.288043
3936+v -0.205531 -0.202455 -0.286669
3937+v -0.888901 -0.0132307 0.152808
3938+v -0.887899 -0.0147336 0.139898
3939+v -0.890712 -0.0321132 0.140014
3940+v -0.898419 -0.0492489 0.152936
3941+v -0.896724 -0.0494544 0.140129
3942+v -0.9042 -0.0666157 0.140283
3943+v -0.900783 0.495828 0.125704
3944+v -0.89034 0.49588 0.112358
3945+v -0.890507 0.478397 0.112409
3946+v -0.903802 0.478423 0.125845
3947+v -0.00767507 0.22514 0.0800262
3948+v 0.00830448 0.230368 0.0858965
3949+v 0.0138408 0.229109 0.0692875
3950+v 0.0307581 0.234748 0.0755946
3951+v 0.0244767 0.228094 0.0534236
3952+v -0.0131985 0.226463 0.0966095
3953+v 0.00366733 0.232474 0.102788
3954+v 0.0451576 0.245217 0.136597
3955+v 0.0382083 0.244086 0.152666
3956+v 0.0544191 0.248634 0.158537
3957+v 0.0320169 0.243971 0.168941
3958+v 0.0259282 0.24347 0.185293
3959+v 0.0412784 0.247156 0.190894
3960+v 0.0605078 0.249006 0.142223
3961+v 0.066635 0.249237 0.125948
3962+v 0.0512463 0.245538 0.120296
3963+v 0.0490883 0.249135 0.17512
3964+v -0.019467 0.226642 0.112962
3965+v -0.00338474 0.231575 0.118845
3966+v 0.0728264 0.249327 0.109686
3967+v -0.0256199 0.226283 0.129352
3968+v -0.00948625 0.231203 0.135235
3969+v -0.0325821 0.225101 0.14546
3970+v -0.0155621 0.230573 0.151587
3971+v -0.0378872 0.22573 0.162121
3972+v -0.0224728 0.229327 0.167721
3973+v -0.0447851 0.224292 0.178254
3974+v -0.0286001 0.228852 0.184124
3975+v -0.0524666 0.221543 0.194311
3976+v -0.036243 0.226052 0.200117
3977+v 0.0933018 0.242018 0.0430189
3978+v 0.0892299 0.245705 0.060116
3979+v 0.109397 0.246758 0.0490177
3980+v 0.0684719 0.24302 0.0709831
3981+v 0.0628842 0.244613 0.0874508
3982+v 0.0844899 0.248081 0.0769048
3983+v -0.66416 0.775509 -0.402854
3984+v -0.670338 0.774854 -0.386926
3985+v -0.65405 0.768226 -0.399219
3986+v -0.824764 0.572194 0.30487
3987+v -0.834668 0.565848 0.320709
3988+v -0.818689 0.570973 0.326129
3989+v -0.647885 0.768573 -0.415327
3990+v -0.657865 0.775933 -0.419039
3991+v -0.402488 0.326412 0.254491
3992+v -0.397517 0.32392 0.237278
3993+v -0.399893 0.326142 0.243084
3994+v -0.660447 0.767596 -0.383175
3995+v 0.0566285 0.24478 0.1037
3996+v -0.794244 0.584281 0.24013
3997+v -0.801206 0.582791 0.256546
3998+v -0.785625 0.58599 0.261864
3999+v 0.0790307 0.249186 0.0934495
4000+v -0.0606362 0.216854 0.210188
4001+v -0.0445796 0.221825 0.215981
4002+v -0.966898 0.0749523 0.152281
4003+v -0.972986 0.092332 0.152165
4004+v -0.968632 0.0921779 0.139282
4005+v -0.0696665 0.211318 0.225769
4006+v -0.0526978 0.217073 0.231703
4007+v -0.0785426 0.205345 0.241312
4008+v -0.0623318 0.209982 0.247028
4009+v -0.0891399 0.197612 0.256623
4010+v -0.0728007 0.201838 0.26225
4011+v -0.099429 0.188929 0.271755
4012+v -0.0848625 0.191382 0.277266
4013+v -0.109782 0.180451 0.286938
4014+v -0.0957296 0.181337 0.292051
4015+v -0.121639 0.169532 0.301762
4016+v -0.107534 0.172782 0.306579
4017+v -0.915838 -0.134824 0.307067
4018+v -0.910455 -0.117586 0.307195
4019+v -0.915735 -0.117624 0.294119
4020+v -0.235114 -0.303098 -0.294697
4021+v -0.243309 -0.294864 -0.289816
4022+v -0.231016 -0.294427 -0.29575
4023+v -0.763698 0.583575 0.157124
4024+v -0.769992 0.583755 0.17363
4025+v -0.748939 0.585951 0.162287
4026+v -0.677095 0.773197 -0.371036
4027+v -0.667165 0.766042 -0.367311
4028+v -0.0664551 -0.915356 0.711617
4029+v -0.0798271 -0.915895 0.714173
4030+v -0.0795317 -0.933956 0.715393
4031+v -0.691636 0.58369 0.089095
4032+v -0.67829 0.582765 0.0939248
4033+v -0.672766 0.581532 0.0771874
4034+v 0.176475 0.259192 0.0555559
4035+v 0.191915 0.262314 0.0613363
4036+v 0.196488 0.258486 0.0436997
4037+v -0.842196 -0.453092 0.129301
4038+v -0.844084 -0.453259 0.116455
4039+v -0.83427 -0.471063 0.116558
4040+v -0.919588 -0.291383 0.128646
4041+v -0.919563 -0.291473 0.115813
4042+v -0.912164 -0.309032 0.115813
4043+v 0.478584 -0.226565 -0.287863
4044+v 0.490055 -0.23056 -0.283419
4045+v 0.476952 -0.242815 -0.296508
4046+v -0.562695 -0.856653 0.573799
4047+v -0.551494 -0.85664 0.58089
4048+v -0.555977 -0.840211 0.566542
4049+v -0.924816 -0.204626 0.14099
4050+v -0.925228 -0.204574 0.15372
4051+v -0.928053 -0.187105 0.14081
4052+v -0.794128 0.582316 0.277869
4053+v -0.80971 0.578783 0.272513
4054+v -0.801746 0.57922 0.29408
4055+v -0.465122 0.537357 0.245756
4056+v -0.469708 0.540068 0.262622
4057+v -0.463028 0.526863 0.265435
4058+v 0.986243 -0.525899 0.188659
4059+v 0.985125 -0.525771 0.175711
4060+v 0.978304 -0.513388 0.180528
4061+v -0.702619 0.863165 -0.583189
4062+v -0.692728 0.855664 -0.579593
4063+v -0.68416 0.860802 -0.595187
4064+v -0.96271 0.0746954 0.139397
4065+v -0.758945 0.581481 0.140065
4066+v -0.743338 0.584358 0.145576
4067+v -0.131979 0.160913 0.316996
4068+v -0.116603 0.164779 0.322571
4069+v -0.868092 -0.415879 0.180528
4070+v -0.884996 -0.397318 0.180425
4071+v -0.883557 -0.397575 0.167593
4072+v -0.14449 0.148838 0.331756
4073+v -0.127637 0.154786 0.337562
4074+v -0.153508 0.143058 0.34744
4075+v -0.1402 0.142583 0.352308
4076+v -0.163912 0.135633 0.363252
4077+v -0.150695 0.134567 0.367838
4078+v -0.847308 -0.435481 0.167747
4079+v -0.846691 -0.434993 0.180605
4080+v -0.868015 -0.415918 0.167644
4081+v -0.31803 0.767892 0.0363393
4082+v -0.332571 0.766286 0.0310471
4083+v -0.331903 0.7524 0.0499168
4084+v -0.925626 0.337061 0.12519
4085+v -0.922864 0.336984 0.112332
4086+v -0.935632 0.319308 0.112473
4087+v 0.0731861 0.240721 0.0541558
4088+v -0.933898 -0.256032 0.205332
4089+v -0.934707 -0.25593 0.192512
4090+v -0.929916 -0.273232 0.192628
4091+v -0.174484 0.127374 0.378795
4092+v -0.161061 0.125987 0.38315
4093+v -0.0610987 0.180566 0.323355
4094+v -0.0724025 0.171266 0.338422
4095+v -0.0568597 0.174465 0.343881
4096+v -0.660036 0.420157 -0.131973
4097+v -0.644802 0.428994 -0.151703
4098+v -0.634461 0.427954 -0.144214
4099+v -0.173623 0.114567 0.398667
4100+v -0.710608 0.473709 -0.286861
4101+v -0.698354 0.468365 -0.288929
4102+v -0.713242 0.474814 -0.273926
4103+v -0.0109635 0.671565 -0.179282
4104+v 0.000982665 0.668778 -0.174388
4105+v -0.0100001 0.656806 -0.160785
4106+v -0.491146 0.566118 0.234504
4107+v -0.501487 0.573684 0.23196
4108+v -0.496529 0.56807 0.252307
4109+v -0.877083 -0.0157612 0.0886326
4110+v -0.870815 -0.0158254 0.0758515
4111+v -0.876518 -0.0332308 0.0760185
4112+v -0.635579 0.513979 -0.438384
4113+v -0.642528 0.512065 -0.450806
4114+v -0.626228 0.527274 -0.450433
4115+v -0.545726 -0.840224 0.574403
4116+v -0.53405 -0.824334 0.562277
4117+v -0.545276 -0.824154 0.555418
4118+v -0.679214 0.584063 0.056044
4119+v -0.667268 0.580376 0.0604243
4120+v -0.661681 0.579618 0.0437511
4121+v -0.929055 -0.204227 0.179449
4122+v -0.930712 -0.204099 0.192281
4123+v -0.931149 -0.186758 0.17932
4124+v -0.919537 -0.13458 0.294491
4125+v -0.444081 0.314774 0.390754
4126+v -0.449618 0.30514 0.408802
4127+v -0.441743 0.304973 0.397549
4128+v 0.0323766 0.234851 0.281042
4129+v 0.0235647 0.228813 0.296508
4130+v 0.0389148 0.232474 0.302109
4131+v -0.950623 0.355828 0.266296
4132+v -0.950379 0.355802 0.253515
4133+v -0.95043 0.338075 0.253566
4134+v -0.878278 -0.379733 0.282776
4135+v -0.88339 -0.362302 0.282841
4136+v -0.883044 -0.379553 0.26997
4137+v -0.9042 -0.100566 0.307054
4138+v -0.908644 -0.100463 0.294183
4139+v 0.147188 0.262596 0.266424
4140+v 0.132403 0.260695 0.261094
4141+v 0.139596 0.259873 0.282314
4142+v -0.439084 -0.751668 0.284716
4143+v -0.439406 -0.733685 0.284536
4144+v -0.436002 -0.734057 0.271781
4145+v -0.479663 0.541249 0.333528
4146+v -0.487498 0.552785 0.330432
4147+v -0.484801 0.543523 0.350291
4148+v -0.493073 0.553928 0.347054
4149+v -0.498571 0.55502 0.363715
4150+v -0.490568 0.543574 0.366875
4151+v -0.533857 0.563819 0.388185
4152+v -0.541449 0.560903 0.404216
4153+v -0.529258 0.557255 0.40902
4154+v -0.883159 0.425141 0.112114
4155+v -0.891483 0.425385 0.124561
4156+v -0.883493 0.442932 0.111883
4157+v -0.526985 0.565386 0.371961
4158+v -0.522219 0.559477 0.392501
4159+v -0.867835 -0.415854 0.154812
4160+v -0.881798 -0.397639 0.154747
4161+v -0.897186 0.44324 0.124908
4162+v -0.903956 0.461108 0.125704
4163+v -0.887783 0.460748 0.112139
4164+v 0.413972 -0.964348 0.0566735
4165+v -0.899537 0.00380221 0.140065
4166+v 0.0233078 0.970334 -0.277805
4167+v 0.0153437 0.984297 -0.280451
4168+v 0.0174503 0.970437 -0.261787
4169+v -0.81522 -0.491089 0.2446
4170+v -0.819113 -0.489226 0.232333
4171+v -0.810981 -0.502033 0.230188
4172+v -0.463311 -0.696048 0.181864
4173+v -0.474114 -0.695136 0.169006
4174+v -0.471198 -0.700711 0.170277
4175+v -0.540061 -0.813159 0.413773
4176+v -0.506111 -0.798528 0.413657
4177+v -0.5308 -0.814135 0.400953
4178+v -0.896313 -0.0836614 0.306861
4179+v -0.900796 -0.08361 0.294003
4180+v -0.606549 0.769947 -0.567364
4181+v -0.613446 0.783949 -0.569638
4182+v -0.611764 0.772131 -0.550408
4183+v -0.393805 0.66942 0.102917
4184+v -0.39374 0.688431 0.0894675
4185+v -0.408641 0.675727 0.0968022
4186+v -0.608629 0.842061 -0.660505
4187+v -0.602271 0.827944 -0.658296
4188+v -0.595437 0.829575 -0.674417
4189+v -0.71933 0.590331 0.172679
4190+v -0.724867 0.59141 0.18943
4191+v -0.7052 0.590755 0.177702
4192+v -0.716427 0.773878 -0.348609
4193+v -0.726755 0.765618 -0.333926
4194+v -0.712676 0.766582 -0.328583
4195+v -0.73802 0.840031 -0.52256
4196+v -0.748168 0.831849 -0.508044
4197+v -0.735618 0.829999 -0.50315
4198+v -0.727012 0.836871 -0.51764
4199+v -0.928156 0.0228775 0.165653
4200+v -0.948991 0.04027 0.165435
4201+v -0.943648 0.0396277 0.152435
4202+v -0.755002 0.800506 -0.45534
4203+v -0.766228 0.788766 -0.441583
4204+v -0.750596 0.794289 -0.435199
4205+v -0.630428 0.629265 -0.13187
4206+v -0.6373 0.627634 -0.115826
4207+v -0.621989 0.618951 -0.128736
4208+v -0.64407 0.626157 -0.0996795
4209+v -0.636221 0.614583 -0.0967379
4210+v -0.628681 0.617538 -0.112602
4211+v -0.734976 0.747519 -0.299604
4212+v -0.746254 0.735535 -0.285872
4213+v -0.730352 0.741071 -0.279488
4214+v -0.718521 0.751912 -0.293785
4215+v -0.691803 0.767738 -0.339681
4216+v -0.70371 0.771283 -0.344061
4217+v -0.699895 0.764437 -0.323894
4218+v -0.466381 0.656228 0.0952222
4219+v -0.481769 0.652965 0.085524
4220+v -0.48263 0.63782 0.108902
4221+v 0.0860314 0.256521 0.170085
4222+v 0.0798913 0.256277 0.18636
4223+v 0.0945992 0.258332 0.191716
4224+v -0.722503 0.759504 -0.313644
4225+v -0.708746 0.758142 -0.309006
4226+v -0.149847 0.0833274 0.43579
4227+v -0.162243 0.094824 0.421788
4228+v -0.162628 0.0830448 0.435494
4229+v 0.100714 0.258781 0.175467
4230+v -0.044464 0.186963 0.329392
4231+v 0.00704565 0.192268 0.366605
4232+v -0.00908805 0.187477 0.360799
4233+v -0.00523446 0.179526 0.380889
4234+v -0.021792 0.17548 0.375442
4235+v -0.0835522 0.161825 0.353593
4236+v -0.0679709 0.164959 0.359
4237+v -0.742246 0.727789 -0.265846
4238+v -0.121716 0.188479 0.0380735
4239+v -0.136411 0.186218 0.0327041
4240+v -0.141998 0.188492 0.0492103
4241+v -0.654898 0.525835 -0.541172
4242+v -0.665303 0.527055 -0.548597
4243+v -0.642464 0.536599 -0.556934
4244+v -0.727423 0.581134 0.0573928
4245+v -0.735194 0.578604 0.0735393
4246+v -0.719073 0.583305 0.0792426
4247+v -0.936891 -0.238499 0.205281
4248+v -0.740808 0.580004 0.0902896
4249+v -0.747115 0.580158 0.106783
4250+v -0.732355 0.582611 0.111998
4251+v -0.953205 0.373503 0.253412
4252+v -0.95946 0.391114 0.253296
4253+v -0.959203 0.391075 0.240528
4254+v -0.951201 0.373027 0.239899
4255+v -0.9163 0.537011 0.198588
4256+v -0.924071 0.530755 0.188774
4257+v -0.929698 0.530549 0.201607
4258+v -0.164709 0.899428 -0.0916512
4259+v -0.183001 0.88955 -0.0986005
4260+v -0.176244 0.88946 -0.0773158
4261+v -0.886114 -0.0664744 0.306926
4262+v -0.890866 -0.0662817 0.294183
4263+v -0.639137 0.907559 -0.72775
4264+v -0.644776 0.908728 -0.711
4265+v -0.627936 0.902999 -0.723537
4266+v -0.886871 -0.344858 0.282841
4267+v -0.887591 -0.361955 0.26988
4268+v 0.968568 -0.525437 0.27146
4269+v 0.964264 -0.53281 0.287696
4270+v 0.975735 -0.54992 0.281787
4271+v -0.141677 -0.0918567 -0.280246
4272+v -0.14169 -0.0736935 -0.275249
4273+v -0.128909 -0.0734879 -0.277035
4274+v -0.128755 -0.11011 -0.283534
4275+v -0.141549 -0.110315 -0.281466
4276+v -0.128845 -0.0916897 -0.282006
4277+v -0.898137 -0.0314324 0.204137
4278+v -0.89725 -0.0315609 0.191279
4279+v -0.93323 0.426233 0.189044
4280+v -0.937084 0.443651 0.188518
4281+v -0.93377 0.443651 0.175891
4282+v -0.986487 0.179346 0.190187
4283+v -0.984932 0.196918 0.19011
4284+v -0.983661 0.17923 0.177316
4285+v -0.205467 -0.184381 -0.282725
4286+v -0.218312 -0.184523 -0.281235
4287+v -0.205557 -0.166167 -0.278178
4288+v -0.218338 -0.202635 -0.284947
4289+v -0.907167 -0.0664487 0.153077
4290+v -0.911894 -0.0836614 0.140348
4291+v -0.894758 0.513067 0.125267
4292+v -0.885831 0.513195 0.112139
4293+v -0.507601 0.576613 0.2111
4294+v -0.518802 0.581404 0.207002
4295+v -0.513497 0.577011 0.227619
4296+v -0.250901 0.846723 -0.0680672
4297+v -0.270824 0.834932 -0.0752734
4298+v -0.260149 0.840095 -0.0529098
4299+v 0.0130829 0.220836 0.311691
4300+v 0.0292937 0.225461 0.317356
4301+v 0.0479451 0.238088 0.286591
4302+v 0.122974 0.251858 0.313631
4303+v 0.109089 0.250239 0.308467
4304+v 0.114188 0.245474 0.329019
4305+v 0.124773 0.257998 0.27697
4306+v 0.117207 0.255133 0.29286
4307+v 0.131285 0.256007 0.297921
4308+v -0.842838 -0.453632 0.103546
4309+v -0.857546 -0.434479 0.10343
4310+v -0.855927 -0.434556 0.129211
4311+v -0.858779 -0.4343 0.116391
4312+v -0.726562 0.733197 -0.259616
4313+v -0.73933 0.719054 -0.246142
4314+v -0.722503 0.724937 -0.240027
4315+v -0.87779 -0.0491718 0.307157
4316+v -0.883378 -0.0490947 0.294119
4317+v -0.743197 0.894174 -0.635457
4318+v -0.752612 0.886762 -0.62071
4319+v -0.737481 0.891284 -0.614069
4320+v -0.693087 0.7468 -0.284819
4321+v -0.704956 0.750461 -0.289135
4322+v -0.701848 0.741443 -0.269494
4323+v -0.727526 0.898747 -0.628739
4324+v -0.60466 0.647326 -0.215159
4325+v -0.61116 0.646838 -0.199038
4326+v -0.59712 0.635547 -0.21241
4327+v -0.624982 0.643562 -0.167079
4328+v -0.617043 0.631334 -0.16406
4329+v -0.610492 0.632657 -0.180194
4330+v -0.96578 0.284562 0.189712
4331+v -0.954695 0.302301 0.189558
4332+v -0.962261 0.284793 0.176764
4333+v -0.743081 0.564744 0.408814
4334+v -0.757378 0.564923 0.404229
4335+v -0.753075 0.558616 0.425
4336+v -0.752625 0.581147 0.123559
4337+v -0.737879 0.583536 0.128787
4338+v -0.959062 0.302725 0.253733
4339+v -0.950995 0.32049 0.253618
4340+v -0.950918 0.3204 0.240772
4341+v -0.754475 0.586992 0.179063
4342+v -0.619728 0.782818 -0.553273
4343+v -0.625816 0.783422 -0.536728
4344+v -0.617621 0.772169 -0.533851
4345+v -0.165659 0.897026 -0.134734
4346+v -0.154831 0.907276 -0.106462
4347+v -0.144837 0.915138 -0.121157
4348+v -0.624789 0.539618 -0.472617
4349+v -0.630788 0.536933 -0.486349
4350+v -0.616491 0.553748 -0.482379
4351+v -0.345866 0.752246 0.0449457
4352+v -0.360497 0.735535 0.0584846
4353+v -0.346341 0.735072 0.0626851
4354+v -0.422501 -0.959261 -0.142364
4355+v -0.404698 -0.979544 -0.164818
4356+v -0.427395 -0.981047 -0.144304
4357+v -0.704738 0.889216 -0.621109
4358+v -0.694834 0.881855 -0.617461
4359+v -0.685457 0.888265 -0.632772
4360+v -0.0233078 0.955973 -0.192101
4361+v -0.0174375 0.974136 -0.203791
4362+v -0.0248749 0.975369 -0.193861
4363+v -0.0791848 -0.91813 -0.132332
4364+v -0.092621 -0.918696 -0.134503
4365+v -0.0832568 -0.917886 -0.157304
4366+v -0.613536 0.59317 -0.106937
4367+v -0.606998 0.578873 -0.104471
4368+v -0.600537 0.579272 -0.120784
4369+v -0.00460504 0.221954 0.0624025
4370+v 0.00934495 0.22496 0.057046
4371+v -0.891303 -0.345372 0.115967
4372+v -0.892331 -0.345038 0.128838
4373+v -0.900783 -0.327491 0.115813
4374+v -0.0285358 0.222853 0.0909704
4375+v -0.0237445 0.220284 0.0741174
4376+v -0.0356393 0.222082 0.107053
4377+v -0.624352 0.566195 -0.0362623
4378+v -0.62967 0.568058 -0.0193836
4379+v -0.621051 0.557974 -0.0160566
4380+v 0.0730576 0.254684 0.202378
4381+v 0.0877655 0.256944 0.207747
4382+v -0.0324536 0.164908 0.390163
4383+v -0.0177586 0.167246 0.39552
4384+v -0.443811 -0.751116 0.29751
4385+v -0.0489984 -0.428134 0.720775
4386+v -0.0576561 -0.409136 0.728521
4387+v -0.0602766 -0.428237 0.713826
4388+v -0.0409829 0.222712 0.123713
4389+v -0.947026 0.514506 0.214067
4390+v -0.93937 0.524037 0.209725
4391+v -0.94524 0.514249 0.201337
4392+v 0.143899 0.265589 0.154336
4393+v 0.137027 0.264446 0.170277
4394+v 0.152557 0.267234 0.175955
4395+v 0.00283239 0.212127 0.326669
4396+v 0.0173219 0.214928 0.332218
4397+v -0.51238 0.58229 0.190637
4398+v -0.524493 0.5845 0.18618
4399+v -0.684365 0.770718 -0.355288
4400+v -0.673306 0.765567 -0.351203
4401+v -0.680602 0.762934 -0.335506
4402+v -0.890969 -0.379733 0.15467
4403+v -0.892472 -0.379527 0.167554
4404+v -0.894951 -0.36198 0.154645
4405+v -0.688617 0.758977 -0.319976
4406+v -0.299867 0.812311 -0.0305461
4407+v -0.294215 0.806659 -0.0104047
4408+v -0.282462 0.818875 -0.0242905
4409+v -0.926062 -0.221928 0.153938
4410+v -0.923558 -0.222121 0.141041
4411+v -0.926641 -0.239424 0.141067
4412+v -0.562887 0.576291 0.359065
4413+v -0.574885 0.579785 0.354749
4414+v -0.569862 0.573928 0.375237
4415+v -0.861733 -0.41859 0.261004
4416+v -0.865137 -0.408493 0.274221
4417+v -0.870815 -0.410767 0.252346
4418+v -0.740885 0.783024 -0.394659
4419+v -0.756183 0.779388 -0.400542
4420+v -0.751906 0.77348 -0.380247
4421+v -0.474203 0.5436 0.279642
4422+v -0.467781 0.529406 0.282327
4423+v -0.1988 0.211845 0.197702
4424+v -0.187843 0.20609 0.201735
4425+v -0.182512 0.205191 0.184767
4426+v -0.634179 0.902665 -0.707082
4427+v -0.597313 0.579606 -0.129185
4428+v -0.601089 0.593633 -0.13959
4429+v -0.607101 0.593543 -0.123186
4430+v -0.582605 0.57597 0.370677
4431+v -0.760923 0.817873 -0.494711
4432+v -0.744892 0.822317 -0.488738
4433+v -0.18828 0.208556 0.163739
4434+v -0.193791 0.209944 0.180618
4435+v -0.177027 0.204035 0.167939
4436+v -0.0479194 0.221427 0.139872
4437+v -0.0540594 0.221132 0.15625
4438+v -0.060238 0.220836 0.172679
4439+v -0.589323 0.540055 -0.11616
4440+v -0.593819 0.559682 -0.116353
4441+v -0.594744 0.549034 -0.0998979
4442+v -0.0253502 0.182891 0.35516
4443+v -0.0370009 0.171857 0.369996
4444+v -0.636696 0.767237 -0.448044
4445+v -0.64633 0.775034 -0.451641
4446+v -0.642117 0.76838 -0.431615
4447+v -0.651931 0.775933 -0.43525
4448+v 0.10011 0.244767 0.323958
4449+v 0.104439 0.238845 0.344421
4450+v 0.0896794 0.236713 0.339077
4451+v 0.226842 0.264639 0.0560569
4452+v 0.240766 0.266155 0.0611436
4453+v 0.244851 0.262147 0.0442521
4454+v -0.834642 -0.471204 0.129365
4455+v -0.67608 0.625926 -0.0557357
4456+v -0.685213 0.6208 -0.0400388
4457+v -0.666754 0.617319 -0.0522033
4458+v -0.663325 0.758386 -0.347491
4459+v -0.656632 0.759787 -0.363406
4460+v -0.714822 0.74409 -0.273798
4461+v -0.711482 0.734828 -0.254414
4462+v 0.249244 0.275493 0.13801
4463+v 0.263284 0.276071 0.143161
4464+v 0.268692 0.274915 0.126847
4465+v -0.631764 0.641995 -0.150984
4466+v -0.623646 0.63073 -0.147978
4467+v -0.491211 0.560556 0.310265
4468+v -0.501346 0.56721 0.306335
4469+v -0.49667 0.561751 0.326926
4470+v -0.762953 0.87867 -0.605951
4471+v -0.749054 0.882035 -0.599965
4472+v -0.355307 0.707262 0.0818117
4473+v -0.374845 0.718155 0.0712786
4474+v -0.367934 0.707082 0.0816062
4475+v -0.927964 -0.117367 0.204626
4476+v -0.924149 -0.100078 0.20451
4477+v -0.926563 -0.117483 0.191767
4478+v -0.517505 0.587223 0.170097
4479+v -0.874604 -0.0319591 0.307003
4480+v -0.879871 -0.0317407 0.293862
4481+v -0.935041 -0.151716 0.204793
4482+v -0.932074 -0.134529 0.204741
4483+v -0.934913 -0.151819 0.192012
4484+v -0.978664 0.0757487 0.254953
4485+v -0.985677 0.0933211 0.254864
4486+v -0.984663 0.0930899 0.242005
4487+v -0.00838156 0.138254 0.446554
4488+v 0.00466927 0.155184 0.429906
4489+v -0.0083944 0.155223 0.420414
4490+v -0.978561 0.075723 0.242134
4491+v -0.890006 -0.344755 0.269995
4492+v -0.686305 0.464936 -0.287259
4493+v -0.980385 0.092743 0.203482
4494+v -0.985922 0.110251 0.203457
4495+v -0.982993 0.110097 0.190611
4496+v -0.919087 -0.291241 0.205512
4497+v -0.923339 -0.291036 0.192692
4498+v -0.912459 -0.30866 0.192718
4499+v -0.97219 0.267272 0.189751
4500+v -0.970366 0.267028 0.176957
4501+v -0.973783 0.249636 0.176944
4502+v -0.976442 0.249674 0.189841
4503+v 0.115293 0.255056 0.0882986
4504+v 0.109859 0.256238 0.104792
4505+v 0.13072 0.258486 0.0940276
4506+v -0.896929 -0.344562 0.167361
4507+v -0.902299 -0.327131 0.167169
4508+v -0.900513 -0.327208 0.154362
4509+v -0.876146 -0.0144895 0.306861
4510+v -0.880641 -0.0143225 0.29399
4511+v 0.103668 0.25611 0.121028
4512+v 0.119943 0.26013 0.127027
4513+v 0.124503 0.258499 0.110225
4514+v -0.154189 -0.183521 -0.291229
4515+v -0.16706 -0.183752 -0.288056
4516+v -0.154137 -0.165499 -0.28609
4517+v -0.651661 0.623177 -0.0839055
4518+v -0.643286 0.612849 -0.0808098
4519+v -0.65572 0.45665 -0.264485
4520+v -0.672535 0.449329 -0.242339
4521+v -0.664404 0.456304 -0.274427
4522+v -0.248974 0.139744 0.390086
4523+v -0.259032 0.146758 0.385937
4524+v -0.252506 0.135621 0.395789
4525+v 0.0654661 0.252076 0.218177
4526+v 0.0809703 0.255249 0.223752
4527+v 0.140881 0.255069 0.0607326
4528+v 0.157104 0.259051 0.0668726
4529+v 0.161061 0.255724 0.0497755
4530+v -0.896416 -0.361762 0.167503
4531+v -0.895696 -0.344806 0.154503
4532+v 0.161164 0.26907 0.197548
4533+v 0.154381 0.267375 0.213502
4534+v 0.168357 0.268428 0.218601
4535+v 0.171722 0.261556 0.0723062
4536+v 0.167047 0.263547 0.0890308
4537+v 0.187175 0.264639 0.0780866
4538+v -0.41324 0.463869 0.143366
4539+v -0.408872 0.482855 0.15011
4540+v -0.420664 0.464255 0.155711
4541+v -0.0678424 0.21792 0.188762
4542+v -0.0761277 0.213553 0.204613
4543+v -0.0851194 0.207875 0.220245
4544+v -0.148511 0.124497 0.388031
4545+v -0.161086 0.112409 0.403124
4546+v -0.541911 0.583922 0.273117
4547+v -0.529901 0.580633 0.277497
4548+v -0.524377 0.579631 0.260875
4549+v -0.687782 0.532283 -0.559259
4550+v -0.672368 0.539875 -0.580286
4551+v -0.676555 0.529239 -0.554609
4552+v -0.0112717 0.197561 0.340914
4553+v 0.00478487 0.202596 0.346733
4554+v -0.970456 0.0588315 0.254979
4555+v -0.704211 0.453362 -0.235814
4556+v -0.720936 0.475006 -0.248235
4557+v -0.705547 0.461287 -0.254632
4558+v -0.603812 0.634108 -0.196315
4559+v -0.688887 0.912838 -0.671013
4560+v -0.69766 0.907353 -0.655406
4561+v -0.686446 0.90147 -0.651578
4562+v -0.67748 0.907418 -0.666787
4563+v 0.125466 0.251588 0.0550164
4564+v 0.145698 0.252256 0.0440465
4565+v 0.116244 0.261646 0.181119
4566+v 0.109384 0.260348 0.197085
4567+v -0.930507 -0.23909 0.153977
4568+v 0.165916 0.25277 0.0331794
4569+v -0.433137 -0.878105 -0.118511
4570+v -0.433137 -0.860185 -0.110508
4571+v -0.420202 -0.859813 -0.115042
4572+v -0.937071 0.319385 0.125319
4573+v 0.120804 0.25372 0.0718566
4574+v 0.136128 0.257445 0.0775214
4575+v 0.0503343 0.246167 0.250072
4576+v 0.0413554 0.240464 0.265577
4577+v 0.0568469 0.243855 0.2711
4578+v -0.615797 0.556073 -0.0330124
4579+v 0.0658 0.249481 0.255609
4580+v -0.694115 -0.970141 0.00688508
4581+v -0.691636 -0.948201 0.00484268
4582+v -0.676979 -0.962511 -0.0340786
4583+v -0.261408 0.839145 -0.090341
4584+v -0.290567 0.821714 -0.0701353
4585+v -0.0940468 0.201979 0.235763
4586+v -0.10449 0.194298 0.251228
4587+v -0.113225 0.186861 0.267388
4588+v -0.125248 0.177137 0.281505
4589+v 0.260984 -0.175634 0.696549
4590+v 0.245146 -0.163238 0.686735
4591+v 0.248088 -0.175595 0.700891
4592+v -0.458789 0.523099 0.24839
4593+v -0.0481121 0.161954 0.384909
4594+v 0.424068 0.2381 0.110482
4595+v 0.419881 0.241492 0.127297
4596+v 0.435655 0.233797 0.114953
4597+v -0.192763 -0.184035 -0.283701
4598+v -0.192776 -0.166013 -0.27846
4599+v -0.179931 -0.165871 -0.280079
4600+v 0.078671 0.226822 0.353849
4601+v 0.0942652 0.230008 0.359283
4602+v 0.432045 0.230188 0.0769819
4603+v 0.428102 0.234234 0.0937193
4604+v 0.443362 0.225538 0.0811309
4605+v -0.966718 0.0937578 0.421981
4606+v -0.970263 0.110971 0.421724
4607+v -0.966936 0.110958 0.409046
4608+v 0.415655 0.244973 0.144124
4609+v 0.426907 0.240079 0.14826
4610+v 0.431069 0.23661 0.131459
4611+v 0.243874 0.276315 0.154362
4612+v -0.874065 -0.397562 0.270162
4613+v 0.254677 0.274337 0.121619
4614+v 0.257889 0.277137 0.159526
4615+v 0.237054 0.275352 0.170175
4616+v 0.251787 0.276983 0.175659
4617+v 0.0430767 0.173861 0.429996
4618+v 0.0448365 0.182429 0.417703
4619+v 0.0303213 0.173463 0.423407
4620+v -0.507306 0.567981 0.323008
4621+v -0.504107 0.584705 0.174079
4622+v 0.0840275 0.207503 0.39349
4623+v 0.0698977 0.206848 0.388467
4624+v 0.0714777 0.195428 0.408146
4625+v -0.767282 0.558013 0.420144
4626+v -0.777892 0.549779 0.435892
4627+v -0.765342 0.550305 0.440144
4628+v -0.683762 0.584307 0.110598
4629+v -0.689298 0.585579 0.127335
4630+v -0.67039 0.58378 0.115441
4631+v -0.609773 0.760583 -0.531089
4632+v -0.692496 0.593594 0.275583
4633+v -0.70592 0.593992 0.270856
4634+v -0.698739 0.593607 0.292076
4635+v -0.60466 0.759208 -0.547942
4636+v -0.850905 0.547325 0.373374
4637+v -0.868824 0.541172 0.366361
4638+v -0.863069 0.536343 0.38893
4639+v -0.0421133 0.688906 -0.192859
4640+v -0.0414197 0.69678 -0.199141
4641+v -0.0373092 0.679144 -0.185486
4642+v -0.567486 0.546118 0.45209
4643+v -0.578096 0.537756 0.467684
4644+v -0.55694 0.539772 0.455777
4645+v 0.0663524 0.693196 -0.206334
4646+v 0.0777076 0.70495 -0.227477
4647+v 0.0785811 0.705862 -0.22189
4648+v -0.127111 0.200399 0.110983
4649+v -0.132531 0.201222 0.127734
4650+v -0.112454 0.202686 0.11634
4651+v -0.573883 0.526477 0.476406
4652+v -0.586792 0.526336 0.480979
4653+v 0.134625 0.262545 0.132448
4654+v 0.140778 0.26234 0.116263
4655+v 0.409527 0.133771 0.459541
4656+v 0.415462 0.120887 0.467749
4657+v 0.421294 0.134349 0.454017
4658+v 0.0983372 0.256778 0.137599
4659+v 0.091375 0.255853 0.15354
4660+v 0.106828 0.259115 0.159205
4661+v 0.151632 0.260451 0.0832761
4662+v 0.112904 0.259501 0.142968
4663+v 0.0586195 0.250342 0.234337
4664+v 0.0733531 0.252474 0.23968
4665+v -0.973025 0.180566 0.459939
4666+v -0.969171 0.198177 0.459797
4667+v -0.971779 0.180515 0.447093
4668+v -0.970751 0.0585232 0.242198
4669+v 0.222102 0.267105 0.0727172
4670+v 0.236784 0.269289 0.0781893
4671+v 0.182024 0.271293 0.186758
4672+v 0.167291 0.269507 0.181363
4673+v 0.175203 0.26988 0.202673
4674+v -0.388859 0.306823 0.15336
4675+v -0.397928 0.326399 0.153347
4676+v -0.391403 0.314491 0.164112
4677+v -0.575835 0.740634 -0.681482
4678+v -0.576079 0.76084 -0.68152
4679+v -0.578186 0.760814 -0.668713
4680+v -0.135691 0.168672 0.296675
4681+v -0.112955 0.157214 0.342944
4682+v -0.125531 0.144946 0.357652
4683+v -0.146725 0.158896 0.311768
4684+v -0.29076 0.782998 0.0274632
4685+v -0.30426 0.76576 0.0424794
4686+v -0.291081 0.765015 0.0441236
4687+v -0.810391 0.575893 0.310163
4688+v -0.884045 0.00315994 0.306848
4689+v -0.887732 0.00287735 0.294183
4690+v -0.927398 -0.135055 0.153514
4691+v -0.925009 -0.135171 0.140617
4692+v -0.927886 -0.152384 0.140707
4693+v -0.154304 -0.128928 -0.279848
4694+v -0.167137 -0.129198 -0.276508
4695+v -0.154368 -0.110585 -0.278165
4696+v -0.929492 -0.15223 0.153514
4697+v -0.283926 -0.801675 -0.168389
4698+v -0.28778 -0.796306 -0.147169
4699+v -0.272841 -0.794276 -0.149519
4700+v 0.102525 0.25891 0.213091
4701+v 0.122345 0.262121 0.164869
4702+v -0.706421 0.901868 -0.63994
4703+v -0.6959 0.894791 -0.63642
4704+v 0.128421 0.262622 0.148633
4705+v -0.976789 0.0755817 0.203649
4706+v -0.978651 0.0927045 0.190688
4707+v -0.506753 0.575264 0.248621
4708+v -0.741527 0.588019 0.314658
4709+v -0.749889 0.583755 0.330625
4710+v -0.735079 0.585784 0.33575
4711+v -0.101767 0.166655 0.327761
4712+v -0.157181 0.150765 0.327144
4713+v -0.165518 0.146526 0.343136
4714+v -0.0913493 0.17494 0.312488
4715+v -0.776338 0.583947 0.190162
4716+v -0.760743 0.587133 0.195583
4717+v -0.409656 0.292295 0.346951
4718+v -0.403413 0.277959 0.349572
4719+v -0.396399 0.278525 0.333168
4720+v -0.598584 0.647506 -0.231472
4721+v -0.594179 0.640826 -0.231511
4722+v -0.592521 0.64766 -0.247747
4723+v -0.602078 0.730615 -0.472514
4724+v -0.609593 0.742445 -0.475237
4725+v -0.606317 0.73434 -0.45552
4726+v -0.509168 0.525398 0.414171
4727+v -0.509348 0.506953 0.41331
4728+v -0.502412 0.52518 0.401454
4729+v 0.388911 0.244176 0.299141
4730+v 0.377209 0.248287 0.294877
4731+v 0.381615 0.241646 0.314838
4732+v 0.438815 0.219834 0.0430831
4733+v 0.435552 0.225332 0.059949
4734+v 0.450568 0.216148 0.0475276
4735+v -0.61414 0.745901 -0.458307
4736+v -0.610993 0.736883 -0.43877
4737+v -0.160123 0.191665 0.0612849
4738+v -0.146109 0.192191 0.0665001
4739+v -0.932485 -0.186578 0.204998
4740+v -0.93508 -0.169057 0.204908
4741+v -0.935118 -0.169121 0.192101
4742+v -0.619227 0.747327 -0.441814
4743+v -0.624159 0.749639 -0.425102
4744+v -0.615887 0.738476 -0.422238
4745+v -0.933461 -0.203868 0.205139
4746+v -0.93237 -0.186642 0.192166
4747+v 0.230952 0.275108 0.186321
4748+v 0.245698 0.27679 0.191742
4749+v 0.239584 0.276662 0.20785
4750+v 0.224851 0.274722 0.202468
4751+v 0.0574249 0.194516 0.402983
4752+v 0.0590177 0.182968 0.422649
4753+v 0.218762 0.274543 0.218576
4754+v 0.232815 0.275275 0.223739
4755+v -0.99255 0.21503 0.254208
4756+v -0.990944 0.214928 0.241376
4757+v -0.993937 0.197355 0.241427
4758+v 0.108164 0.231254 0.364562
4759+v 0.0964489 0.219976 0.379078
4760+v -0.245968 -0.972453 0.463818
4761+v -0.236116 -0.969704 0.440889
4762+v -0.934617 0.0224664 0.191087
4763+v -0.935953 0.022749 0.203932
4764+v -0.954656 0.0406168 0.191087
4765+v -0.642965 0.0822099 -0.098729
4766+v -0.655669 0.0818245 -0.0933853
4767+v -0.642836 0.100592 -0.0944772
4768+v -0.99833 0.179886 0.254363
4769+v -0.99571 0.197509 0.254273
4770+v -0.995517 0.179783 0.241492
4771+v -0.919216 -0.0830834 0.204407
4772+v -0.919177 -0.0831091 0.191613
4773+v -0.934695 0.355275 0.189263
4774+v -0.933975 0.372848 0.189468
4775+v -0.929595 0.35507 0.176661
4776+v -0.93052 0.390677 0.189828
4777+v -0.925407 0.390202 0.176469
4778+v -0.928696 0.372873 0.176456
4779+v -0.838034 -0.453478 0.167837
4780+v -0.838213 -0.453632 0.155017
4781+v 0.191055 0.268903 0.116417
4782+v 0.205801 0.270779 0.121889
4783+v 0.211209 0.26979 0.105447
4784+v -0.832973 -0.471024 0.167939
4785+v 0.146186 0.261582 0.0997566
4786+v 0.197259 0.268582 0.100296
4787+v -0.931702 -0.256341 0.154105
4788+v -0.929004 -0.256585 0.141221
4789+v -0.979293 0.232102 0.189931
4790+v -0.977649 0.231999 0.177124
4791+v 0.181305 0.256097 0.0389855
4792+v -0.975298 0.0754918 0.190855
4793+v -0.890353 0.510947 0.405321
4794+v -0.870083 0.52667 0.402662
4795+v -0.876544 0.528378 0.391011
4796+v 0.161562 0.266797 0.234581
4797+v 0.753563 -0.0941047 0.0605913
4798+v 0.744777 -0.0760827 0.0604628
4799+v 0.746768 -0.0757487 0.073231
4800+v -0.113636 -0.92594 0.335853
4801+v -0.12169 -0.924951 0.356406
4802+v -0.126982 -0.926531 0.333644
4803+v -0.175242 0.139834 0.358846
4804+v -0.185698 0.131626 0.374363
4805+v -0.136629 0.135158 0.372822
4806+v 0.222603 -0.174863 0.707352
4807+v 0.235563 -0.174747 0.7031
4808+v 0.22241 -0.158704 0.691424
4809+v -0.883686 0.528507 0.379951
4810+v -0.885047 0.534865 0.362045
4811+v -0.892138 0.527377 0.370471
4812+v -0.353329 0.470151 0.0226463
4813+v -0.361011 0.468648 0.0114323
4814+v -0.338878 0.479541 0.00423895
4815+v -0.934784 0.374479 0.45886
4816+v -0.931663 0.392051 0.458718
4817+v -0.9321 0.39209 0.445925
4818+v 0.137888 0.253168 0.318872
4819+v 0.259571 0.263765 0.0498654
4820+v 0.145351 0.256649 0.303085
4821+v 0.153649 0.260605 0.287414
4822+v 0.175602 0.267927 0.239706
4823+v 0.168074 0.265076 0.255442
4824+v 0.160508 0.262185 0.271267
4825+v -0.870969 -0.415854 0.129147
4826+v -0.871136 -0.416034 0.116301
4827+v 0.211389 0.261633 0.0502251
4828+v 0.230901 0.260849 0.0391396
4829+v 0.0975921 0.757706 -0.293965
4830+v 0.103051 0.764077 -0.272474
4831+v 0.099095 0.744693 -0.272654
4832+v 0.206623 0.26451 0.0668341
4833+v 0.202667 0.267452 0.0838926
4834+v 0.217336 0.269815 0.0893262
4835+v -0.626292 0.763961 -0.481133
4836+v -0.634962 0.774045 -0.484242
4837+v -0.631224 0.766209 -0.464473
4838+v -0.640524 0.774944 -0.467864
4839+v -0.650107 0.578411 0.0104818
4840+v -0.655656 0.579297 0.0272192
4841+v -0.645136 0.573003 0.0311627
4842+v -0.0810988 0.183662 0.297433
4843+v -0.610852 0.602265 -0.572489
4844+v -0.603453 0.618527 -0.578822
4845+v -0.601475 0.618578 -0.566041
4846+v -0.444145 -0.609021 0.44017
4847+v -0.435937 -0.627069 0.440684
4848+v -0.431891 -0.608546 0.454813
4849+v -0.263695 0.81217 0.00043674
4850+v -0.265249 0.802818 0.0123315
4851+v -0.249745 0.812671 0.00575469
4852+v 0.537274 0.101259 0.41814
4853+v 0.536567 0.112833 0.408994
4854+v 0.522219 0.118408 0.418898
4855+v -0.0679709 0.197458 0.283149
4856+v -0.996506 0.145229 0.241749
4857+v -0.99693 0.162544 0.241569
4858+v -0.994823 0.16239 0.228852
4859+v -0.6968 0.754648 -0.304588
4860+v -0.402732 0.29381 0.33051
4861+v -0.389823 0.279886 0.316598
4862+v -0.816531 0.576882 0.288942
4863+v 0.374293 0.239102 0.330587
4864+v 0.363092 0.244176 0.32654
4865+v 0.366444 0.236662 0.346656
4866+v 0.446881 0.220721 0.0640723
4867+v 0.370966 0.247567 0.310856
4868+v 0.401705 0.24591 0.267182
4869+v 0.390465 0.250715 0.263033
4870+v 0.395102 0.244754 0.283123
4871+v 0.355744 0.241504 0.342366
4872+v -0.304787 0.782202 0.0226591
4873+v -0.277735 0.797205 0.0143354
4874+v -0.67125 0.498192 0.531988
4875+v -0.663697 0.491166 0.536869
4876+v -0.650929 0.491101 0.531962
4877+v -0.956377 0.058703 0.300452
4878+v -0.96298 0.0572386 0.279295
4879+v -0.952447 0.0492489 0.285795
4880+v 0.152429 0.206809 0.417896
4881+v 0.139005 0.20758 0.413169
4882+v 0.138492 0.19223 0.432283
4883+v -0.988388 0.232628 0.254093
4884+v -0.984033 0.250201 0.254003
4885+v -0.986769 0.232513 0.24126
4886+v -0.993898 0.127836 0.241787
4887+v -0.994245 0.127824 0.254619
4888+v -0.326071 0.489945 -0.0118562
4889+v -0.317324 0.490331 -0.0019011
4890+v -0.141446 -0.128684 -0.283098
4891+v -0.456503 0.360465 0.0186514
4892+v -0.442463 0.344601 0.0253823
4893+v -0.453767 0.343599 0.0116892
4894+v -0.154214 -0.147271 -0.282815
4895+v -0.167175 -0.147451 -0.27855
4896+v 0.225994 0.273913 0.239655
4897+v -0.620884 0.762831 -0.497601
4898+v -0.61775 0.753736 -0.478102
4899+v 0.211222 0.272051 0.234285
4900+v 0.204439 0.270188 0.250188
4901+v 0.218505 0.271087 0.255313
4902+v 0.0810217 0.216559 0.373605
4903+v 0.118491 0.239655 0.349521
4904+v 0.128973 0.247529 0.334299
4905+v 0.196026 0.272359 0.191896
4906+v 0.189218 0.270946 0.207824
4907+v 0.184889 0.269237 0.132551
4908+v 0.1802 0.270689 0.149224
4909+v 0.200406 0.271819 0.138292
4910+v 0.188139 0.271562 0.170573
4911+v 0.173392 0.2697 0.165165
4912+v 0.194279 0.271832 0.154413
4913+v 0.14679 0.264998 0.229199
4914+v 0.154754 0.265281 0.250522
4915+v 0.139969 0.263406 0.245191
4916+v 0.231337 0.270702 0.0945157
4917+v 0.800924 -0.415905 0.04799
4918+v 0.803711 -0.415622 0.0609124
4919+v 0.802799 -0.433709 0.0608225
4920+v -0.451198 0.364383 0.0250869
4921+v -0.440009 0.364742 0.0377652
4922+v -0.73337 0.867764 -0.576356
4923+v -0.742953 0.861264 -0.561018
4924+v -0.73021 0.857295 -0.557229
4925+v -0.596414 0.621301 -0.193347
4926+v -0.554923 0.582791 0.305834
4927+v -0.561115 0.582419 0.322237
4928+v -0.549117 0.579027 0.326553
4929+v -0.0865195 0.953751 -0.13905
4930+v -0.0721842 0.938632 -0.128132
4931+v -0.0735329 0.957925 -0.138254
4932+v -0.164285 0.195287 0.0786004
4933+v -0.169076 0.19792 0.0956076
4934+v -0.150926 0.194902 0.0834687
4935+v -0.929531 -0.169648 0.140733
4936+v 0.0669047 0.215827 0.368532
4937+v 0.146751 0.240528 0.359437
4938+v 0.13573 0.230984 0.374312
4939+v 0.149089 0.230342 0.379155
4940+v -0.931149 -0.169532 0.153553
4941+v 0.178697 0.252551 0.333682
4942+v 0.164657 0.251871 0.32857
4943+v 0.169089 0.245756 0.348878
4944+v 0.156411 0.247593 0.344228
4945+v 0.159468 0.238717 0.364113
4946+v 0.18241 0.269404 0.223752
4947+v 0.0423445 0.192859 0.397896
4948+v 0.103578 0.764205 -0.285307
4949+v 0.0996089 0.764372 -0.298191
4950+v -0.460536 0.534737 0.228878
4951+v -0.0566927 0.206681 0.268056
4952+v -0.0470202 0.213669 0.25268
4953+v -0.740615 0.850898 -0.541532
4954+v -0.600999 0.860095 -0.695033
4955+v -0.608385 0.857424 -0.67908
4956+v -0.594474 0.846223 -0.692683
4957+v -0.421974 0.676947 0.0922035
4958+v -0.424531 0.656318 0.10984
4959+v -0.601487 0.84463 -0.676613
4960+v -0.036577 0.22189 0.237535
4961+v 0.308486 0.192487 0.436522
4962+v 0.297247 0.19724 0.432347
4963+v 0.296206 0.180297 0.450896
4964+v -0.757545 0.580852 0.346785
4965+v -0.743428 0.581532 0.351666
4966+v 0.348178 0.238306 0.357973
4967+v 0.359495 0.233502 0.362147
4968+v -0.158556 0.195428 0.231498
4969+v -0.171157 0.197895 0.226938
4970+v -0.166199 0.192397 0.247632
4971+v 0.33884 0.231626 0.373092
4972+v 0.350195 0.227285 0.377446
4973+v 0.33049 0.211626 0.406939
4974+v 0.318557 0.215261 0.402816
4975+v 0.319559 0.202121 0.421801
4976+v 0.307561 0.205717 0.417601
4977+v 0.284877 0.184703 0.446464
4978+v -0.933872 -0.256148 0.17968
4979+v -0.872819 0.545874 0.346618
4980+v -0.456002 0.483458 0.268878
4981+v -0.454409 0.50324 0.255994
4982+v -0.45735 0.503292 0.268993
4983+v -0.867411 -0.0549393 0.345179
4984+v -0.872549 -0.0721135 0.350844
4985+v -0.865664 -0.0716639 0.362096
4986+v -0.705663 -0.972338 0.0254465
4987+v -0.702631 -0.949717 0.0179577
4988+v -0.0517087 0.683717 -0.18713
4989+v -0.0549201 0.689099 -0.190868
4990+v 0.597043 0.0588572 0.412989
4991+v 0.604943 0.0475533 0.416034
4992+v 0.608604 0.0500067 0.40848
4993+v -0.471133 0.555508 0.206064
4994+v -0.476503 0.556728 0.22266
4995+v -0.46814 0.546413 0.225859
4996+v 0.965022 -0.503664 0.232449
4997+v 0.972074 -0.50938 0.22731
4998+v 0.970854 -0.503921 0.215711
4999+v -0.736286 0.582971 0.0360182
5000+v -0.743852 0.577101 0.0516895
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: