Use new canvas virtuals for m44
Test: make
Change-Id: I83b71fc69515458946b90e96db612c11ba963e98
diff --git a/libs/hwui/DisplayListOps.in b/libs/hwui/DisplayListOps.in
index 4981792..c6c4ba8 100644
--- a/libs/hwui/DisplayListOps.in
+++ b/libs/hwui/DisplayListOps.in
@@ -19,7 +19,6 @@
X(Restore)
X(SaveLayer)
X(SaveBehind)
-X(Concat44)
X(Concat)
X(SetMatrix)
X(Scale)
diff --git a/libs/hwui/RecordingCanvas.cpp b/libs/hwui/RecordingCanvas.cpp
index 473dc53d..a495ec4 100644
--- a/libs/hwui/RecordingCanvas.cpp
+++ b/libs/hwui/RecordingCanvas.cpp
@@ -125,24 +125,18 @@
}
};
-struct Concat44 final : Op {
- static const auto kType = Type::Concat44;
- Concat44(const SkM44& m) : matrix(m) {}
- SkM44 matrix;
- void draw(SkCanvas* c, const SkMatrix&) const { c->concat(matrix); }
-};
struct Concat final : Op {
static const auto kType = Type::Concat;
- Concat(const SkMatrix& matrix) : matrix(matrix) {}
- SkMatrix matrix;
+ Concat(const SkM44& matrix) : matrix(matrix) {}
+ SkM44 matrix;
void draw(SkCanvas* c, const SkMatrix&) const { c->concat(matrix); }
};
struct SetMatrix final : Op {
static const auto kType = Type::SetMatrix;
- SetMatrix(const SkMatrix& matrix) : matrix(matrix) {}
- SkMatrix matrix;
+ SetMatrix(const SkM44& matrix) : matrix(matrix) {}
+ SkM44 matrix;
void draw(SkCanvas* c, const SkMatrix& original) const {
- c->setMatrix(SkMatrix::Concat(original, matrix));
+ c->setMatrix(SkM44(original) * matrix);
}
};
struct Scale final : Op {
@@ -569,12 +563,9 @@
}
void DisplayListData::concat(const SkM44& m) {
- this->push<Concat44>(0, m);
+ this->push<Concat>(0, m);
}
-void DisplayListData::concat(const SkMatrix& matrix) {
- this->push<Concat>(0, matrix);
-}
-void DisplayListData::setMatrix(const SkMatrix& matrix) {
+void DisplayListData::setMatrix(const SkM44& matrix) {
this->push<SetMatrix>(0, matrix);
}
void DisplayListData::scale(SkScalar sx, SkScalar sy) {
@@ -834,10 +825,7 @@
void RecordingCanvas::didConcat44(const SkM44& m) {
fDL->concat(m);
}
-void RecordingCanvas::didConcat(const SkMatrix& matrix) {
- fDL->concat(matrix);
-}
-void RecordingCanvas::didSetMatrix(const SkMatrix& matrix) {
+void RecordingCanvas::didSetM44(const SkM44& matrix) {
fDL->setMatrix(matrix);
}
void RecordingCanvas::didScale(SkScalar sx, SkScalar sy) {
diff --git a/libs/hwui/RecordingCanvas.h b/libs/hwui/RecordingCanvas.h
index 63d120c..4851148 100644
--- a/libs/hwui/RecordingCanvas.h
+++ b/libs/hwui/RecordingCanvas.h
@@ -82,8 +82,7 @@
void restore();
void concat(const SkM44&);
- void concat(const SkMatrix&);
- void setMatrix(const SkMatrix&);
+ void setMatrix(const SkM44&);
void scale(SkScalar, SkScalar);
void translate(SkScalar, SkScalar);
void translateZ(SkScalar);
@@ -154,8 +153,7 @@
void onFlush() override;
void didConcat44(const SkM44&) override;
- void didConcat(const SkMatrix&) override;
- void didSetMatrix(const SkMatrix&) override;
+ void didSetM44(const SkM44&) override;
void didScale(SkScalar, SkScalar) override;
void didTranslate(SkScalar, SkScalar) override;
diff --git a/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp b/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
index accf0f4..26bc659 100644
--- a/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
+++ b/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
@@ -1107,26 +1107,26 @@
EXPECT_EQ(dy, TRANSLATE_Y);
}
- virtual void didSetMatrix(const SkMatrix& matrix) override {
+ virtual void didSetM44(const SkM44& matrix) override {
mDrawCounter++;
// First invocation is EndReorderBarrierDrawable::drawShadow to apply shadow matrix.
// Second invocation is preparing the matrix for an elevated RenderNodeDrawable.
- EXPECT_TRUE(matrix.isIdentity());
+ EXPECT_TRUE(matrix == SkM44());
EXPECT_TRUE(getTotalMatrix().isIdentity());
}
- virtual void didConcat(const SkMatrix& matrix) override {
+ virtual void didConcat44(const SkM44& matrix) override {
mDrawCounter++;
if (mFirstDidConcat) {
// First invocation is EndReorderBarrierDrawable::drawShadow to apply shadow matrix.
mFirstDidConcat = false;
- EXPECT_EQ(SkMatrix::Translate(CASTER_X + TRANSLATE_X, CASTER_Y + TRANSLATE_Y),
+ EXPECT_EQ(SkM44::Translate(CASTER_X + TRANSLATE_X, CASTER_Y + TRANSLATE_Y),
matrix);
EXPECT_EQ(SkMatrix::Translate(CASTER_X + TRANSLATE_X, CASTER_Y + TRANSLATE_Y),
getTotalMatrix());
} else {
// Second invocation is preparing the matrix for an elevated RenderNodeDrawable.
- EXPECT_EQ(SkMatrix::Translate(TRANSLATE_X, TRANSLATE_Y), matrix);
+ EXPECT_EQ(SkM44::Translate(TRANSLATE_X, TRANSLATE_Y), matrix);
EXPECT_EQ(SkMatrix::Translate(TRANSLATE_X, TRANSLATE_Y), getTotalMatrix());
}
}