More of a Cycles-specific patch. Currently Cycles relies on Blender to do uniform subdivision so this makes it currently impossible to just tag a mesh as uniform subdivision over adaptive. This will allow the mesh to be instanced.
The code here looks like we could use ->UniformRefine() by what we see from SubdivisionType
https://github.com/boberfly/cycles/blob/77086fc932a05d52a86781f3d081698b3c9ad2a9/src/render/mesh_subdivision.cpp#L182
Looks very easy to implement, famous last words.