0ed4e863c0
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
71 lines
2.6 KiB
C++
71 lines
2.6 KiB
C++
#include "DMCpuGMTask.h"
|
|
#include "DMExpectationsTask.h"
|
|
#include "DMPipeTask.h"
|
|
#include "DMQuiltTask.h"
|
|
#include "DMSerializeTask.h"
|
|
#include "DMUtil.h"
|
|
#include "DMWriteTask.h"
|
|
|
|
namespace DM {
|
|
|
|
CpuGMTask::CpuGMTask(const char* config,
|
|
Reporter* reporter,
|
|
TaskRunner* taskRunner,
|
|
skiagm::GMRegistry::Factory gmFactory,
|
|
const Expectations& expectations,
|
|
SkColorType colorType)
|
|
: CpuTask(reporter, taskRunner)
|
|
, fGMFactory(gmFactory)
|
|
, fGM(fGMFactory(NULL))
|
|
, fName(UnderJoin(fGM->getName(), config))
|
|
, fExpectations(expectations)
|
|
, fColorType(colorType)
|
|
{}
|
|
|
|
void CpuGMTask::draw() {
|
|
SkBitmap bm;
|
|
AllocatePixels(fColorType, fGM->getISize().width(), fGM->getISize().height(), &bm);
|
|
|
|
SkCanvas canvas(bm);
|
|
canvas.concat(fGM->getInitialTransform());
|
|
fGM->draw(&canvas);
|
|
canvas.flush();
|
|
|
|
#define SPAWN(ChildTask, ...) this->spawnChild(SkNEW_ARGS(ChildTask, (*this, __VA_ARGS__)))
|
|
SPAWN(ExpectationsTask, fExpectations, bm);
|
|
|
|
SPAWN(PipeTask, fGMFactory(NULL), bm, PipeTask::kInProcess_Mode);
|
|
SPAWN(PipeTask, fGMFactory(NULL), bm, PipeTask::kCrossProcess_Mode);
|
|
SPAWN(PipeTask, fGMFactory(NULL), bm, PipeTask::kSharedAddress_Mode);
|
|
|
|
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::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::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);
|
|
|
|
SPAWN(WriteTask, bm);
|
|
#undef SPAWN
|
|
}
|
|
|
|
bool CpuGMTask::shouldSkip() const {
|
|
if (kRGB_565_SkColorType == fColorType && (fGM->getFlags() & skiagm::GM::kSkip565_Flag)) {
|
|
return true;
|
|
}
|
|
if (fGM->getFlags() & skiagm::GM::kGPUOnly_Flag) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
} // namespace DM
|