Stop sorting the results of SkBBH::search().
authormtklein <mtklein@chromium.org>
Mon, 18 Aug 2014 15:23:18 +0000 (08:23 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 18 Aug 2014 15:23:19 +0000 (08:23 -0700)
We only seem to need to sort with SkQuadTree, which is not actively used by
client code.  So it's really just wasted work.  SkQuadTree is interesting, but
I'd rather disable it than slow down the production code path.

BUG=skia:2834
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/471063004

dm/DMCpuGMTask.cpp
src/core/SkPictureData.cpp
src/core/SkRecordDraw.cpp

index d39252a..0127095 100644 (file)
@@ -40,14 +40,16 @@ void CpuGMTask::draw() {
 
     SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kNone_BBH,     QuiltTask::kDefault_Backend);
     SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kRTree_BBH,    QuiltTask::kDefault_Backend);
-    SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kQuadTree_BBH, QuiltTask::kDefault_Backend);
     SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kTileGrid_BBH, QuiltTask::kDefault_Backend);
-
     SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kNone_BBH,     QuiltTask::kSkRecord_Backend);
     SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kRTree_BBH,    QuiltTask::kSkRecord_Backend);
-    SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kQuadTree_BBH, QuiltTask::kSkRecord_Backend);
     SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kTileGrid_BBH, QuiltTask::kSkRecord_Backend);
 
+    /* skia:2834 SkQuadTree does not return its data in the order it was inserted.
+    SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kQuadTree_BBH, QuiltTask::kDefault_Backend);
+    SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kQuadTree_BBH, QuiltTask::kSkRecord_Backend);
+    */
+
     SPAWN(SerializeTask, fGMFactory(NULL), bm, SerializeTask::kNormal_Mode);
     SPAWN(SerializeTask, fGMFactory(NULL), bm, SerializeTask::kSkRecord_Mode);
 
index ea9da79..2bcf779 100644 (file)
@@ -589,14 +589,7 @@ const SkPicture::OperationList* SkPictureData::getActiveOps(const SkIRect& query
     }
 
     SkPicture::OperationList* activeOps = SkNEW(SkPicture::OperationList);
-
     fBoundingHierarchy->search(query, &(activeOps->fOps));
-    if (0 != activeOps->fOps.count()) {
-        SkTQSort<SkPictureStateTree::Draw>(
-            reinterpret_cast<SkPictureStateTree::Draw**>(activeOps->fOps.begin()),
-            reinterpret_cast<SkPictureStateTree::Draw**>(activeOps->fOps.end()-1));
-    }
-
     return activeOps;
 }
 
index 46241d7..17ac0d9 100644 (file)
@@ -27,12 +27,6 @@ void SkRecordDraw(const SkRecord& record,
         SkTDArray<void*> ops;
         bbh->search(query, &ops);
 
-        // FIXME: QuadTree doesn't send these back in the order we inserted them.  :(
-        // Also remove the sort in SkPictureData::getActiveOps()?
-        if (ops.count() > 0) {
-            SkTQSort(ops.begin(), ops.end() - 1, SkTCompareLT<void*>());
-        }
-
         SkRecords::Draw draw(canvas);
         for (int i = 0; i < ops.count(); i++) {
             if (NULL != callback && callback->abortDrawing()) {