Page MenuHome

Workbench: Performance
ClosedPublic

Authored by Jeroen Bakker (jbakker) on Oct 17 2019, 3:31 PM.

Details

Summary

Small performance improvements by caching the world_ubo in the World.
It was detected that NVIDIA driver created threads to update the
world_ubo (304 bytes). This patch will reuse the previous uploaded
ubo when not changed.

Note that in case multiple viewports are open with different settings or
viewpoint the caches will always miss.

Diff Detail

Repository
rB Blender
Branch
T70167 (branched from master)
Build Status
Buildable 5404
Build 5404: arc lint + arc unit

Event Timeline

Can confirm the threadspin seems to be gone, and the perf got a massive boost! well done @Jeroen Bakker (jbakker) !

beforeafter

On the classroom scene

beforeafter

cc: @Julian Eisel (Severin)

@LazyDodo (LazyDodo) Can you also test when using split eye rendering that the performance is still there. A different eye will produce a different shadow_direction_vs, it will reuse the same allocated GPU memory, but not sure if rewriting that memory will create the threads again.

I don't think so as the 50% was just in the GPU_alloc_buf. That is now only done once, when most likely be done by the first frame that blender renders (startup screen).

source/blender/draw/engines/workbench/workbench_data.c
49

Remove the data cache. Only keep the UBO allocation

Removed the cache of the data, only cache the UBO

This revision is now accepted and ready to land.Wed, Nov 27, 3:19 PM
This revision was automatically updated to reflect the committed changes.