aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2023-03-07 04:05:10 +0100
committerSven Gothel <[email protected]>2023-03-07 04:05:10 +0100
commit14a47f60d2dc7c4f6b2d910fcc8489726443db22 (patch)
tree22a766ffe9424cd60855c4b5502afa10349966ae
parentfb03e913c0c55a9a96e93a00ef6590b9bea9a62a (diff)
Graph Perf Test: {Test->Perf}TextRendererNEWT00: Drop junit, ... (WIP)
Also tested w/ alternative JVM (Azul) .. works well, no big difference (but slower startup time, but might be OpenJDK 17->19 related as well). Printing usual system infos to make the test record useful. Cmdline is: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
-rw-r--r--doc/curve/tests/perf01/pc_7.log184
-rw-r--r--doc/curve/tests/perf01/pc_8.log184
-rw-r--r--doc/curve/tests/perf01/rpi4_7.log170
-rw-r--r--doc/curve/tests/perf01/rpi4_8.log170
-rwxr-xr-xmake/scripts/tests-linux-aarch64.sh9
-rwxr-xr-xmake/scripts/tests-win.bat2
-rwxr-xr-xmake/scripts/tests-x64.sh5
-rw-r--r--make/scripts/tests.sh6
-rw-r--r--src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT00.java)122
-rw-r--r--src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java8
10 files changed, 780 insertions, 80 deletions
diff --git a/doc/curve/tests/perf01/pc_7.log b/doc/curve/tests/perf01/pc_7.log
new file mode 100644
index 000000000..8dad92f4a
--- /dev/null
+++ b/doc/curve/tests/perf01/pc_7.log
@@ -0,0 +1,184 @@
+./scripts/tests-x64.sh
+FOUND_JAVA 1
+J2RE_HOME /usr/lib/jvm/java-17-openjdk-amd64
+JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64
+PATH /usr/lib/jvm/java-17-openjdk-amd64/bin:/opt-share/apache-ant/bin:/home/sven/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
+/usr/lib/jvm/java-17-openjdk-amd64/bin/java
+openjdk version "17.0.6" 2023-01-17
+OpenJDK Runtime Environment (build 17.0.6+10-Debian-1deb11u1)
+OpenJDK 64-Bit Server VM (build 17.0.6+10-Debian-1deb11u1, mixed mode, sharing)
+GLUEGEN BUILDDIR: ../../gluegen/make/../build-x86_64
+JOAL BUILDDIR: ../../joal/build-x86_64
+JOGL DIR: ../build-x86_64/..
+JOGL BUILDDIR: ../build-x86_64
+JOGL BUILDDIR BASE: build-x86_64
+JOGL PROFILE: JOGL_ALL
+Linux risa 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux
+JOGAMP_ALL_AWT_CLASSPATH: .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+JOGAMP_ALL_NOAWT_CLASSPATH: .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all-noawt.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+JOGAMP_MOBILE_CLASSPATH: .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all-mobile.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+JOGAMP_CLASSPATH: .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+JOGAMP_LD_LIBRARY_PATH: :../../gluegen/make/../build-x86_64/obj:../build-x86_64/lib
+JOGAMP_DYLD_LIBRARY_PATH: :../../gluegen/make/../build-x86_64/obj:../build-x86_64/lib
+
+MacOSX REMEMBER to add the JVM arguments -XstartOnFirstThread -Djava.awt.headless=true for running demos without AWT, e.g. NEWT
+MacOSX REMEMBER to add the JVM arguments -XstartOnFirstThread -Djava.awt.headless=true com.jogamp.newt.util.MainThread for running demos with NEWT
+/usr/lib/jvm/java-17-openjdk-amd64/bin/java
+openjdk version "17.0.6" 2023-01-17
+OpenJDK Runtime Environment (build 17.0.6+10-Debian-1deb11u1)
+OpenJDK 64-Bit Server VM (build 17.0.6+10-Debian-1deb11u1, mixed mode, sharing)
+LD_LIBRARY_PATH
+LIBXCB_ALLOW_SLOPPY_LOCK:
+LIBGL_DRIVERS_PATH:
+LIBGL_DEBUG:
+LIBGL_ALWAYS_INDIRECT:
+LIBGL_ALWAYS_SOFTWARE:
+SWT_CLASSPATH: /usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar
+MacOsX 0
+DISPLAY :0
+WAYLAND_DISPLAY
+USE_BUILDDIR 0
+USE_CLASSPATH .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all-noawt.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+
+Test Start: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+
+__GL_THREADED_OPTIMIZATIONS
+
+/usr/lib/jvm/java-17-openjdk-amd64/bin/java -DummyArg --add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED -Djava.awt.headless=true -cp .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all-noawt.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+Performance test enabled: false
+-----------------------------------------------------------------------------------------------------
+Platform: LINUX / Linux 5.10.0-21-amd64 (5.10.0), amd64 (X86_64, GENERIC_ABI), 32 cores, littleEndian true
+MachineDataInfo: runtimeValidated true, 32Bit false, primitive size / alignment:
+ int8 1 / 1, int16 2 / 2
+ int 4 / 4, long 8 / 8
+ int32 4 / 4, int64 8 / 8
+ float 4 / 4, double 8 / 8, ldouble 16 / 16
+ pointer 8 / 8, page 4096
+Platform: Java Version: 17.0.6 (17.0.6u0), VM: OpenJDK 64-Bit Server VM, Runtime: OpenJDK Runtime Environment
+Platform: Java Vendor: Debian, https://tracker.debian.org/openjdk-17, Java17, dynamicLib: true, AWT enabled: false
+-----------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------
+Package: com.jogamp.opengl
+Extension Name: com.jogamp.opengl
+Specification Title: Java Bindings for OpenGL API Specification
+Specification Vendor: JogAmp Community
+Specification Version: 2.5
+Implementation Title: Java Bindings for OpenGL Runtime Environment
+Implementation Vendor: JogAmp Community
+Implementation Vendor ID: com.jogamp
+Implementation URL: http://jogamp.org/
+Implementation Version: 2.5.0-rc-20230307
+Implementation Build: 2.5-bmanual-20230307
+Implementation Branch: master
+Implementation Commit: fb03e913c0c55a9a96e93a00ef6590b9bea9a62a
+Implementation SHA Sources: null
+Implementation SHA Classes: null
+Implementation SHA Classes-this: null
+Implementation SHA Natives: null
+Implementation SHA Natives-this: null
+-----------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------
+EGLGraphicsDevice[type .egl, v1.5.0, nativeDisplayID 0x7f7b3401dc60, connection :0, unitID 0, handle 0x7f7b3401f6a0, owner true, ResourceToolkitLock[obj 0x32a068d1, isOwner true, <33cb5951, 365c30cc>[count 1, qsz 0, owner <main>]]]:
+ Natives
+ GL4bc true [4.6 (Compat profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GL4 true [4.6 (Core profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
+ GLES3 true [3.2 (ES profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
+ GL3bc true [4.6 (Compat profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GL3 true [4.6 (Core profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
+ GL2 true [4.6 (Compat profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GLES2 true [3.2 (ES profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
+ GLES1 true [1.1 (ES profile, arb, compat[FP32], hardware)]
+ Count 8 / 8
+ Common
+ GL4ES3 true
+ GL2GL3 true
+ GL2ES2 true
+ GL2ES1 true
+ Mappings
+ GL3bc GLProfile[GL3bc/GL4bc.hw]
+ GL2 GLProfile[GL2/GL4bc.hw]
+ GLES3 GLProfile[GLES3/GLES3.hw]
+ GL4 GLProfile[GL4/GL4.hw]
+ GL3 GLProfile[GL3/GL4.hw]
+ GL2GL3 GLProfile[GL2GL3/GL4bc.hw]
+ GLES1 GLProfile[GLES1/GLES1.hw]
+ GLES2 GLProfile[GLES2/GLES3.hw]
+ GL2ES1 GLProfile[GL2ES1/GL4bc.hw]
+ GL4ES3 GLProfile[GL4ES3/GL4.hw]
+ GL2ES2 GLProfile[GL2ES2/GL4.hw]
+ GL4bc GLProfile[GL4bc/GL4bc.hw]
+ default GLProfile[GL4bc/GL4bc.hw]
+ Count 12 / 12
+
+Swap Interval 1
+GL Profile GLProfile[GLES3/GLES3.hw]
+GL Version 3.2 (ES profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware) - OpenGL ES 3.2 Mesa 20.3.5 [GL 3.2.0, vendor 20.3.5 (Mesa 20.3.5)]
+Quirks [No10BitColorCompOffscreen]
+Impl. class jogamp.opengl.es3.GLES3Impl
+GL_VENDOR AMD
+GL_RENDERER AMD Radeon RX 5700 XT (NAVI10, DRM 3.40.0, 5.10.0-21-amd64, LLVM 11.0.1)
+GL_VERSION OpenGL ES 3.2 Mesa 20.3.5
+GLSL true, has-compiler-func: true, version: OpenGL ES GLSL ES 3.20 / 3.0.0
+GL FBO: basic true, full true
+GL_EXTENSIONS 140
+GLX_EXTENSIONS 49
+-----------------------------------------------------------------------------------------------------
+Requested Caps: GLCaps[rgba 8/8/8/4, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono , hw, GLProfile[GLES2/GLES3.hw], on-scr[.]]
+Requested Region-RenderModes: vbaa
+Chosen Caps: GLCaps[egl cfg 0x2, vid 0x21: rgba 8/8/8/8, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono , hw, GLProfile[GLES2/GLES3.hw], on-scr[.], [0x4d: GL, GLES1, GLES2, GLES3, VG]]
+Chosen Font: FreeSans-Regular
+Perf: Elapsed since startup: 437 [ms], 437,881,796 [ns]
+- monotonic startup 1970-01-18T10:59:19.972981364Z, 1,508,359,972 [ms]
+- monotonic current 1970-01-18T10:59:20.410863160Z, 1,508,360,410 [ms]
+- wall current 2023-03-07T02:46:46.183817149Z
+- currentNanos: Elapsed 440,229,208 [ns]
+ - test-startup 76,732 [ns]
+ - test-current 440,305,940 [ns]
+Text_1: tbox [ dim 54.787003 x 16.547 x 0.0, box 0.015000001 / -15.818001 / 0.0 .. 54.802002 / 0.72900003 / 0.0, ctr 27.4085 / -7.5445004 / 0.0 ]
+Text_1: rbox [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]
+
+
+ 1: Perf Launch:
+- loading GlueGen - loading test 0 [ms]
+- loading GlueGen - start test 285 [ms]
+- loading test - start test 284 [ms]
+- loading test - gl 440 [ms]
+- loading test - graph 441 [ms]
+- loading test - txt 486 [ms]
+- loading test - draw 506 [ms]
+ 1 / 1: Perf Launch: Total: graph 0, txt 44, draw 20, txt+draw 65 [ms]
+ 1 / 1: Perf Launch: PerLoop: graph 889,100, txt 44,841,214, draw 20,479,677, txt+draw 65,320,891 [ns]
+GLRegion: for GLProfile[GLES3/GLES3.hw] using int32_t indiced: true
+GLRegion: Region[vbaa, q 1, dirty 0, vertices 81092, box [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]]
+Text length: 1296
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 42,409 / 46,656, bytes 508,908 / 559,872, filled 90.9%, left 9.1%]
+ vertices [elements 81,092 / 88,128, bytes 973,104 / 1,057,536, filled 92.0%, left 8.0%]
+ params [elements 81,092 / 88,128, bytes 973,104 / 1,057,536, filled 92.0%, left 8.0%]
+ color [null]
+ total [bytes 2,455,116 / 2,674,944], filled 91.8%, left 8.2%]
+ 1 / 1: Perf Frame1: Total: graph 0, txt 44, draw 20, txt+draw 65 [ms]
+ 1 / 1: Perf Frame1: PerLoop: graph 889,100, txt 44,841,214, draw 20,479,677, txt+draw 65,320,891 [ns]
+ 20 / 20: Perf Frame20: Total: graph 209, txt 104, draw 27, txt+draw 132 [ms]
+ 20 / 20: Perf Frame20: PerLoop: graph 10,489,120, txt 5,233,011, draw 1,397,265, txt+draw 6,630,277 [ns]
+GLRegion: for GLProfile[GLES3/GLES3.hw] using int32_t indiced: true
+GLRegion: Region[vbaa, q 1, dirty 0, vertices 81092, box [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]]
+Text length: 1296
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 42,409 / 46,656, bytes 508,908 / 559,872, filled 90.9%, left 9.1%]
+ vertices [elements 81,092 / 88,128, bytes 973,104 / 1,057,536, filled 92.0%, left 8.0%]
+ params [elements 81,092 / 88,128, bytes 973,104 / 1,057,536, filled 92.0%, left 8.0%]
+ color [null]
+ total [bytes 2,455,116 / 2,674,944], filled 91.8%, left 8.2%]
+ 20 / 40: Perf Frame40: Total: graph 256, txt 67, draw 6, txt+draw 74 [ms]
+ 20 / 40: Perf Frame40: PerLoop: graph 12,843,025, txt 3,353,278, draw 348,358, txt+draw 3,701,637 [ns]
+** new frame ** (sleep: 100ms)
+
+Test End: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+
+EDT START
+ 0 0 0
+EDT END
+ 0 0 0
+EDT EXIT
+ 0 0 0
diff --git a/doc/curve/tests/perf01/pc_8.log b/doc/curve/tests/perf01/pc_8.log
new file mode 100644
index 000000000..d43ee865e
--- /dev/null
+++ b/doc/curve/tests/perf01/pc_8.log
@@ -0,0 +1,184 @@
+./scripts/tests-x64.sh
+FOUND_JAVA 1
+J2RE_HOME /usr/lib/jvm/java-17-openjdk-amd64
+JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64
+PATH /usr/lib/jvm/java-17-openjdk-amd64/bin:/opt-share/apache-ant/bin:/home/sven/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
+/usr/lib/jvm/java-17-openjdk-amd64/bin/java
+openjdk version "17.0.6" 2023-01-17
+OpenJDK Runtime Environment (build 17.0.6+10-Debian-1deb11u1)
+OpenJDK 64-Bit Server VM (build 17.0.6+10-Debian-1deb11u1, mixed mode, sharing)
+GLUEGEN BUILDDIR: ../../gluegen/make/../build-x86_64
+JOAL BUILDDIR: ../../joal/build-x86_64
+JOGL DIR: ../build-x86_64/..
+JOGL BUILDDIR: ../build-x86_64
+JOGL BUILDDIR BASE: build-x86_64
+JOGL PROFILE: JOGL_ALL
+Linux risa 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux
+JOGAMP_ALL_AWT_CLASSPATH: .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+JOGAMP_ALL_NOAWT_CLASSPATH: .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all-noawt.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+JOGAMP_MOBILE_CLASSPATH: .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all-mobile.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+JOGAMP_CLASSPATH: .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+JOGAMP_LD_LIBRARY_PATH: :../../gluegen/make/../build-x86_64/obj:../build-x86_64/lib
+JOGAMP_DYLD_LIBRARY_PATH: :../../gluegen/make/../build-x86_64/obj:../build-x86_64/lib
+
+MacOSX REMEMBER to add the JVM arguments -XstartOnFirstThread -Djava.awt.headless=true for running demos without AWT, e.g. NEWT
+MacOSX REMEMBER to add the JVM arguments -XstartOnFirstThread -Djava.awt.headless=true com.jogamp.newt.util.MainThread for running demos with NEWT
+/opt-linux-x86_64/zulu19.32.13-ca-jdk19.0.2-linux_x64/bin/java
+openjdk version "19.0.2" 2023-01-17
+OpenJDK Runtime Environment Zulu19.32+13-CA (build 19.0.2+7)
+OpenJDK 64-Bit Server VM Zulu19.32+13-CA (build 19.0.2+7, mixed mode, sharing)
+LD_LIBRARY_PATH
+LIBXCB_ALLOW_SLOPPY_LOCK:
+LIBGL_DRIVERS_PATH:
+LIBGL_DEBUG:
+LIBGL_ALWAYS_INDIRECT:
+LIBGL_ALWAYS_SOFTWARE:
+SWT_CLASSPATH: /usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar
+MacOsX 0
+DISPLAY :0
+WAYLAND_DISPLAY
+USE_BUILDDIR 0
+USE_CLASSPATH .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all-noawt.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar
+
+Test Start: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+
+__GL_THREADED_OPTIMIZATIONS
+
+/opt-linux-x86_64/zulu19.32.13-ca-jdk19.0.2-linux_x64/bin/java -DummyArg --add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED -Djava.awt.headless=true -cp .:../../gluegen/make/../build-x86_64/gluegen-rt.jar:../../joal/build-x86_64/jar/joal.jar:../build-x86_64/jar/jogl-all-noawt.jar:../build-x86_64/jar/atomic/oculusvr.jar:../build-x86_64/jar/jogl-test.jar:/usr/local/projects/JogAmp/jogl/make/lib/swt/gtk-linux-x86_64/swt.jar:../../gluegen/make/../make/lib/junit.jar:/opt-share/apache-ant/lib/ant.jar:/opt-share/apache-ant/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-x86_64/gluegen-test-util.jar com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+Performance test enabled: false
+-----------------------------------------------------------------------------------------------------
+Platform: LINUX / Linux 5.10.0-21-amd64 (5.10.0), amd64 (X86_64, GENERIC_ABI), 32 cores, littleEndian true
+MachineDataInfo: runtimeValidated true, 32Bit false, primitive size / alignment:
+ int8 1 / 1, int16 2 / 2
+ int 4 / 4, long 8 / 8
+ int32 4 / 4, int64 8 / 8
+ float 4 / 4, double 8 / 8, ldouble 16 / 16
+ pointer 8 / 8, page 4096
+Platform: Java Version: 19.0.2 (19.0.2u0), VM: OpenJDK 64-Bit Server VM, Runtime: OpenJDK Runtime Environment
+Platform: Java Vendor: Azul Systems, Inc., http://www.azul.com/, Java17, dynamicLib: true, AWT enabled: false
+-----------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------
+Package: com.jogamp.opengl
+Extension Name: com.jogamp.opengl
+Specification Title: Java Bindings for OpenGL API Specification
+Specification Vendor: JogAmp Community
+Specification Version: 2.5
+Implementation Title: Java Bindings for OpenGL Runtime Environment
+Implementation Vendor: JogAmp Community
+Implementation Vendor ID: com.jogamp
+Implementation URL: http://jogamp.org/
+Implementation Version: 2.5.0-rc-20230307
+Implementation Build: 2.5-bmanual-20230307
+Implementation Branch: master
+Implementation Commit: fb03e913c0c55a9a96e93a00ef6590b9bea9a62a
+Implementation SHA Sources: null
+Implementation SHA Classes: null
+Implementation SHA Classes-this: null
+Implementation SHA Natives: null
+Implementation SHA Natives-this: null
+-----------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------
+EGLGraphicsDevice[type .egl, v1.5.0, nativeDisplayID 0x7f66bc03d480, connection :0, unitID 0, handle 0x7f66bc03e730, owner true, ResourceToolkitLock[obj 0x1176dcec, isOwner true, <120d6fe6, 4ba2ca36>[count 1, qsz 0, owner <main>]]]:
+ Natives
+ GL4bc true [4.6 (Compat profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GL4 true [4.6 (Core profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
+ GLES3 true [3.2 (ES profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
+ GL3bc true [4.6 (Compat profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GL3 true [4.6 (Core profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
+ GL2 true [4.6 (Compat profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GLES2 true [3.2 (ES profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
+ GLES1 true [1.1 (ES profile, arb, compat[FP32], hardware)]
+ Count 8 / 8
+ Common
+ GL4ES3 true
+ GL2GL3 true
+ GL2ES2 true
+ GL2ES1 true
+ Mappings
+ GL3bc GLProfile[GL3bc/GL4bc.hw]
+ GL2 GLProfile[GL2/GL4bc.hw]
+ GLES3 GLProfile[GLES3/GLES3.hw]
+ GL4 GLProfile[GL4/GL4.hw]
+ GL3 GLProfile[GL3/GL4.hw]
+ GL2GL3 GLProfile[GL2GL3/GL4bc.hw]
+ GLES1 GLProfile[GLES1/GLES1.hw]
+ GLES2 GLProfile[GLES2/GLES3.hw]
+ GL2ES1 GLProfile[GL2ES1/GL4bc.hw]
+ GL4ES3 GLProfile[GL4ES3/GL4.hw]
+ GL2ES2 GLProfile[GL2ES2/GL4.hw]
+ GL4bc GLProfile[GL4bc/GL4bc.hw]
+ default GLProfile[GL4bc/GL4bc.hw]
+ Count 12 / 12
+
+Swap Interval 1
+GL Profile GLProfile[GLES3/GLES3.hw]
+GL Version 3.2 (ES profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware) - OpenGL ES 3.2 Mesa 20.3.5 [GL 3.2.0, vendor 20.3.5 (Mesa 20.3.5)]
+Quirks [No10BitColorCompOffscreen]
+Impl. class jogamp.opengl.es3.GLES3Impl
+GL_VENDOR AMD
+GL_RENDERER AMD Radeon RX 5700 XT (NAVI10, DRM 3.40.0, 5.10.0-21-amd64, LLVM 11.0.1)
+GL_VERSION OpenGL ES 3.2 Mesa 20.3.5
+GLSL true, has-compiler-func: true, version: OpenGL ES GLSL ES 3.20 / 3.0.0
+GL FBO: basic true, full true
+GL_EXTENSIONS 140
+GLX_EXTENSIONS 49
+-----------------------------------------------------------------------------------------------------
+Requested Caps: GLCaps[rgba 8/8/8/4, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono , hw, GLProfile[GLES2/GLES3.hw], on-scr[.]]
+Requested Region-RenderModes: vbaa
+Chosen Caps: GLCaps[egl cfg 0x2, vid 0x21: rgba 8/8/8/8, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono , hw, GLProfile[GLES2/GLES3.hw], on-scr[.], [0x4d: GL, GLES1, GLES2, GLES3, VG]]
+Chosen Font: FreeSans-Regular
+Perf: Elapsed since startup: 457 [ms], 457,553,555 [ns]
+- monotonic startup 1970-01-18T10:59:37.921728576Z, 1,508,377,921 [ms]
+- monotonic current 1970-01-18T10:59:38.379282131Z, 1,508,378,379 [ms]
+- wall current 2023-03-07T02:47:04.152237920Z
+- currentNanos: Elapsed 467,401,506 [ns]
+ - test-startup 67,441 [ns]
+ - test-current 467,468,947 [ns]
+Text_1: tbox [ dim 54.787003 x 16.547 x 0.0, box 0.015000001 / -15.818001 / 0.0 .. 54.802002 / 0.72900003 / 0.0, ctr 27.4085 / -7.5445004 / 0.0 ]
+Text_1: rbox [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]
+
+
+ 1: Perf Launch:
+- loading GlueGen - loading test 0 [ms]
+- loading GlueGen - start test 309 [ms]
+- loading test - start test 309 [ms]
+- loading test - gl 467 [ms]
+- loading test - graph 468 [ms]
+- loading test - txt 508 [ms]
+- loading test - draw 538 [ms]
+ 1 / 1: Perf Launch: Total: graph 0, txt 39, draw 30, txt+draw 70 [ms]
+ 1 / 1: Perf Launch: PerLoop: graph 946,981, txt 39,797,620, draw 30,399,310, txt+draw 70,196,930 [ns]
+GLRegion: for GLProfile[GLES3/GLES3.hw] using int32_t indiced: true
+GLRegion: Region[vbaa, q 1, dirty 0, vertices 81092, box [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]]
+Text length: 1296
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 42,409 / 46,656, bytes 508,908 / 559,872, filled 90.9%, left 9.1%]
+ vertices [elements 81,092 / 88,128, bytes 973,104 / 1,057,536, filled 92.0%, left 8.0%]
+ params [elements 81,092 / 88,128, bytes 973,104 / 1,057,536, filled 92.0%, left 8.0%]
+ color [null]
+ total [bytes 2,455,116 / 2,674,944], filled 91.8%, left 8.2%]
+ 1 / 1: Perf Frame1: Total: graph 0, txt 39, draw 30, txt+draw 70 [ms]
+ 1 / 1: Perf Frame1: PerLoop: graph 946,981, txt 39,797,620, draw 30,399,310, txt+draw 70,196,930 [ns]
+ 20 / 20: Perf Frame20: Total: graph 205, txt 104, draw 37, txt+draw 142 [ms]
+ 20 / 20: Perf Frame20: PerLoop: graph 10,290,216, txt 5,248,586, draw 1,894,416, txt+draw 7,143,002 [ns]
+GLRegion: for GLProfile[GLES3/GLES3.hw] using int32_t indiced: true
+GLRegion: Region[vbaa, q 1, dirty 0, vertices 81092, box [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]]
+Text length: 1296
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 42,409 / 46,656, bytes 508,908 / 559,872, filled 90.9%, left 9.1%]
+ vertices [elements 81,092 / 88,128, bytes 973,104 / 1,057,536, filled 92.0%, left 8.0%]
+ params [elements 81,092 / 88,128, bytes 973,104 / 1,057,536, filled 92.0%, left 8.0%]
+ color [null]
+ total [bytes 2,455,116 / 2,674,944], filled 91.8%, left 8.2%]
+ 20 / 40: Perf Frame40: Total: graph 270, txt 54, draw 6, txt+draw 60 [ms]
+ 20 / 40: Perf Frame40: PerLoop: graph 13,506,225, txt 2,716,698, draw 300,799, txt+draw 3,017,497 [ns]
+** new frame ** (sleep: 100ms)
+
+Test End: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+
+EDT START
+ 0 0 0
+EDT END
+ 0 0 0
+EDT EXIT
+ 0 0 0
diff --git a/doc/curve/tests/perf01/rpi4_7.log b/doc/curve/tests/perf01/rpi4_7.log
new file mode 100644
index 000000000..cb00a093e
--- /dev/null
+++ b/doc/curve/tests/perf01/rpi4_7.log
@@ -0,0 +1,170 @@
+GLUEGEN BUILDDIR: ../../gluegen/make/../build-linux-aarch64
+JOAL BUILDDIR: ../../joal/build-linux-aarch64
+JOGL DIR: ../build-linux-aarch64/..
+JOGL BUILDDIR: ../build-linux-aarch64
+JOGL BUILDDIR BASE: build-linux-aarch64
+JOGL PROFILE: JOGL_ALL
+Linux raspi05.goethel.localnet 5.15.32-v8+ #1538 SMP PREEMPT Thu Mar 31 19:40:39 BST 2022 aarch64 GNU/Linux
+Info: NO JOGL SWT ../build-linux-aarch64/../make/lib/swt/gtk-linux-aarch64/swt-debug.jar
+Info: NO Users SWT /home/sven/.java/swt.jar
+JOGAMP_ALL_AWT_CLASSPATH: .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+JOGAMP_ALL_NOAWT_CLASSPATH: .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all-noawt.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+JOGAMP_MOBILE_CLASSPATH: .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all-mobile.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+JOGAMP_CLASSPATH: .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+JOGAMP_LD_LIBRARY_PATH: :../../gluegen/make/../build-linux-aarch64/obj:../build-linux-aarch64/lib
+JOGAMP_DYLD_LIBRARY_PATH: :../../gluegen/make/../build-linux-aarch64/obj:../build-linux-aarch64/lib
+
+MacOSX REMEMBER to add the JVM arguments -XstartOnFirstThread -Djava.awt.headless=true for running demos without AWT, e.g. NEWT
+MacOSX REMEMBER to add the JVM arguments -XstartOnFirstThread -Djava.awt.headless=true com.jogamp.newt.util.MainThread for running demos with NEWT
+/usr/bin/java
+openjdk version "17.0.4" 2022-07-19
+OpenJDK Runtime Environment (build 17.0.4+8-Debian-1deb11u1)
+OpenJDK 64-Bit Server VM (build 17.0.4+8-Debian-1deb11u1, mixed mode, sharing)
+LD_LIBRARY_PATH
+LIBXCB_ALLOW_SLOPPY_LOCK:
+LIBGL_DRIVERS_PATH:
+LIBGL_DEBUG:
+LIBGL_ALWAYS_INDIRECT:
+LIBGL_ALWAYS_SOFTWARE:
+SWT_CLASSPATH:
+MacOsX 0
+DISPLAY
+WAYLAND_DISPLAY
+USE_BUILDDIR 0
+USE_CLASSPATH .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all-noawt.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+
+Test Start: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+
+__GL_THREADED_OPTIMIZATIONS
+
+/usr/bin/java -DummyArg --add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED -Djava.awt.headless=true -cp .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all-noawt.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+Performance test enabled: false
+Requested Caps: GLCaps[rgba 8/8/8/4, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono , hw, GLProfile[GLES2/GLES3.hw], on-scr[.]]
+Requested Region-RenderModes: vbaa
+Chosen Caps: GLCaps[egl cfg 0x1e, vid 0x34325258: rgba 8/8/8/1, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/4, sample-ext default, dbl, mono , hw, GLProfile[GLES2/GLES3.hw], on-scr[.], [0x4d: GL, GLES1, GLES2, GLES3, VG]]
+-----------------------------------------------------------------------------------------------------
+Platform: LINUX / Linux 5.15.32-v8+ (5.15.32), aarch64 (ARM64, EABI_AARCH64), 4 cores, littleEndian true
+MachineDataInfo: runtimeValidated true, 32Bit false, primitive size / alignment:
+ int8 1 / 1, int16 2 / 2
+ int 4 / 4, long 8 / 8
+ int32 4 / 4, int64 8 / 8
+ float 4 / 4, double 8 / 8, ldouble 16 / 16
+ pointer 8 / 8, page 4096
+Platform: Java Version: 17.0.4 (17.0.4u0), VM: OpenJDK 64-Bit Server VM, Runtime: OpenJDK Runtime Environment
+Platform: Java Vendor: Debian, https://tracker.debian.org/openjdk-17, Java17, dynamicLib: true, AWT enabled: false
+-----------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------
+Package: com.jogamp.opengl
+Extension Name: com.jogamp.opengl
+Specification Title: Java Bindings for OpenGL API Specification
+Specification Vendor: JogAmp Community
+Specification Version: 2.5
+Implementation Title: Java Bindings for OpenGL Runtime Environment
+Implementation Vendor: JogAmp Community
+Implementation Vendor ID: com.jogamp
+Implementation URL: http://jogamp.org/
+Implementation Version: 2.5.0-rc-20230307
+Implementation Build: 2.5-bmanual-20230307
+Implementation Branch: master
+Implementation Commit: fb03e913c0c55a9a96e93a00ef6590b9bea9a62a
+Implementation SHA Sources: null
+Implementation SHA Classes: null
+Implementation SHA Classes-this: null
+Implementation SHA Natives: null
+Implementation SHA Natives-this: null
+-----------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------
+EGLGraphicsDevice[type .egl, v1.4.0, nativeDisplayID 0x7ee8001570, connection decon, unitID 0, handle 0x7ee8019cf0, owner true, ResourceToolkitLock[obj 0x15bfd87, isOwner true, <543e710e, 57f23557>[count 1, qsz 0, owner <main>]]]:
+ Natives
+ GL4bc false
+ GL4 false
+ GLES3 true [3.1 (ES profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GL3bc false
+ GL3 false
+ GL2 false
+ GLES2 true [3.1 (ES profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GLES1 true [1.1 (ES profile, arb, compat[FP32], hardware)]
+ Count 3 / 8
+ Common
+ GL4ES3 true
+ GL2GL3 false
+ GL2ES2 true
+ GL2ES1 true
+ Mappings
+ GLES1 GLProfile[GLES1/GLES1.hw]
+ GLES2 GLProfile[GLES2/GLES3.hw]
+ GL2ES1 GLProfile[GL2ES1/GLES1.hw]
+ GL4ES3 GLProfile[GL4ES3/GLES3.hw]
+ GL2ES2 GLProfile[GL2ES2/GLES3.hw]
+ GLES3 GLProfile[GLES3/GLES3.hw]
+ default GLProfile[GLES3/GLES3.hw]
+ Count 6 / 12
+
+Swap Interval 1
+GL Profile GLProfile[GLES3/GLES3.hw]
+GL Version 3.1 (ES profile, arb, compat[ES2, ES3, ES31], FBO, hardware) - OpenGL ES 3.1 Mesa 20.3.5 [GL 3.1.0, vendor 20.3.5 (Mesa 20.3.5)]
+Quirks [No10BitColorCompOffscreen]
+Impl. class jogamp.opengl.es3.GLES3Impl
+GL_VENDOR Broadcom
+GL_RENDERER V3D 4.2
+GL_VERSION OpenGL ES 3.1 Mesa 20.3.5
+GLSL true, has-compiler-func: true, version: OpenGL ES GLSL ES 3.10 / 3.0.0
+GL FBO: basic true, full true
+GL_EXTENSIONS 91
+GLX_EXTENSIONS 28
+-----------------------------------------------------------------------------------------------------
+Perf: Elapsed since startup: 2,384 [ms], 2,384,601,488 [ns]
+- monotonic startup 1970-01-06T13:37:37.226575319Z, 481,057,226 [ms]
+- monotonic current 1970-01-06T13:37:39.611176807Z, 481,059,611 [ms]
+- wall current 2023-03-07T02:50:31.666852677Z
+- currentNanos: Elapsed 2,398,803,500 [ns]
+ - test-startup 412,567 [ns]
+ - test-current 2,399,216,067 [ns]
+Text_1: tbox [ dim 54.787003 x 16.547 x 0.0, box 0.015000001 / -15.818001 / 0.0 .. 54.802002 / 0.72900003 / 0.0, ctr 27.4085 / -7.5445004 / 0.0 ]
+Text_1: rbox [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]
+
+
+ 1: Perf Launch:
+- loading GlueGen - loading test 0 [ms]
+- loading GlueGen - start test 1,630 [ms]
+- loading test - start test 1,630 [ms]
+- loading test - gl 2,400 [ms]
+- loading test - graph 2,404 [ms]
+- loading test - txt 2,683 [ms]
+- loading test - draw 2,985 [ms]
+ 1 / 1: Perf Launch: Total: graph 3, txt 278, draw 302, txt+draw 581 [ms]
+ 1 / 1: Perf Launch: PerLoop: graph 3,722,065, txt 278,818,981, draw 302,494,033, txt+draw 581,313,014 [ns]
+GLRegion: for GLProfile[GLES3/GLES3.hw] using int32_t indiced: true
+GLRegion: Region[vbaa, q 1, dirty 0, vertices 81092, box [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]]
+Text length: 1296
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 42,409 / 42,768, bytes 508,908 / 513,216, filled 99.2%, left 0.8%]
+ vertices [elements 81,092 / 82,944, bytes 973,104 / 995,328, filled 97.8%, left 2.2%]
+ params [elements 81,092 / 82,944, bytes 973,104 / 995,328, filled 97.8%, left 2.2%]
+ color [null]
+ total [bytes 2,455,116 / 2,503,872], filled 98.1%, left 1.9%]
+ 1 / 1: Perf Frame1: Total: graph 3, txt 278, draw 302, txt+draw 581 [ms]
+ 1 / 1: Perf Frame1: PerLoop: graph 3,722,065, txt 278,818,981, draw 302,494,033, txt+draw 581,313,014 [ns]
+ 20 / 20: Perf Frame20: Total: graph 14, txt 547, draw 374, txt+draw 921 [ms]
+ 20 / 20: Perf Frame20: PerLoop: graph 711,606, txt 27,363,599, draw 18,706,961, txt+draw 46,070,561 [ns]
+GLRegion: for GLProfile[GLES3/GLES3.hw] using int32_t indiced: true
+GLRegion: Region[vbaa, q 1, dirty 0, vertices 81092, box [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]]
+Text length: 1296
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 42,409 / 42,768, bytes 508,908 / 513,216, filled 99.2%, left 0.8%]
+ vertices [elements 81,092 / 82,944, bytes 973,104 / 995,328, filled 97.8%, left 2.2%]
+ params [elements 81,092 / 82,944, bytes 973,104 / 995,328, filled 97.8%, left 2.2%]
+ color [null]
+ total [bytes 2,455,116 / 2,503,872], filled 98.1%, left 1.9%]
+ 20 / 40: Perf Frame40: Total: graph 3, txt 235, draw 69, txt+draw 304 [ms]
+ 20 / 40: Perf Frame40: PerLoop: graph 165,838, txt 11,758,196, draw 3,453,805, txt+draw 15,212,002 [ns]
+** new frame ** (sleep: 100ms)
+
+Test End: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+
+EDT START
+ 0 0 0
+EDT END
+ 0 0 0
+EDT EXIT
+ 0 0 0
diff --git a/doc/curve/tests/perf01/rpi4_8.log b/doc/curve/tests/perf01/rpi4_8.log
new file mode 100644
index 000000000..6f09d673d
--- /dev/null
+++ b/doc/curve/tests/perf01/rpi4_8.log
@@ -0,0 +1,170 @@
+GLUEGEN BUILDDIR: ../../gluegen/make/../build-linux-aarch64
+JOAL BUILDDIR: ../../joal/build-linux-aarch64
+JOGL DIR: ../build-linux-aarch64/..
+JOGL BUILDDIR: ../build-linux-aarch64
+JOGL BUILDDIR BASE: build-linux-aarch64
+JOGL PROFILE: JOGL_ALL
+Linux raspi05.goethel.localnet 5.15.32-v8+ #1538 SMP PREEMPT Thu Mar 31 19:40:39 BST 2022 aarch64 GNU/Linux
+Info: NO JOGL SWT ../build-linux-aarch64/../make/lib/swt/gtk-linux-aarch64/swt-debug.jar
+Info: NO Users SWT /home/sven/.java/swt.jar
+JOGAMP_ALL_AWT_CLASSPATH: .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+JOGAMP_ALL_NOAWT_CLASSPATH: .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all-noawt.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+JOGAMP_MOBILE_CLASSPATH: .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all-mobile.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+JOGAMP_CLASSPATH: .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+JOGAMP_LD_LIBRARY_PATH: :../../gluegen/make/../build-linux-aarch64/obj:../build-linux-aarch64/lib
+JOGAMP_DYLD_LIBRARY_PATH: :../../gluegen/make/../build-linux-aarch64/obj:../build-linux-aarch64/lib
+
+MacOSX REMEMBER to add the JVM arguments -XstartOnFirstThread -Djava.awt.headless=true for running demos without AWT, e.g. NEWT
+MacOSX REMEMBER to add the JVM arguments -XstartOnFirstThread -Djava.awt.headless=true com.jogamp.newt.util.MainThread for running demos with NEWT
+/opt-linux-arm64/zulu19.32.13-ca-jdk19.0.2-linux_aarch64/bin/java
+openjdk version "19.0.2" 2023-01-17
+OpenJDK Runtime Environment Zulu19.32+13-CA (build 19.0.2+7)
+OpenJDK 64-Bit Server VM Zulu19.32+13-CA (build 19.0.2+7, mixed mode)
+LD_LIBRARY_PATH
+LIBXCB_ALLOW_SLOPPY_LOCK:
+LIBGL_DRIVERS_PATH:
+LIBGL_DEBUG:
+LIBGL_ALWAYS_INDIRECT:
+LIBGL_ALWAYS_SOFTWARE:
+SWT_CLASSPATH:
+MacOsX 0
+DISPLAY
+WAYLAND_DISPLAY
+USE_BUILDDIR 0
+USE_CLASSPATH .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all-noawt.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar
+
+Test Start: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+
+__GL_THREADED_OPTIMIZATIONS
+
+/opt-linux-arm64/zulu19.32.13-ca-jdk19.0.2-linux_aarch64/bin/java -DummyArg --add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED -Djava.awt.headless=true -cp .:../../gluegen/make/../build-linux-aarch64/gluegen-rt.jar:../../joal/build-linux-aarch64/jar/joal.jar:../build-linux-aarch64/jar/jogl-all-noawt.jar:../build-linux-aarch64/jar/atomic/oculusvr.jar:../build-linux-aarch64/jar/jogl-test.jar::../../gluegen/make/../make/lib/junit.jar:/usr/lib/ant.jar:/usr/lib/ant-junit.jar:../../gluegen/make/../make/lib/semantic-versioning/semver.jar:../../gluegen/make/../build-linux-aarch64/gluegen-test-util.jar com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+Performance test enabled: false
+Requested Caps: GLCaps[rgba 8/8/8/4, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono , hw, GLProfile[GLES2/GLES3.hw], on-scr[.]]
+Requested Region-RenderModes: vbaa
+Chosen Caps: GLCaps[egl cfg 0x1e, vid 0x34325258: rgba 8/8/8/1, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/4, sample-ext default, dbl, mono , hw, GLProfile[GLES2/GLES3.hw], on-scr[.], [0x4d: GL, GLES1, GLES2, GLES3, VG]]
+-----------------------------------------------------------------------------------------------------
+Platform: LINUX / Linux 5.15.32-v8+ (5.15.32), aarch64 (ARM64, EABI_AARCH64), 4 cores, littleEndian true
+MachineDataInfo: runtimeValidated true, 32Bit false, primitive size / alignment:
+ int8 1 / 1, int16 2 / 2
+ int 4 / 4, long 8 / 8
+ int32 4 / 4, int64 8 / 8
+ float 4 / 4, double 8 / 8, ldouble 16 / 16
+ pointer 8 / 8, page 4096
+Platform: Java Version: 19.0.2 (19.0.2u0), VM: OpenJDK 64-Bit Server VM, Runtime: OpenJDK Runtime Environment
+Platform: Java Vendor: Azul Systems, Inc., http://www.azul.com/, Java17, dynamicLib: true, AWT enabled: false
+-----------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------
+Package: com.jogamp.opengl
+Extension Name: com.jogamp.opengl
+Specification Title: Java Bindings for OpenGL API Specification
+Specification Vendor: JogAmp Community
+Specification Version: 2.5
+Implementation Title: Java Bindings for OpenGL Runtime Environment
+Implementation Vendor: JogAmp Community
+Implementation Vendor ID: com.jogamp
+Implementation URL: http://jogamp.org/
+Implementation Version: 2.5.0-rc-20230307
+Implementation Build: 2.5-bmanual-20230307
+Implementation Branch: master
+Implementation Commit: fb03e913c0c55a9a96e93a00ef6590b9bea9a62a
+Implementation SHA Sources: null
+Implementation SHA Classes: null
+Implementation SHA Classes-this: null
+Implementation SHA Natives: null
+Implementation SHA Natives-this: null
+-----------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------
+EGLGraphicsDevice[type .egl, v1.4.0, nativeDisplayID 0x7eec001530, connection decon, unitID 0, handle 0x7eec019e10, owner true, ResourceToolkitLock[obj 0x5b8dfcc1, isOwner true, <2f9f7dcf, 747ddf94>[count 1, qsz 0, owner <main>]]]:
+ Natives
+ GL4bc false
+ GL4 false
+ GLES3 true [3.1 (ES profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GL3bc false
+ GL3 false
+ GL2 false
+ GLES2 true [3.1 (ES profile, arb, compat[ES2, ES3, ES31], FBO, hardware)]
+ GLES1 true [1.1 (ES profile, arb, compat[FP32], hardware)]
+ Count 3 / 8
+ Common
+ GL4ES3 true
+ GL2GL3 false
+ GL2ES2 true
+ GL2ES1 true
+ Mappings
+ GLES1 GLProfile[GLES1/GLES1.hw]
+ GLES2 GLProfile[GLES2/GLES3.hw]
+ GL2ES1 GLProfile[GL2ES1/GLES1.hw]
+ GL4ES3 GLProfile[GL4ES3/GLES3.hw]
+ GL2ES2 GLProfile[GL2ES2/GLES3.hw]
+ GLES3 GLProfile[GLES3/GLES3.hw]
+ default GLProfile[GLES3/GLES3.hw]
+ Count 6 / 12
+
+Swap Interval 1
+GL Profile GLProfile[GLES3/GLES3.hw]
+GL Version 3.1 (ES profile, arb, compat[ES2, ES3, ES31], FBO, hardware) - OpenGL ES 3.1 Mesa 20.3.5 [GL 3.1.0, vendor 20.3.5 (Mesa 20.3.5)]
+Quirks [No10BitColorCompOffscreen]
+Impl. class jogamp.opengl.es3.GLES3Impl
+GL_VENDOR Broadcom
+GL_RENDERER V3D 4.2
+GL_VERSION OpenGL ES 3.1 Mesa 20.3.5
+GLSL true, has-compiler-func: true, version: OpenGL ES GLSL ES 3.10 / 3.0.0
+GL FBO: basic true, full true
+GL_EXTENSIONS 91
+GLX_EXTENSIONS 28
+-----------------------------------------------------------------------------------------------------
+Perf: Elapsed since startup: 2,700 [ms], 2,700,679,058 [ns]
+- monotonic startup 1970-01-06T13:37:02.837988590Z, 481,022,837 [ms]
+- monotonic current 1970-01-06T13:37:05.538667648Z, 481,025,538 [ms]
+- wall current 2023-03-07T02:49:57.594087208Z
+- currentNanos: Elapsed 2,812,659,931 [ns]
+ - test-startup 1,392,457 [ns]
+ - test-current 2,814,052,388 [ns]
+Text_1: tbox [ dim 54.787003 x 16.547 x 0.0, box 0.015000001 / -15.818001 / 0.0 .. 54.802002 / 0.72900003 / 0.0, ctr 27.4085 / -7.5445004 / 0.0 ]
+Text_1: rbox [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]
+
+
+ 1: Perf Launch:
+- loading GlueGen - loading test 1 [ms]
+- loading GlueGen - start test 1,828 [ms]
+- loading test - start test 1,827 [ms]
+- loading test - gl 2,816 [ms]
+- loading test - graph 2,821 [ms]
+- loading test - txt 3,082 [ms]
+- loading test - draw 3,401 [ms]
+ 1 / 1: Perf Launch: Total: graph 4, txt 261, draw 318, txt+draw 580 [ms]
+ 1 / 1: Perf Launch: PerLoop: graph 4,302,092, txt 261,581,446, draw 318,608,401, txt+draw 580,189,847 [ns]
+GLRegion: for GLProfile[GLES3/GLES3.hw] using int32_t indiced: true
+GLRegion: Region[vbaa, q 1, dirty 0, vertices 81092, box [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]]
+Text length: 1296
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 42,409 / 42,768, bytes 508,908 / 513,216, filled 99.2%, left 0.8%]
+ vertices [elements 81,092 / 82,944, bytes 973,104 / 995,328, filled 97.8%, left 2.2%]
+ params [elements 81,092 / 82,944, bytes 973,104 / 995,328, filled 97.8%, left 2.2%]
+ color [null]
+ total [bytes 2,455,116 / 2,503,872], filled 98.1%, left 1.9%]
+ 1 / 1: Perf Frame1: Total: graph 4, txt 261, draw 318, txt+draw 580 [ms]
+ 1 / 1: Perf Frame1: PerLoop: graph 4,302,092, txt 261,581,446, draw 318,608,401, txt+draw 580,189,847 [ns]
+ 20 / 20: Perf Frame20: Total: graph 14, txt 517, draw 384, txt+draw 902 [ms]
+ 20 / 20: Perf Frame20: PerLoop: graph 709,093, txt 25,872,257, draw 19,232,249, txt+draw 45,104,507 [ns]
+GLRegion: for GLProfile[GLES3/GLES3.hw] using int32_t indiced: true
+GLRegion: Region[vbaa, q 1, dirty 0, vertices 81092, box [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 0.0 .. 56.773006 / 0.729 / 0.0, ctr 29.379503 / -7.5444994 / 0.0 ]]
+Text length: 1296
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 42,409 / 42,768, bytes 508,908 / 513,216, filled 99.2%, left 0.8%]
+ vertices [elements 81,092 / 82,944, bytes 973,104 / 995,328, filled 97.8%, left 2.2%]
+ params [elements 81,092 / 82,944, bytes 973,104 / 995,328, filled 97.8%, left 2.2%]
+ color [null]
+ total [bytes 2,455,116 / 2,503,872], filled 98.1%, left 1.9%]
+ 20 / 40: Perf Frame40: Total: graph 3, txt 226, draw 65, txt+draw 291 [ms]
+ 20 / 40: Perf Frame40: PerLoop: graph 160,404, txt 11,337,131, draw 3,253,677, txt+draw 14,590,809 [ns]
+** new frame ** (sleep: 100ms)
+
+Test End: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40
+
+EDT START
+ 0 0 0
+EDT END
+ 0 0 0
+EDT EXIT
+ 0 0 0
diff --git a/make/scripts/tests-linux-aarch64.sh b/make/scripts/tests-linux-aarch64.sh
index f1b4de19d..bc59dacf0 100755
--- a/make/scripts/tests-linux-aarch64.sh
+++ b/make/scripts/tests-linux-aarch64.sh
@@ -1,8 +1,11 @@
#! /bin/bash
-spath=`dirname $0`
+SDIR=`dirname $0`
-. $spath/tests.sh `which java` -DummyArg ../build-linux-aarch64 $*
-#. $spath/tests.sh /usr/lib/jvm/java-11-openjdk-arm64/bin/java -DummyArg ../build-linux-aarch64 $*
+#JAVA_CMD=/opt-linux-arm64/zulu19.32.13-ca-jdk19.0.2-linux_aarch64/bin/java
+#JAVA_CMD=/usr/lib/jvm/java-11-openjdk-arm64/bin/java
+JAVA_CMD=`which java`
+
+. $SDIR/tests.sh $JAVA_CMD -DummyArg ../build-linux-aarch64 $*
diff --git a/make/scripts/tests-win.bat b/make/scripts/tests-win.bat
index cfdef2de6..7b2c84102 100755
--- a/make/scripts/tests-win.bat
+++ b/make/scripts/tests-win.bat
@@ -218,7 +218,7 @@ REM scripts\java-win.bat com.jogamp.opengl.test.junit.jogl.offscreen.TestOffscre
REM scripts\java-win.bat com.jogamp.opengl.test.junit.jogl.offscreen.TestOffscreen02BitmapNEWT
REM scripts\java-win.bat com.jogamp.opengl.test.junit.graph.TestRegionRendererNEWT01
-scripts\java-win.bat com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT00
+scripts\java-win.bat com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 %*
REM scripts\java-win.bat com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT01
REM scripts\java-win.bat com.jogamp.opengl.test.junit.jogl.glsl.TestGLSLShaderState02NEWT
REM scripts\java-win.bat com.jogamp.opengl.test.junit.jogl.glsl.TestGLSLShaderState02NEWT
diff --git a/make/scripts/tests-x64.sh b/make/scripts/tests-x64.sh
index 5da1c4c20..1da3b12f0 100755
--- a/make/scripts/tests-x64.sh
+++ b/make/scripts/tests-x64.sh
@@ -21,5 +21,8 @@ fi
export SWT_CLASSPATH=`pwd`/lib/swt/gtk-linux-x86_64/swt.jar
#export SWT_CLASSPATH=/usr/local/projects/JOGL/SWT/swt-4.3.0/gtk-linux-x86_64/swt-debug.jar
-. $SDIR/tests.sh `which java` -DummyArg ../build-x86_64 $*
+#JAVA_CMD=/opt-linux-x86_64/zulu19.32.13-ca-jdk19.0.2-linux_x64/bin/java
+JAVA_CMD=`which java`
+
+. $SDIR/tests.sh $JAVA_CMD -DummyArg ../build-x86_64 $*
diff --git a/make/scripts/tests.sh b/make/scripts/tests.sh
index e10882787..81327185a 100644
--- a/make/scripts/tests.sh
+++ b/make/scripts/tests.sh
@@ -953,7 +953,7 @@ function testawtswt() {
#testnoawt com.jogamp.opengl.test.junit.graph.TestFontsNEWT00 $*
#testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWTBugXXXX $*
-#testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT00 $*
+#testnoawt com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 $*
#testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT01 $*
#testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT10 $*
#testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT20 $*
@@ -991,8 +991,8 @@ function testawtswt() {
# Linux DRM/GBM
#
-#testmobile com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT00 $*
-testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT00 $*
+#testmobile com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 $*
+testnoawt com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 $*
#testmobile com.jogamp.opengl.test.junit.graph.demos.GPUTextNewtDemo $*
#testmobile com.jogamp.opengl.test.junit.graph.demos.GPUUISceneNewtDemo $*
#testmobile com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieCube $*
diff --git a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT00.java b/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java
index 353b21e1f..f8fd06695 100644
--- a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT00.java
+++ b/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java
@@ -41,16 +41,13 @@ import com.jogamp.opengl.GLCapabilities;
import com.jogamp.opengl.GLDrawable;
import com.jogamp.opengl.GLException;
import com.jogamp.opengl.GLProfile;
+import com.jogamp.opengl.JoglVersion;
import com.jogamp.opengl.fixedfunc.GLMatrixFunc;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.FixMethodOrder;
-import org.junit.runners.MethodSorters;
-
import com.jogamp.common.os.Clock;
+import com.jogamp.common.os.Platform;
import com.jogamp.common.util.IOUtil;
+import com.jogamp.common.util.VersionUtil;
import com.jogamp.graph.curve.Region;
import com.jogamp.graph.curve.opengl.RenderState;
import com.jogamp.graph.curve.opengl.GLRegion;
@@ -60,11 +57,9 @@ import com.jogamp.graph.font.Font;
import com.jogamp.graph.font.FontFactory;
import com.jogamp.graph.geom.SVertex;
import com.jogamp.graph.geom.plane.AffineTransform;
-import com.jogamp.junit.util.JunitTracer;
import com.jogamp.opengl.math.geom.AABBox;
import com.jogamp.opengl.test.junit.util.MiscUtils;
import com.jogamp.opengl.test.junit.util.NEWTGLContext;
-import com.jogamp.opengl.test.junit.util.UITestCase;
import com.jogamp.opengl.util.GLReadBufferUtil;
import com.jogamp.opengl.util.PMVMatrix;
@@ -78,8 +73,7 @@ import com.jogamp.opengl.util.PMVMatrix;
* - Using a single GLRegion instantiation
* - Single GLRegion is filled once with shapes from text
*/
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class TestTextRendererNEWT00 extends UITestCase {
+public class PerfTextRendererNEWT00 {
static final Instant t0i = Clock.getMonotonicTime();
static final long t0 = Clock.currentNanos();
static final boolean DEBUG = false;
@@ -87,51 +81,46 @@ public class TestTextRendererNEWT00 extends UITestCase {
static long duration = 100; // ms
static boolean forceES2 = false;
static boolean forceGL3 = false;
- static boolean mainRun = false;
static int win_width = 1280;
static int win_height = 720;
static int loop_count = 1;
static boolean do_perf = false;
+ static boolean do_snap = false;
static Font font;
static float fontSize = 24; // in pixel
private final float[] fg_color = new float[] { 0, 0, 0, 1 };
- @BeforeClass
- public static void setup() throws IOException {
- if( null == font ) {
+ static {
+ try {
font = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSans.ttf",
- FontSet01.class.getClassLoader(), FontSet01.class).getInputStream(), true);
+ FontSet01.class.getClassLoader(), FontSet01.class).getInputStream(), true);
// font = FontFactory.get(FontFactory.UBUNTU).get(FontSet.FAMILY_LIGHT, FontSet.STYLE_NONE);
+ } catch (final IOException e) {
+ e.printStackTrace();
}
}
- static int atoi(final String a) {
- try {
- return Integer.parseInt(a);
- } catch (final Exception ex) { throw new RuntimeException(ex); }
- }
-
- public static void main(final String args[]) throws IOException {
+ public static void main(final String args[]) throws IOException, GLException, InterruptedException {
+ String text = PerfTextRendererNEWT00.text_1;
boolean wait = false;
- mainRun = true;
for(int i=0; i<args.length; i++) {
if(args[i].equals("-time")) {
i++;
- duration = atoi(args[i]);
+ duration = MiscUtils.atol(args[i], duration);
} else if(args[i].equals("-width")) {
i++;
- win_width = atoi(args[i]);
+ win_width = MiscUtils.atoi(args[i], win_width);
} else if(args[i].equals("-height")) {
i++;
- win_height = atoi(args[i]);
+ win_height = MiscUtils.atoi(args[i], win_height);
} else if(args[i].equals("-es2")) {
forceES2 = true;
} else if(args[i].equals("-gl3")) {
forceGL3 = true;
} else if(args[i].equals("-font")) {
i++;
- font = FontFactory.get(IOUtil.getResource(args[i], TestTextRendererNEWT00.class.getClassLoader(), TestTextRendererNEWT00.class).getInputStream(), true);
+ font = FontFactory.get(IOUtil.getResource(args[i], PerfTextRendererNEWT00.class.getClassLoader(), PerfTextRendererNEWT00.class).getInputStream(), true);
} else if(args[i].equals("-fontSize")) {
i++;
fontSize = MiscUtils.atof(args[i], fontSize);
@@ -143,16 +132,23 @@ public class TestTextRendererNEWT00 extends UITestCase {
if( 0 >= loop_count ) {
loop_count = Integer.MAX_VALUE;
}
+ } else if(args[i].equals("-long_text")) {
+ text = PerfTextRendererNEWT00.text_long;
} else if(args[i].equals("-perf")) {
do_perf = true;
+ } else if(args[i].equals("-snap")) {
+ do_snap = true;
}
}
System.err.println("Performance test enabled: "+do_perf);
if( wait ) {
- JunitTracer.waitForKey("Start");
+ MiscUtils.waitForKey("Start");
}
- final String tstname = TestTextRendererNEWT00.class.getName();
- org.junit.runner.JUnitCore.main(tstname);
+ final int renderModes = Region.VBAA_RENDERING_BIT /* | Region.COLORCHANNEL_RENDERING_BIT */;
+ final int sampleCount = 4;
+
+ final PerfTextRendererNEWT00 obj = new PerfTextRendererNEWT00();
+ obj.test(renderModes, sampleCount, text);
}
static void sleep() {
@@ -205,11 +201,7 @@ public class TestTextRendererNEWT00 extends UITestCase {
}
}
- @SuppressWarnings("unused")
- @Test
- public void test02TextRendererVBAA04() throws InterruptedException, GLException, IOException {
- final int renderModes = Region.VBAA_RENDERING_BIT /* | Region.COLORCHANNEL_RENDERING_BIT */;
- final int sampleCount = 4;
+ public void test(final int renderModes, final int sampleCount, final String text) throws InterruptedException, GLException, IOException {
final GLProfile glp;
if(forceGL3) {
glp = GLProfile.get(GLProfile.GL3);
@@ -224,8 +216,6 @@ public class TestTextRendererNEWT00 extends UITestCase {
final GLCapabilities caps = new GLCapabilities( glp );
caps.setAlphaBits(4);
- System.err.println("Requested Caps: "+caps);
- System.err.println("Requested Region-RenderModes: "+Region.getRenderModeString(renderModes));
final NEWTGLContext.WindowContext winctx = NEWTGLContext.createWindow(caps, win_width, win_height, false); // true);
final GLDrawable drawable = winctx.context.getGLDrawable();
@@ -233,9 +223,19 @@ public class TestTextRendererNEWT00 extends UITestCase {
if( do_perf ) {
gl.setSwapInterval(0);
}
- Assert.assertEquals(GL.GL_NO_ERROR, gl.glGetError());
+ {
+ final int glerr = gl.glGetError();
+ if( GL.GL_NO_ERROR != glerr ) {
+ System.err.println("Initial GL Error: "+glerr);
+ }
+ }
+ System.err.println(VersionUtil.getPlatformInfo());
+ System.err.println(JoglVersion.getInstance().toString(winctx.context.getGL()));
- System.err.println("Chosen: "+winctx.window.getChosenCapabilities());
+ System.err.println("Requested Caps: "+caps);
+ System.err.println("Requested Region-RenderModes: "+Region.getRenderModeString(renderModes));
+ System.err.println("Chosen Caps: "+winctx.window.getChosenCapabilities());
+ System.err.println("Chosen Font: "+font.getFullFamilyName());
final GLReadBufferUtil screenshot = new GLReadBufferUtil(false, false);
@@ -246,20 +246,12 @@ public class TestTextRendererNEWT00 extends UITestCase {
// Since we know about the size ...
// final GLRegion region = GLRegion.create(gl.getGLProfile(), renderModes, null);
// region.growBufferSize(123000, 62000); // hack-me
- // FreeSans ~ vertices 64/char, indices 33/char
+ // FreeSans ~ vertices 68/char, indices 36/char
// Ubuntu Light ~ vertices 100/char, indices 50/char
// FreeSerif ~ vertices 115/char, indices 61/char
- final int vertices_per_char = 64; // 100;
- final int indices_per_char = 33; // 50;
- final GLRegion region;
- if( do_perf ) {
- final int char_count = text_1.length(); // 1296
- region = GLRegion.create(gl.getGLProfile(), renderModes, null, char_count*vertices_per_char, char_count*indices_per_char);
- } else {
- // final int char_count = text_1.length(); // 1296
- region = GLRegion.create(gl.getGLProfile(), renderModes, null);
- // region.growBufferSize(char_count*vertices_per_char, char_count*indices_per_char);
- }
+ final int vertices_per_char = 68; // 100;
+ final int indices_per_char = 36; // 50;
+ final GLRegion region = GLRegion.create(gl.getGLProfile(), renderModes, null, text.length()*vertices_per_char, text.length()*indices_per_char);
final Perf perf = new Perf();
if( do_perf ) {
@@ -303,9 +295,9 @@ public class TestTextRendererNEWT00 extends UITestCase {
final AffineTransform t = new AffineTransform();
t.setToTranslation(3*x_width, 0f);
- final AABBox tbox_1 = font.getGlyphBounds(text_1);
- final AABBox rbox_1 = TextRegionUtil.addStringToRegion(region, font, t, text_1, fg_color);
- t4 = Clock.currentNanos(); // text_1 added to region
+ final AABBox tbox_1 = font.getGlyphBounds(text);
+ final AABBox rbox_1 = TextRegionUtil.addStringToRegion(region, font, t, text, fg_color);
+ t4 = Clock.currentNanos(); // text added to region
if( 0 == loop_i && !do_perf ) {
System.err.println("Text_1: tbox "+tbox_1);
System.err.println("Text_1: rbox "+rbox_1);
@@ -318,7 +310,7 @@ public class TestTextRendererNEWT00 extends UITestCase {
pmv.glTranslatef(dx, dy, z0);
pmv.glScalef(fontSize, fontSize, 1f);
region.draw(gl, renderer, sampleCountIO);
- final long t5 = Clock.currentNanos(); // text_1 added to region
+ final long t5 = Clock.currentNanos(); // text added to region
if( null != perf ) {
final long td_graph = t3 - t2;
final long td_txt = t4 - t3;
@@ -350,14 +342,9 @@ public class TestTextRendererNEWT00 extends UITestCase {
TimeUnit.NANOSECONDS.toMillis(td_launch3), TimeUnit.NANOSECONDS.toMillis(td_launch_txt),
TimeUnit.NANOSECONDS.toMillis(td_launch_draw));
perf.print(System.err, loop_i+1, "Launch");
- } else if( false && do_perf ) {
- System.err.printf("%3d: Perf: graph %2d, txt %2d, draw %2d, txt+draw %2d [ms]%n",
- loop_i+1,
- TimeUnit.NANOSECONDS.toMillis(td_graph),TimeUnit.NANOSECONDS.toMillis(td_txt),
- TimeUnit.NANOSECONDS.toMillis(td_draw), TimeUnit.NANOSECONDS.toMillis(td_txt_draw) );
}
}
- if( loop_count - 1 == loop_i && !do_perf ) {
+ if( loop_count - 1 == loop_i && do_snap ) {
// print screen at end
gl.glFinish();
printScreen(screenshot, renderModes, drawable, gl, false, sampleCount);
@@ -380,7 +367,7 @@ public class TestTextRendererNEWT00 extends UITestCase {
// print counter @ start and end
System.err.println("GLRegion: for "+gl.getGLProfile()+" using int32_t indiced: "+region.usesI32Idx());
System.err.println("GLRegion: "+region);
- System.err.println("Text length: "+text_1.length());
+ System.err.println("Text length: "+text.length());
region.printBufferStats(System.err);
if( do_perf ) {
region.perfCounter().print(System.err);
@@ -401,7 +388,7 @@ public class TestTextRendererNEWT00 extends UITestCase {
NEWTGLContext.destroyWindow(winctx);
}
- public static final String text_1a =
+ public static final String text_long =
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec sapien tellus. \n"+
"Ut purus odio, rhoncus sit amet commodo eget, ullamcorper vel urna. Mauris ultricies \n"+
"quam iaculis urna cursus ornare. Nullam ut felis a ante ultrices ultricies nec a elit. \n"+
@@ -444,15 +431,6 @@ public class TestTextRendererNEWT00 extends UITestCase {
"in lorem. Maecenas in ipsum ac justo scelerisque sollicitudin. Quisque sit amet neque lorem, \n" +
"-------Press H to change text---------";
- public static final String text_2s = "JogAmp reborn ;-)";
- public static final String text_2 =
- "I “Ask Jeff” or ‘Ask Jeff’. Take the chef d’œuvre! Two of [of] (of) ‘of’ “of” of? of! of*. X\n"+
- "Les Woëvres, the Fôret de Wœvres, the Voire and Vauvise. Yves is in heaven; D’Amboise is in jail. X\n"+
- "Lyford’s in Texas & L’Anse-aux-Griffons in Québec; the Łyna in Poland. Yriarte, Yciar and Ysaÿe are at Yale. X\n"+
- "Kyoto and Ryotsu are both in Japan, Kwikpak on the Yukon delta, Kvæven in Norway, Kyulu in Kenya, not in Rwanda.… X\n"+
- "Von-Vincke-Straße in Münster, Vdovino in Russia, Ytterbium in the periodic table. Are Toussaint L’Ouverture, Wölfflin, Wolfe, X\n"+
- "Miłosz and Wū Wŭ all in the library? 1510–1620, 11:00 pm, and the 1980s are over. X\n"+
- "-------Press H to change text---------";
public static void printScreen(final GLReadBufferUtil screenshot, final int renderModes, final GLDrawable drawable, final GL gl, final boolean exportAlpha, final int sampleCount) throws GLException, IOException {
final int screenshot_num = 0;
diff --git a/src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java b/src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java
index bf656bb4d..7f35d7a86 100644
--- a/src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java
+++ b/src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java
@@ -97,6 +97,14 @@ public class MiscUtils {
return "0x" + Long.toHexString( hex );
}
+ public static void waitForKey(final String preMessage) {
+ final BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
+ System.err.println(preMessage+"> Press enter to continue");
+ try {
+ System.err.println(stdin.readLine());
+ } catch (final IOException e) { e.printStackTrace(); }
+ }
+
public static void assertFloatBufferEquals(final String errmsg, final FloatBuffer expected, final FloatBuffer actual, final float delta) {
if(null == expected && null == actual) {
return;