summaryrefslogtreecommitdiff
path: root/chromium/third_party/skia/gm/flippity.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/gm/flippity.cpp')
-rw-r--r--chromium/third_party/skia/gm/flippity.cpp38
1 files changed, 27 insertions, 11 deletions
diff --git a/chromium/third_party/skia/gm/flippity.cpp b/chromium/third_party/skia/gm/flippity.cpp
index 05bfa938b53..71ce188202d 100644
--- a/chromium/third_party/skia/gm/flippity.cpp
+++ b/chromium/third_party/skia/gm/flippity.cpp
@@ -217,17 +217,14 @@ private:
canvas->restore();
}
- void drawRow(GrContext* context, SkCanvas* canvas,
- bool bottomLeftImage, bool drawSubset, bool drawScaled) {
-
- sk_sp<SkImage> referenceImage = make_reference_image(context, fLabels, bottomLeftImage);
+ void drawRow(SkCanvas* canvas, bool bottomLeftImage, bool drawSubset, bool drawScaled) {
canvas->save();
canvas->translate(kLabelSize, kLabelSize);
for (int i = 0; i < kNumMatrices; ++i) {
- this->drawImageWithMatrixAndLabels(canvas, referenceImage.get(), i,
- drawSubset, drawScaled);
+ this->drawImageWithMatrixAndLabels(canvas, fReferenceImages[bottomLeftImage].get(),
+ i, drawSubset, drawScaled);
canvas->translate(kCellSize, 0);
}
canvas->restore();
@@ -253,28 +250,46 @@ private:
SkASSERT(kNumLabels == fLabels.count());
}
- void onDraw(GrContext* context, GrRenderTargetContext*, SkCanvas* canvas) override {
+ DrawResult onGpuSetup(GrContext* context, SkString* errorMsg) override {
+ if (!context || context->abandoned()) {
+ return DrawResult::kSkip;
+ }
+
+ SkASSERT(context->priv().asDirectContext());
+
this->makeLabels(context);
+ fReferenceImages[0] = make_reference_image(context, fLabels, false);
+ fReferenceImages[1] = make_reference_image(context, fLabels, true);
+ if (!fReferenceImages[0] || !fReferenceImages[1]) {
+ *errorMsg = "Failed to create reference images.";
+ return DrawResult::kFail;
+ }
+
+ return DrawResult::kOk;
+ }
+
+ void onDraw(GrContext*, GrRenderTargetContext*, SkCanvas* canvas) override {
+ SkASSERT(fReferenceImages[0] && fReferenceImages[1]);
canvas->save();
// Top row gets TL image
- this->drawRow(context, canvas, false, false, false);
+ this->drawRow(canvas, false, false, false);
canvas->translate(0, kCellSize);
// Bottom row gets BL image
- this->drawRow(context, canvas, true, false, false);
+ this->drawRow(canvas, true, false, false);
canvas->translate(0, kCellSize);
// Third row gets subsets of BL images
- this->drawRow(context, canvas, true, true, false);
+ this->drawRow(canvas, true, true, false);
canvas->translate(0, kCellSize);
// Fourth row gets scaled subsets of BL images
- this->drawRow(context, canvas, true, true, true);
+ this->drawRow(canvas, true, true, true);
canvas->restore();
@@ -289,6 +304,7 @@ private:
private:
SkTArray<sk_sp<SkImage>> fLabels;
+ sk_sp<SkImage> fReferenceImages[2];
typedef GM INHERITED;
};