diff options
author | Sven Gothel <[email protected]> | 2023-03-07 21:55:18 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2023-03-07 21:55:18 +0100 |
commit | ad1511295afc0256fa02d6d434db4b119f96f056 (patch) | |
tree | cd2bbbae0e37c43d6051ca6fe443385d36236861 | |
parent | 9a14dd8d40be4f4d88ba8424e908129ff628e259 (diff) |
Graph Perf: PerfTextRendererNEWT00 Disable VSync per default (duh!)
PC 'regioned' perf enhanced a little bit, for some reason the RPI performance went down a tiny bit (fluctuations?).
-rw-r--r-- | doc/curve/tests/perf02/pc_10.log | 52 | ||||
-rw-r--r-- | doc/curve/tests/perf02/rpi4_10.log | 50 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java | 11 |
3 files changed, 61 insertions, 52 deletions
diff --git a/doc/curve/tests/perf02/pc_10.log b/doc/curve/tests/perf02/pc_10.log index 6f8f0933e..11feb218e 100644 --- a/doc/curve/tests/perf02/pc_10.log +++ b/doc/curve/tests/perf02/pc_10.log @@ -45,7 +45,8 @@ Test Start: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nper __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 +Excessuive performance test enabled: false +VSync requested: 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: @@ -70,7 +71,7 @@ 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 Commit: 9a14dd8d40be4f4d88ba8424e908129ff628e259 Implementation SHA Sources: null Implementation SHA Classes: null Implementation SHA Classes-this: null @@ -78,7 +79,7 @@ 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>]]]: +EGLGraphicsDevice[type .egl, v1.5.0, nativeDisplayID 0x7fadc801de30, connection :0, unitID 0, handle 0x7fadc801f870, 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)] @@ -110,7 +111,7 @@ EGLGraphicsDevice[type .egl, v1.5.0, nativeDisplayID 0x7f1a1c01dd80, connection default GLProfile[GL4bc/GL4bc.hw] Count 12 / 12 -Swap Interval 1 +Swap Interval 0 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] @@ -123,6 +124,7 @@ GL FBO: basic true, full true GL_EXTENSIONS 140 GLX_EXTENSIONS 49 ----------------------------------------------------------------------------------------------------- +VSync Swap Interval: 0 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]] @@ -142,27 +144,27 @@ VBORegion2PVBAAES2: idx32 true 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] +Perf: Elapsed since startup: 496 [ms], 496,933,522 [ns] +- monotonic startup 1970-01-19T05:00:30.983589115Z, 1,573,230,983 [ms] +- monotonic current 1970-01-19T05:00:31.480522637Z, 1,573,231,480 [ms] +- wall current 2023-03-07T20:47:57.253483767Z +- currentNanos: Elapsed 499,866,648 [ns] + - test-startup 77,612 [ns] + - test-current 499,944,260 [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] +- loading GlueGen - start test 288 [ms] +- loading test - start test 288 [ms] +- loading test - gl 501 [ms] +- loading test - graph 502 [ms] +- loading test - txt 517 [ms] +- loading test - draw 540 [ms] + 1 / 1: Perf Launch: Total: graph 1, txt 14, draw 23, txt+draw 38 [ms] + 1 / 1: Perf Launch: PerLoop: graph 1,074,964, txt 14,974,803, draw 23,747,589, txt+draw 38,722,392 [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 @@ -172,10 +174,10 @@ VBORegion2PVBAAES2: idx32 true 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] + 1 / 1: Perf Frame1: Total: graph 1, txt 14, draw 23, txt+draw 38 [ms] + 1 / 1: Perf Frame1: PerLoop: graph 1,074,964, txt 14,974,803, draw 23,747,589, txt+draw 38,722,392 [ns] + 20 / 20: Perf Frame20: Total: graph 1, txt 61, draw 30, txt+draw 91 [ms] + 20 / 20: Perf Frame20: PerLoop: graph 80,686, txt 3,059,319, draw 1,538,075, txt+draw 4,597,395 [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 @@ -185,8 +187,8 @@ VBORegion2PVBAAES2: idx32 true 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] + 20 / 40: Perf Frame40: Total: graph 0, txt 38, draw 5, txt+draw 44 [ms] + 20 / 40: Perf Frame40: PerLoop: graph 18,151, txt 1,929,427, draw 288,431, txt+draw 2,217,859 [ns] ** new frame ** (sleep: 100ms) Test End: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40 diff --git a/doc/curve/tests/perf02/rpi4_10.log b/doc/curve/tests/perf02/rpi4_10.log index 8967f2661..676a5c8b6 100644 --- a/doc/curve/tests/perf02/rpi4_10.log +++ b/doc/curve/tests/perf02/rpi4_10.log @@ -38,7 +38,8 @@ Test Start: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nper __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 +Excessuive performance test enabled: false +VSync requested: 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: @@ -63,7 +64,7 @@ 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 Commit: 9a14dd8d40be4f4d88ba8424e908129ff628e259 Implementation SHA Sources: null Implementation SHA Classes: null Implementation SHA Classes-this: null @@ -71,7 +72,7 @@ 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>]]]: +EGLGraphicsDevice[type .egl, v1.4.0, nativeDisplayID 0x7f1c001570, connection decon, unitID 0, handle 0x7f1c019ee0, owner true, ResourceToolkitLock[obj 0x8b87145, isOwner true, <6483f5ae, b9afc07>[count 1, qsz 0, owner <main>]]]: Natives GL4bc false GL4 false @@ -97,7 +98,7 @@ EGLGraphicsDevice[type .egl, v1.4.0, nativeDisplayID 0x7ee8001570, connection de default GLProfile[GLES3/GLES3.hw] Count 6 / 12 -Swap Interval 1 +Swap Interval 0 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] @@ -110,6 +111,7 @@ GL FBO: basic true, full true GL_EXTENSIONS 91 GLX_EXTENSIONS 28 ----------------------------------------------------------------------------------------------------- +VSync Swap Interval: 0 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]] @@ -129,13 +131,13 @@ VBORegion2PVBAAES2: idx32 true 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] +Perf: Elapsed since startup: 2,623 [ms], 2,623,669,455 [ns] +- monotonic startup 1970-01-07T07:37:05.390228219Z, 545,825,390 [ms] +- monotonic current 1970-01-07T07:37:08.013897674Z, 545,828,013 [ms] +- wall current 2023-03-07T20:50:00.069486361Z +- currentNanos: Elapsed 2,652,366,122 [ns] + - test-startup 423,974 [ns] + - test-current 2,652,790,096 [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 ] @@ -143,13 +145,13 @@ Text_1: rbox [ dim 54.787006 x 16.546999 x 0.0, box 1.986 / -15.817999 / 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] +- loading test - start test 1,631 [ms] +- loading test - gl 2,660 [ms] +- loading test - graph 2,664 [ms] +- loading test - txt 2,770 [ms] +- loading test - draw 3,049 [ms] + 1 / 1: Perf Launch: Total: graph 4, txt 106, draw 278, txt+draw 385 [ms] + 1 / 1: Perf Launch: PerLoop: graph 4,511,813, txt 106,280,608, draw 278,743,940, txt+draw 385,024,548 [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 @@ -159,10 +161,10 @@ VBORegion2PVBAAES2: idx32 true 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] + 1 / 1: Perf Frame1: Total: graph 4, txt 106, draw 278, txt+draw 385 [ms] + 1 / 1: Perf Frame1: PerLoop: graph 4,511,813, txt 106,280,608, draw 278,743,940, txt+draw 385,024,548 [ns] + 20 / 20: Perf Frame20: Total: graph 43, txt 401, draw 440, txt+draw 842 [ms] + 20 / 20: Perf Frame20: PerLoop: graph 2,180,331, txt 20,065,734, draw 22,037,094, txt+draw 42,102,828 [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 @@ -172,8 +174,8 @@ VBORegion2PVBAAES2: idx32 true 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] + 20 / 40: Perf Frame40: Total: graph 3, txt 226, draw 109, txt+draw 336 [ms] + 20 / 40: Perf Frame40: PerLoop: graph 198,623, txt 11,339,248, draw 5,486,210, txt+draw 16,825,459 [ns] ** new frame ** (sleep: 100ms) Test End: com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 -es2 -Nperf -long_text -loop 40 diff --git a/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java b/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java index 46bc5cd55..aab208038 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java @@ -85,6 +85,7 @@ public class PerfTextRendererNEWT00 { static int loop_count = 1; static boolean do_perf = false; static boolean do_snap = false; + static boolean do_vsync = false; static Font font; static float fontSize = 24; // in pixel @@ -133,13 +134,16 @@ public class PerfTextRendererNEWT00 { } } else if(args[i].equals("-long_text")) { text = PerfTextRendererNEWT00.text_long; + } else if(args[i].equals("-vsync")) { + do_vsync = true; } 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); + System.err.println("Excessuive performance test enabled: "+do_perf); + System.err.println("VSync requested: "+do_vsync); if( wait ) { MiscUtils.waitForKey("Start"); } @@ -219,7 +223,7 @@ public class PerfTextRendererNEWT00 { final NEWTGLContext.WindowContext winctx = NEWTGLContext.createWindow(caps, win_width, win_height, false); // true); final GLDrawable drawable = winctx.context.getGLDrawable(); final GL2ES2 gl = winctx.context.getGL().getGL2ES2(); - if( do_perf ) { + if( !do_vsync ) { gl.setSwapInterval(0); } { @@ -229,7 +233,8 @@ public class PerfTextRendererNEWT00 { } } System.err.println(VersionUtil.getPlatformInfo()); - System.err.println(JoglVersion.getInstance().toString(winctx.context.getGL())); + System.err.println(JoglVersion.getInstance().toString(gl)); + System.err.println("VSync Swap Interval: "+gl.getSwapInterval()); System.err.println("Requested Caps: "+caps); System.err.println("Requested Region-RenderModes: "+Region.getRenderModeString(renderModes)); |