1ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org#include "DMGpuGMTask.h" 2d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 399589af4e333422639d7e873207dd323fdd6e808commit-bot@chromium.org#include "DMExpectationsTask.h" 4d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "DMUtil.h" 5a7a9f37a3195e8efa1571a3707457c26e2f896a9mtklein@google.com#include "DMWriteTask.h" 6d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkCommandLineFlags.h" 715a140599942f70e47380e3f700a825c7cece3b4commit-bot@chromium.org#include "SkSurface.h" 8d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkTLS.h" 9d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 10d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.comnamespace DM { 11d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 12ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgGpuGMTask::GpuGMTask(const char* config, 13ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org Reporter* reporter, 14ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org TaskRunner* taskRunner, 15ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org skiagm::GMRegistry::Factory gmFactory, 16e4d3e605f74a23d050abad29909af421d8b1cf1amtklein const Expectations& expectations, 17ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org GrContextFactory::GLContextType contextType, 18ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org int sampleCount) 19ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org : GpuTask(reporter, taskRunner) 20d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com , fGM(gmFactory(NULL)) 2138aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.org , fName(UnderJoin(fGM->getName(), config)) 2299589af4e333422639d7e873207dd323fdd6e808commit-bot@chromium.org , fExpectations(expectations) 23d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com , fContextType(contextType) 24d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com , fSampleCount(sampleCount) 25d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com {} 26d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 27ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgvoid GpuGMTask::draw(GrContextFactory* grFactory) { 2815a140599942f70e47380e3f700a825c7cece3b4commit-bot@chromium.org SkImageInfo info = SkImageInfo::Make(SkScalarCeilToInt(fGM->width()), 2915a140599942f70e47380e3f700a825c7cece3b4commit-bot@chromium.org SkScalarCeilToInt(fGM->height()), 3028fcae2ec77eb16a79e155f8d788b20457f1c951commit-bot@chromium.org kN32_SkColorType, 310dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org kPremul_SkAlphaType); 32787227d3560bd8021394b76ada2cb184ecf5c919commit-bot@chromium.org SkAutoTUnref<SkSurface> surface(NewGpuSurface(grFactory, fContextType, info, fSampleCount)); 3315a140599942f70e47380e3f700a825c7cece3b4commit-bot@chromium.org SkCanvas* canvas = surface->getCanvas(); 34d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 3515a140599942f70e47380e3f700a825c7cece3b4commit-bot@chromium.org canvas->concat(fGM->getInitialTransform()); 3615a140599942f70e47380e3f700a825c7cece3b4commit-bot@chromium.org fGM->draw(canvas); 3715a140599942f70e47380e3f700a825c7cece3b4commit-bot@chromium.org canvas->flush(); 38d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 39d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com SkBitmap bitmap; 40a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org bitmap.setInfo(info); 4115a140599942f70e47380e3f700a825c7cece3b4commit-bot@chromium.org canvas->readPixels(&bitmap, 0, 0); 42d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 4399589af4e333422639d7e873207dd323fdd6e808commit-bot@chromium.org this->spawnChild(SkNEW_ARGS(ExpectationsTask, (*this, fExpectations, bitmap))); 44a7a9f37a3195e8efa1571a3707457c26e2f896a9mtklein@google.com this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap))); 45d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com} 46d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 47ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgbool GpuGMTask::shouldSkip() const { 48787227d3560bd8021394b76ada2cb184ecf5c919commit-bot@chromium.org return kGPUDisabled || SkToBool(fGM->getFlags() & skiagm::GM::kSkipGPU_Flag); 49d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com} 50d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 51d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com} // namespace DM 52