This benchmark shows a large variability across gpu drivers and devices with regard to creating and 'activating' subviewports.
'Activating' a subviewport involves creating a SubViewport node, adding it to the scene tree and rendering a frame.
These benchmarks test three levels of strain on the system by creating 'a few' (64) 'many' (256) and 'too many' (1024) subviewports in different benchmarks.
(after running these benchmarks I reduced the viewport size to 512x512 as I noticed the memory usage for 1024x1024 x 1024 subviewports was rediculous)
Godot v4.3.dev5 - Windows 10.0.22631 - Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz (8 Threads)
1: Vulkan 1.3.215 - Forward+ - Using Device #0: Intel - Intel(R) UHD Graphics 620
2: OpenGL API 3.3.0 - Build 31.0.101.2115 - Compatibility - Using Device: Intel - Intel(R) UHD Graphics 620
3: OpenGL API OpenGL ES 3.0.0 (ANGLE 2.1.21969 git hash: 9528449a8930) - Compatibility - Using Device: Google Inc. (Intel) - ANGLE (Intel, Intel(R) UHD Graphics 620 (0x00005917) Direct3D11 vs_5_0 ps_5_0, D3D11-31.0.101.2115)
4: D3D12 12_0 - Forward+ - Using Device #0: Intel - Intel(R) UHD Graphics 620
Godot v4.3.dev5 - Ubuntu 22.04.4 LTS 22.04 - X11 - 12th Gen Intel(R) Core(TM) i7-12700H (14 Threads)
5: Vulkan 1.3.255 - Forward+ - Using Device #0: Intel - Intel(R) Graphics (ADL GT2)
6: OpenGL API 4.6 (Core Profile) Mesa 23.2.1-1ubuntu3.1~22.04.2 - Compatibility - Using Device: Intel - Mesa Intel(R) Graphics (ADL GT2)
7: OpenGL API OpenGL ES 3.2 Mesa 23.2.1-1ubuntu3.1~22.04.2 - Compatibility - Using Device: Intel - Mesa Intel(R) Graphics (ADL GT2)
Godot v4.3.dev5 - Ubuntu 22.04.4 LTS 22.04 - X11 - 12th Gen Intel(R) Core(TM) i7-12700H (14 Threads)
8: Vulkan 1.3.242 - Forward+ - Using Device #2: NVIDIA - NVIDIA GeForce RTX 3050 Laptop GPU
9: OpenGL API 3.3.0 NVIDIA 535.161.07 - Compatibility - Using Device: NVIDIA - NVIDIA GeForce RTX 3050 Laptop GPU
10 OpenGL API OpenGL ES 3.2 NVIDIA 535.161.07 - Compatibility - Using Device: NVIDIA - NVIDIA GeForce RTX 3050 Laptop GPU
This benchmark shows a large variability across gpu drivers and devices with regard to creating and 'activating' subviewports.
'Activating' a subviewport involves creating a SubViewport node, adding it to the scene tree and rendering a frame.
These benchmarks test three levels of strain on the system by creating 'a few' (64) 'many' (256) and 'too many' (1024) subviewports in different benchmarks.
(after running these benchmarks I reduced the viewport size to 512x512 as I noticed the memory usage for 1024x1024 x 1024 subviewports was rediculous)