aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Ruiqi Mao <ruiqimao@google.com>2018-07-09 14:16:56 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-09 20:31:28 +0000
commit9a6e42ff18133ef77066b82cb7e2d19788edd968 (patch)
tree29ca7c0dbd690c572b8fe222314f83b65cab493b /tools
parentc3833b4c152af3b6fa2a4c4ba7b1da02acd1af80 (diff)
added caching of SkVertices
SkVertices can now be "volatile", meaning they should not be cached. SkVertices is volatile by default if the argument is not given. Pulled from reverted CL: https://skia-review.googlesource.com/c/skia/+/138596 Docs-Preview: https://skia.org/?cl=139545 Bug: skia: Change-Id: I92cf832efe1c0aaa8f432eedde2678582dd2454e Reviewed-on: https://skia-review.googlesource.com/139545 Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/viewer/NIMASlide.cpp38
1 files changed, 21 insertions, 17 deletions
diff --git a/tools/viewer/NIMASlide.cpp b/tools/viewer/NIMASlide.cpp
index c13ff2f11d..25d023f67b 100644
--- a/tools/viewer/NIMASlide.cpp
+++ b/tools/viewer/NIMASlide.cpp
@@ -62,7 +62,7 @@ public:
this->updateBones();
// Update the vertices object.
- this->updateVerticesObject(false);
+ this->updateVerticesObject(false, false);
}
void renderBackend(SkCanvas* canvas) {
@@ -70,16 +70,13 @@ public:
if (fRenderMode != kBackend_RenderMode) {
fRenderMode = kBackend_RenderMode;
this->updateVertices();
- this->updateVerticesObject(false);
+ this->updateVerticesObject(false, false);
}
- canvas->save();
-
// Update the vertex data.
- if (fActorImage->doesAnimationVertexDeform() && fActorImage->isVertexDeformDirty()) {
+ if (fActorImage->doesAnimationVertexDeform()) {
this->updateVertices();
- this->updateVerticesObject(false);
- fActorImage->isVertexDeformDirty(false);
+ this->updateVerticesObject(false, true);
}
// Update the bones.
@@ -87,8 +84,6 @@ public:
// Draw the vertices object.
this->drawVerticesObject(canvas, true);
-
- canvas->restore();
}
void renderImmediate(SkCanvas* canvas) {
@@ -96,7 +91,7 @@ public:
if (fRenderMode != kImmediate_RenderMode) {
fRenderMode = kImmediate_RenderMode;
this->updateVertices();
- this->updateVerticesObject(true);
+ this->updateVerticesObject(true, true);
}
// Update the vertex data.
@@ -106,7 +101,7 @@ public:
}
// Update the vertices object.
- this->updateVerticesObject(true);
+ this->updateVerticesObject(true, true);
// Draw the vertices object.
this->drawVerticesObject(canvas, false);
@@ -198,7 +193,7 @@ private:
nima_to_skmatrix(fActorImage->worldTransform().values(), fBones[0]);
}
- void updateVerticesObject(bool applyDeforms) {
+ void updateVerticesObject(bool applyDeforms, bool isVolatile) {
std::vector<SkPoint>* positions = &fPositions;
// Apply deforms if requested.
@@ -229,7 +224,8 @@ private:
fBoneIdx.data(),
fBoneWgt.data(),
fIndices.size(),
- fIndices.data());
+ fIndices.data(),
+ isVolatile);
}
void drawVerticesObject(SkCanvas* canvas, bool useBones) const {
@@ -421,11 +417,19 @@ NIMASlide::~NIMASlide() {}
void NIMASlide::draw(SkCanvas* canvas) {
canvas->save();
- canvas->translate(500, 500);
- canvas->scale(1, -1);
+ for (int i = 0; i < 10; i ++) {
+ for (int j = 0; j < 10; j ++) {
+ canvas->save();
- // Render the actor.
- fActor->render(canvas, fRenderMode);
+ canvas->translate(1250 - 250 * i, 1250 - 250 * j);
+ canvas->scale(0.5, -0.5);
+
+ // Render the actor.
+ fActor->render(canvas, fRenderMode);
+
+ canvas->restore();
+ }
+ }
canvas->restore();