-
Notifications
You must be signed in to change notification settings - Fork 19
Description
This may not be a cinder-vr specific thing, but it is very obvious when looking at frame timings on the SteamVR developer window.
First - my system: i7 6700, ATI R390 4Gb, 64Gb Win10.
I tried this on one of the samples - controllerIntermediate which doesn't do much in terms of rendering (i.e. nothing fancy, not too many items). This should be almost zero CPU beyond the initial setup, with minimal GPU.
The average frame breakdown for controllerIntermediate is:
CPU:
Idle ~4ms
Compositor ~0.2ms
Application (other) ~6ms <<< This should be ZERO!
Application (scene) ~1ms
Late Start: 0ms
GPU:
Idle ~7ms
Other ~0.2ms
Compositor ~1ms
Application (other) ~3ms
Application (scene) ~0ms
By comparison, Google Earth does:
CPU:
Idle ~8.5ms
Compositor ~0.2ms
Application (other) ~0ms
Application (scene) ~2.5ms
Late Start: 0ms
GPU:
Idle ~8ms
Other ~0.1ms
Compositor ~1ms
Application (other) ~3ms
Application (scene) ~0ms
And The Lab which uses DirectX:
CPU:
Idle ~9ms
Compositor ~0.2ms
Application (other) ~0ms
Application (scene) ~1.8ms
Late Start: 0ms
GPU:
Idle ~3ms
Other ~0.1ms
Compositor ~1ms
Application (other) ~7ms
Application (scene) ~0ms
CodeXL (http://gpuopen.com/compute-product/codexl/) profiles show that controllerIntermediate is spending most of the CPU time on my driver (DrvPresentBuffers) while Earth spends most of its CPU time on the app itself.
Even though both The Lab and Earth use way more of the GPU, their CPU usage is minimal.
Same goes for the OpenVR hello_vr sample which uses straight up OpenGL and SDL.
CPU:
Idle ~10ms
Compositor ~0.2ms
Application (other) ~0ms
Application (scene) ~0.8ms
Late Start: 0ms
GPU:
Idle ~7ms
Other ~0.1ms
Compositor ~1ms
Application (other) ~3ms
Application (scene) ~0ms
For the complexity of the samples, I'd expect them to be on par with hello_vr, perhaps with a 10% perf penalty for using a convenient library like Cinder. Right now it is about 700% penalty.
Given that all this time is going to the driver, my guess is that there's some poor configuration setting somewhere that is forcing the driver down a slow path for no good reason or something along the line, which is why I'm opening this hoping that someone more familiar with the interaction between OpenGL and Cinder has a better answer.
Thanks.