Render Caching: centralized vs distributed perfomance

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
User avatar
kwahoo
Posts: 688
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Render Caching: centralized vs distributed perfomance

Post by kwahoo »

Tooltip for this option states:
'Render Caching' is another way to say 'Rendering Acceleration'.
There are 3 options available to achieve this:
1) 'Auto' (default), let Coin3D decide where to cache.
2) 'Distributed', manually turn on cache for all view provider root node.
3) 'Centralized', manually turn off cache in all nodes of all view provider, and
only cache at the scene graph root node. This offers the fastest rendering speed
but slower response to any scene changes.
I did some testing using bigger models, and in the most cases 'Centralized" caching is the slowest one.
An example (source for the model):
Distributed:
Image

Auto:
Image

Centralized:
Image

I'm curious if this is a common pattern or mine setup is unusual.

I used following environment variables to get HUD (the first one is LInux/Mesa only):

Code: Select all

GALLIUM_HUD=fps,GPU-load,draw-calls,cpu0+cpu1+cpu2+cpu3+cpu4+cpu5+cpu6+cpu7+cpu8+cpu9+cpu10+cpu11+cpu12+cpu13+cpu14+cpu15

Code: Select all

COIN_PROFILER=on

Code: Select all

COIN_PROFILER_OVERLAY=autoredraw=1.0
FreeCAD version:

Code: Select all

OS: Ubuntu 19.10 (KDE/plasma)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.
Build type: Release
Python version: 3.7.3
Qt version: 5.12.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: Polish/Poland (pl_PL)
OpenGL info:

Code: Select all

glxinfo | grep OpenGL
OpenGL vendor string: X.Org
OpenGL renderer string: AMD Radeon RX 5700 XT (NAVI10, DRM 3.35.0, 5.4.0-050400rc8-generic, LLVM 10.0.0)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 20.0.0-devel - padoka PPA
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5 (Compatibility Profile) Mesa 20.0.0-devel - padoka PPA
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.0.0-devel - padoka PPA
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
CPU info:

Code: Select all

cat /proc/cpuinfo | grep 'model name'
model name      : AMD Ryzen 7 1700 Eight-Core Processor
Post Reply