| Index: dm/DMRecordTask.cpp | 
| diff --git a/dm/DMRecordTask.cpp b/dm/DMRecordTask.cpp | 
| index d1c552f569ae55dffccc9681c3cbf1b6438e5175..531fe57f9476f489b1bd6157456b6eda28acd156 100644 | 
| --- a/dm/DMRecordTask.cpp | 
| +++ b/dm/DMRecordTask.cpp | 
| @@ -2,31 +2,40 @@ | 
| #include "DMUtil.h" | 
| #include "DMWriteTask.h" | 
| #include "SkCommandLineFlags.h" | 
| -#include "SkRecording.h" | 
| +#include "SkRecord.h" | 
| +#include "SkRecordDraw.h" | 
| +#include "SkRecordOpts.h" | 
| +#include "SkRecorder.h" | 
|  | 
| DEFINE_bool(skr, true, "If true, run SKR tests."); | 
|  | 
| namespace DM { | 
|  | 
| -RecordTask::RecordTask(const Task& parent, skiagm::GM* gm, SkBitmap reference) | 
| +RecordTask::RecordTask(const Task& parent, skiagm::GM* gm, SkBitmap reference, bool optimize) | 
| : CpuTask(parent) | 
| -    , fName(UnderJoin(parent.name().c_str(), "skr")) | 
| +    , fName(UnderJoin(parent.name().c_str(), optimize ? "skr" : "skr-noopt")) | 
| , fGM(gm) | 
| , fReference(reference) | 
| +    , fOptimize(optimize) | 
| {} | 
|  | 
| void RecordTask::draw() { | 
| // Record the GM into an SkRecord. | 
| -    EXPERIMENTAL::SkRecording recording(fReference.width(), fReference.height()); | 
| -    recording.canvas()->concat(fGM->getInitialTransform()); | 
| -    fGM->draw(recording.canvas()); | 
| -    SkAutoTDelete<const EXPERIMENTAL::SkPlayback> playback(recording.releasePlayback()); | 
| +    SkRecord record; | 
| +    SkRecorder recorder(SkRecorder::kWriteOnly_Mode, &record, | 
| +                        fReference.width(), fReference.height()); | 
| +    recorder.concat(fGM->getInitialTransform()); | 
| +    fGM->draw(&recorder); | 
| + | 
| +    if (fOptimize) { | 
| +        SkRecordOptimize(&record); | 
| +    } | 
|  | 
| // Draw the SkRecord back into a bitmap. | 
| SkBitmap bitmap; | 
| SetupBitmap(fReference.colorType(), fGM.get(), &bitmap); | 
| SkCanvas target(bitmap); | 
| -    playback->draw(&target); | 
| +    SkRecordDraw(record, &target); | 
|  | 
| if (!BitmapsEqual(bitmap, fReference)) { | 
| this->fail(); | 
|  |