aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2023-03-07 20:04:11 +0100
committerSven Gothel <[email protected]>2023-03-07 20:04:11 +0100
commit9a14dd8d40be4f4d88ba8424e908129ff628e259 (patch)
treedbe3a92ca6834b34d3d39512d85c4ccaea7f5269
parent8476bc8420eafaf741f37ddf3c2f2d4660b31109 (diff)
Graph Perf Update: 1296 chars to Region per Frame: RaspiPi4 10.25ms (Region) + 3.4ms (draw), PC 2.97ms (Region) + 0.36ms (draw) (GOOD)
Performance update from commit 607eb99b9cad227dd7be6d149c6b6cf57d060c35 (Note: There I mentioned the total duration for 20 frames, not per frame) A Performance @ 2.4.0 with 119,787 vertices: - doc/curve/tests/perf00/rpi4_old.log - RaspiPi4 57.20ms (Region) + 23.4ms (draw) B Performance @ commit 607eb99b9cad227dd7be6d149c6b6cf57d060c35 with 81,092 vertices: - doc/curve/tests/perf01/rpi4_7.log + doc/curve/tests/perf01/pc_7.log - RaspiPi4 11.76ms (Region) + 3.5ms (draw), PC 3.4ms (Region) + 0.35ms (draw) C Now with 81,092 vertices (and a slight bigger buffer due to 'count' pre-size): - doc/curve/tests/perf02/rpi4_10.log + doc/curve/tests/perf02/pc_10.log - RaspiPi4 10.25ms (Region) + 3.4ms (draw), PC 2.97ms (Region) + 0.36ms (draw) Hence we enhanced performance from A -> C reasonably. Most important is that neither 'Flight Recorder' not 'Visual VM' could identify Region.addOutlineShape()'s triangulation nor vertices compounding to be significant throttle. After further triangulation bugfixes (delauny tesselation), we might analyze performance of this method further. Enhancements of VBO GLArrayData data management where Region.addOutlineShape() finally we pushes the data into the VBO helped to remove certain overhead. Mostly the buffer-size enhancements including API-hooks to count the required vertices & indices to issue Region.setBufferCapacity() helped to ease the GC.
-rw-r--r--doc/curve/tests/perf00/rpi4_old.log27
-rw-r--r--doc/curve/tests/perf02/pc_10.log199
-rw-r--r--doc/curve/tests/perf02/rpi4_10.log186
3 files changed, 412 insertions, 0 deletions
diff --git a/doc/curve/tests/perf00/rpi4_old.log b/doc/curve/tests/perf00/rpi4_old.log
new file mode 100644
index 000000000..30f3367e1
--- /dev/null
+++ b/doc/curve/tests/perf00/rpi4_old.log
@@ -0,0 +1,27 @@
+ 17: Perf: graph 0, txt[1 38, 2 0, all 38], draw 6, txt+draw 44, fin 0 [ms]
+ 18: Perf: graph 0, txt[1 38, 2 0, all 38], draw 6, txt+draw 44, fin 0 [ms]
+Text_1: tbox [ dim 55.571003 x 15.901001 x 0.0, box 0.010000001 / -15.125001 / 0.0 .. 55.581 / 0.776 / 0.0, ctr 27.7955 / -7.1745005 / 0.0 ]
+Text_1: rbox [ dim 55.57101 x 15.901001 x 0.0, box 0.01 / -15.125001 / 0.0 .. 55.58101 / 0.776 / 0.0, ctr 27.795504 / -7.1745005 / 0.0 ]
+ 19: Perf: graph 1, txt[1 37, 2 0, all 37], draw 7, txt+draw 44, fin 0 [ms]
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 60,016 / 62,000, bytes 720,192 / 744,000, filled 96.8%, left 3.2%]
+ vertices [elements 119,787 / 123,000, bytes 1,437,444 / 1,476,000, filled 97.4%, left 2.6%]
+ params [elements 119,787 / 123,000, bytes 1,437,444 / 1,476,000, filled 97.4%, left 2.6%]
+ color [elements 119,787 / 123,000, bytes 1,916,592 / 1,968,000, filled 97.4%, left 2.6%]
+ total [bytes 5,511,672 / 5,664,000], filled 97.3%, left 2.7%]
+Region.add(): count 21460, total 903 [ms], per-add 42102.455 [ns]
+ shape_get 206 [ms], per-add 9602.414 [ns]
+ buffer_prep 6 [ms], per-add 286.271 [ns]
+ vertices 177 [ms], per-add 8278.021 [ns]
+ push_idx 70 [ms], per-add 3264.097 [ns]
+ push_vertidx 222 [ms], per-add 10347.168 [ns]
+ triangles 513 [ms], per-add 23935.750 [ns]
+TypecastFont.process(): count 20, total 1011, per-add 50.550 [ms]
+ transform 25, per-add 1.250 [ms]
+ id 1, per-add 0.050 [ms]
+ shape_get 1, per-add 0.050 [ms]
+ translate 32, per-add 1.600 [ms]
+ visitor 915, per-add 45.750 [ms]
+ 20: Perf: Total: graph 36, txt[1 1144, 2 0, all 1144], draw 468, txt+draw 1612, fin 0 [ms]
+ 20: Perf: PerLoop: graph 1.80, txt[1 57.20, 2 0.00, all 57.20], draw 23.40, txt+draw 80.60, fin 0.00 [ms]
+
diff --git a/doc/curve/tests/perf02/pc_10.log b/doc/curve/tests/perf02/pc_10.log
new file mode 100644
index 000000000..6f8f0933e
--- /dev/null
+++ b/doc/curve/tests/perf02/pc_10.log
@@ -0,0 +1,199 @@
+./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: 8476bc8420eafaf741f37ddf3c2f2d4660b31109
+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 0x7f1a1c01dd80, connection :0, unitID 0, handle 0x7f1a1c01f7c0, owner true, ResourceToolkitLock[obj 0x69a10787, isOwner true, <2d127a61, 2bbaf4f0>[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
+Region post ctor w/ default initial buffer size
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 0 cnt / 330 cap, bytes 0 cnt / 3,960 cap, filled 0.0%, left 100.0%]
+ vertices [elements 0 cnt / 640 cap, bytes 0 cnt / 7,680 cap, filled 0.0%, left 100.0%]
+ params [elements 0 cnt / 640 cap, bytes 0 cnt / 7,680 cap, filled 0.0%, left 100.0%]
+ color [null]
+ total [bytes 0 / 19,320], filled 0.0%, left 100.0%]
+Region count: text 1296 chars -> vertices 96088, indices 58098
+Region post set-buffer-size w/ matching vertices 96088, indices 58098
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 0 cnt / 58,098 cap, bytes 0 cnt / 697,176 cap, filled 0.0%, left 100.0%]
+ vertices [elements 0 cnt / 96,088 cap, bytes 0 cnt / 1,153,056 cap, filled 0.0%, left 100.0%]
+ params [elements 0 cnt / 96,088 cap, bytes 0 cnt / 1,153,056 cap, filled 0.0%, left 100.0%]
+ color [null]
+ total [bytes 0 / 3,003,288], filled 0.0%, left 100.0%]
+Perf: Elapsed since startup: 475 [ms], 475,710,592 [ns]
+- monotonic startup 1970-01-19T02:49:36.632535495Z, 1,565,376,632 [ms]
+- monotonic current 1970-01-19T02:49:37.108246087Z, 1,565,377,108 [ms]
+- wall current 2023-03-07T18:37:02.881197937Z
+- currentNanos: Elapsed 478,175,600 [ns]
+ - test-startup 74,962 [ns]
+ - test-current 478,250,562 [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 286 [ms]
+- loading test - start test 286 [ms]
+- loading test - gl 478 [ms]
+- loading test - graph 479 [ms]
+- loading test - txt 494 [ms]
+- loading test - draw 514 [ms]
+ 1 / 1: Perf Launch: Total: graph 0, txt 14, draw 19, txt+draw 34 [ms]
+ 1 / 1: Perf Launch: PerLoop: graph 947,423, txt 14,506,905, draw 19,682,459, txt+draw 34,189,364 [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 cnt / 58,098 cap, bytes 508,908 cnt / 697,176 cap, filled 73.0%, left 27.0%]
+ vertices [elements 81,092 cnt / 96,088 cap, bytes 973,104 cnt / 1,153,056 cap, filled 84.4%, left 15.6%]
+ params [elements 81,092 cnt / 96,088 cap, bytes 973,104 cnt / 1,153,056 cap, filled 84.4%, left 15.6%]
+ color [null]
+ total [bytes 2,455,116 / 3,003,288], filled 81.7%, left 18.3%]
+ 1 / 1: Perf Frame1: Total: graph 0, txt 14, draw 19, txt+draw 34 [ms]
+ 1 / 1: Perf Frame1: PerLoop: graph 947,423, txt 14,506,905, draw 19,682,459, txt+draw 34,189,364 [ns]
+ 20 / 20: Perf Frame20: Total: graph 221, txt 75, draw 28, txt+draw 103 [ms]
+ 20 / 20: Perf Frame20: PerLoop: graph 11,080,666, txt 3,765,968, draw 1,405,741, txt+draw 5,171,709 [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 cnt / 58,098 cap, bytes 508,908 cnt / 697,176 cap, filled 73.0%, left 27.0%]
+ vertices [elements 81,092 cnt / 96,088 cap, bytes 973,104 cnt / 1,153,056 cap, filled 84.4%, left 15.6%]
+ params [elements 81,092 cnt / 96,088 cap, bytes 973,104 cnt / 1,153,056 cap, filled 84.4%, left 15.6%]
+ color [null]
+ total [bytes 2,455,116 / 3,003,288], filled 81.7%, left 18.3%]
+ 20 / 40: Perf Frame40: Total: graph 262, txt 59, draw 7, txt+draw 66 [ms]
+ 20 / 40: Perf Frame40: PerLoop: graph 13,110,330, txt 2,973,558, draw 361,034, txt+draw 3,334,593 [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/perf02/rpi4_10.log b/doc/curve/tests/perf02/rpi4_10.log
new file mode 100644
index 000000000..8967f2661
--- /dev/null
+++ b/doc/curve/tests/perf02/rpi4_10.log
@@ -0,0 +1,186 @@
+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
+-----------------------------------------------------------------------------------------------------
+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: 8476bc8420eafaf741f37ddf3c2f2d4660b31109
+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 0x7ee8019e50, owner true, ResourceToolkitLock[obj 0x8b87145, isOwner true, <6483f5ae, b9afc07>[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
+-----------------------------------------------------------------------------------------------------
+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]]
+Chosen Font: FreeSans-Regular
+Region post ctor w/ default initial buffer size
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 0 cnt / 330 cap, bytes 0 cnt / 3,960 cap, filled 0.0%, left 100.0%]
+ vertices [elements 0 cnt / 640 cap, bytes 0 cnt / 7,680 cap, filled 0.0%, left 100.0%]
+ params [elements 0 cnt / 640 cap, bytes 0 cnt / 7,680 cap, filled 0.0%, left 100.0%]
+ color [null]
+ total [bytes 0 / 19,320], filled 0.0%, left 100.0%]
+Region count: text 1296 chars -> vertices 96088, indices 58098
+Region post set-buffer-size w/ matching vertices 96088, indices 58098
+VBORegion2PVBAAES2: idx32 true
+ indices [elements 0 cnt / 58,098 cap, bytes 0 cnt / 697,176 cap, filled 0.0%, left 100.0%]
+ vertices [elements 0 cnt / 96,088 cap, bytes 0 cnt / 1,153,056 cap, filled 0.0%, left 100.0%]
+ params [elements 0 cnt / 96,088 cap, bytes 0 cnt / 1,153,056 cap, filled 0.0%, left 100.0%]
+ color [null]
+ total [bytes 0 / 3,003,288], filled 0.0%, left 100.0%]
+Perf: Elapsed since startup: 2,609 [ms], 2,609,054,608 [ns]
+- monotonic startup 1970-01-07T05:23:20.951147954Z, 537,800,951 [ms]
+- monotonic current 1970-01-07T05:23:23.560202562Z, 537,803,560 [ms]
+- wall current 2023-03-07T18:36:15.615735175Z
+- currentNanos: Elapsed 2,637,011,606 [ns]
+ - test-startup 436,456 [ns]
+ - test-current 2,637,448,062 [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,631 [ms]
+- loading test - start test 1,630 [ms]
+- loading test - gl 2,644 [ms]
+- loading test - graph 2,649 [ms]
+- loading test - txt 2,754 [ms]
+- loading test - draw 3,040 [ms]
+ 1 / 1: Perf Launch: Total: graph 4, txt 104, draw 286, txt+draw 391 [ms]
+ 1 / 1: Perf Launch: PerLoop: graph 4,884,937, txt 104,996,699, draw 286,529,273, txt+draw 391,525,972 [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 cnt / 58,098 cap, bytes 508,908 cnt / 697,176 cap, filled 73.0%, left 27.0%]
+ vertices [elements 81,092 cnt / 96,088 cap, bytes 973,104 cnt / 1,153,056 cap, filled 84.4%, left 15.6%]
+ params [elements 81,092 cnt / 96,088 cap, bytes 973,104 cnt / 1,153,056 cap, filled 84.4%, left 15.6%]
+ color [null]
+ total [bytes 2,455,116 / 3,003,288], filled 81.7%, left 18.3%]
+ 1 / 1: Perf Frame1: Total: graph 4, txt 104, draw 286, txt+draw 391 [ms]
+ 1 / 1: Perf Frame1: PerLoop: graph 4,884,937, txt 104,996,699, draw 286,529,273, txt+draw 391,525,972 [ns]
+ 20 / 20: Perf Frame20: Total: graph 16, txt 336, draw 357, txt+draw 694 [ms]
+ 20 / 20: Perf Frame20: PerLoop: graph 839,546, txt 16,824,350, draw 17,890,222, txt+draw 34,714,573 [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 cnt / 58,098 cap, bytes 508,908 cnt / 697,176 cap, filled 73.0%, left 27.0%]
+ vertices [elements 81,092 cnt / 96,088 cap, bytes 973,104 cnt / 1,153,056 cap, filled 84.4%, left 15.6%]
+ params [elements 81,092 cnt / 96,088 cap, bytes 973,104 cnt / 1,153,056 cap, filled 84.4%, left 15.6%]
+ color [null]
+ total [bytes 2,455,116 / 3,003,288], filled 81.7%, left 18.3%]
+ 20 / 40: Perf Frame40: Total: graph 3, txt 205, draw 68, txt+draw 273 [ms]
+ 20 / 40: Perf Frame40: PerLoop: graph 173,438, txt 10,252,801, draw 3,408,976, txt+draw 13,661,778 [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