this patch modernizes VTK's depth sorting code. The following improvements
* transfrom GetCell to GetCellPoints. Building the cells one by one
is expensive and we only need points to determine the depth. We
can also then access the points in place.
* transform qsort to std::sort. Comparisons in std::sort get inlined
so std::sort is much faster. I also reduced the overhead of swaps
by using a functor so that only cell id is swapped.
* use templates to deal with point types instead of going through
virtual GetValue API that converts them to double.
* restructure depth computations so that they can be vectorized by
* I added a Cxx test to improve test coverage of the various sorting
modes supported by this class.
In tests the improved class is 2 x faster when sorting by first point
and cell bounds, and 1.5 x faster when sorting by parametric center.
The tests made use of a 900M cell iso-surface computed from a cosmology
simulation, and gcc 4.9.2 with -DNDEBUG -Ofast -march=native -mavx
git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@27619 18c085ea-50e0-402c-830e-de6fd14e8384