Add support for drawLayer CanvasOps
Introdcued DrawLayer CanvasOp and implementation
Test in progress with support for GrRecrodingContext backed
SkDevices.
Test: In progress
Change-Id: I53c58233536a78c20b867d659eae2dae2adc54b2
diff --git a/libs/hwui/canvas/CanvasOpRasterizer.cpp b/libs/hwui/canvas/CanvasOpRasterizer.cpp
index 25129f6..0093c38 100644
--- a/libs/hwui/canvas/CanvasOpRasterizer.cpp
+++ b/libs/hwui/canvas/CanvasOpRasterizer.cpp
@@ -33,7 +33,11 @@
SkMatrix& currentGlobalTransform = globalMatrixStack.emplace_back(SkMatrix::I());
source.for_each([&]<CanvasOpType T>(const CanvasOpContainer<T> * op) {
- if constexpr (T == CanvasOpType::BeginZ || T == CanvasOpType::EndZ) {
+ if constexpr (
+ T == CanvasOpType::BeginZ ||
+ T == CanvasOpType::EndZ ||
+ T == CanvasOpType::DrawLayer
+ ) {
// Do beginZ or endZ
LOG_ALWAYS_FATAL("TODO");
return;
diff --git a/libs/hwui/canvas/CanvasOpTypes.h b/libs/hwui/canvas/CanvasOpTypes.h
index f9df2f7..2dfddac 100644
--- a/libs/hwui/canvas/CanvasOpTypes.h
+++ b/libs/hwui/canvas/CanvasOpTypes.h
@@ -55,6 +55,7 @@
// DrawImageLattice also used to draw 9 patches
DrawImageLattice,
DrawPicture,
+ DrawLayer,
// TODO: Rest
diff --git a/libs/hwui/canvas/CanvasOps.h b/libs/hwui/canvas/CanvasOps.h
index 8c7113d..b499733 100644
--- a/libs/hwui/canvas/CanvasOps.h
+++ b/libs/hwui/canvas/CanvasOps.h
@@ -28,6 +28,7 @@
#include "CanvasProperty.h"
#include "CanvasOpTypes.h"
+#include "Layer.h"
#include <experimental/type_traits>
#include <utility>
@@ -364,6 +365,11 @@
}
};
+template<>
+struct CanvasOp<CanvasOpType::DrawLayer> {
+ sp<Layer> layer;
+};
+
// cleanup our macros
#undef ASSERT_DRAWABLE