OpenSubdiv performance in 2.80 (can we get the CPU-only acceleration back?)

Just from some simple testing it seems like we’ve potentially had something like an 80% performance drop in Subdivision Surface viewport performance by enabling OpenSubdiv now.

I know we’re not going to get GPU acceleration for OpenSubdiv in 2.80, but it feels like it’s substantially slower than the old Blender subsurf code at the moment, and I’m wondering if we can get any of the old 2.79 CPU acceleration options for OSD even if it’s not full GLSL equivalent.

In 2.79 using the old flappy dragon demo, with plain old Blender subdiv I get about 4.5 fps (at subdiv level 1) in the viewport.

In 2.80 beta the same scene using OpenSubdiv gives 0.88 fps which feels pretty much unusable.

I dug up a month-old 2.80 alpha which was still using Blender subdiv, and that gives me 4 fps, still about 4.5 times faster than beta.

In 2.79, enabling OSD and setting the OpenSubdiv acceleration to, say, OpenMP results in 60+ fps(!) It can’t drive the scene at subdiv level 4 the way GLSL can, but it can sure give a usable result at subdiv level 1 or 2 which is enough to work pleasantly with a good approximation of a final result.

So… would it be possible to get back any of the CPU-only acceleration options for OpenSubdiv in 2.80, even if full ludicrous-speed GPU awesomeness has to wait until 2.81+?

1 Like

Subdivision surface performance will be improved before the 2.80 release still, also without GPU acceleration.


Also in 2.81 the subdiv are still very slow in animation if used with Armature or Shapekey.
The problem is not just to implement the GPU. Compared to 2.79 (in CPU mode) the 2.8 and 2.81 are noticeably slower (up to 10 times slower with heavy meshes).
In my experience the SubDivs in Blender 2.8 are currently unusable for character animation. They can only be used in renderings.
Sub-Division are a fundamental function, I hope the problem is solved as soon as possible.

1 Like