There are two issues revealed in the bug report:
- the GPU subdivision does not support meshes with only loose geometry
- the loose geometry is not subdivided
For the first case, checks are added to ensure we still fill the
buffers with loose geometry even if no polygons are present.
For the second case, this adds
BKE_subdiv_mesh_interpolate_position_on_edge which encapsulates the
loose vertex interpolation mechanism previously found in
subdiv_mesh_vertex_of_loose_edge.
The subdivided loose geometry is stored in a new specific data structure
DRWSubdivLooseGeom so as to not pollute MeshExtractLooseGeom. These
structures store the corresponding coarse element data, which will be
used for filling GPU buffers appropriately.