summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/jni/android_view_HardwareLayer.cpp1
-rw-r--r--libs/hwui/Android.mk2
-rw-r--r--libs/hwui/Caches.cpp2
-rw-r--r--libs/hwui/DeferredLayerUpdater.cpp23
-rw-r--r--libs/hwui/DeferredLayerUpdater.h2
-rw-r--r--libs/hwui/Layer.cpp2
-rw-r--r--libs/hwui/Layer.h13
-rw-r--r--libs/hwui/LayerRenderer.cpp63
-rw-r--r--libs/hwui/LayerRenderer.h53
-rw-r--r--libs/hwui/RenderNode.cpp1
-rw-r--r--libs/hwui/renderthread/CanvasContext.cpp3
-rw-r--r--libs/hwui/renderthread/CanvasContext.h2
-rw-r--r--libs/hwui/renderthread/IRenderPipeline.h2
-rw-r--r--libs/hwui/renderthread/OpenGLPipeline.cpp9
-rw-r--r--libs/hwui/renderthread/OpenGLPipeline.h2
-rw-r--r--libs/hwui/renderthread/RenderProxy.cpp5
-rw-r--r--libs/hwui/tests/common/TestUtils.cpp29
-rw-r--r--libs/hwui/tests/unit/DeferredLayerUpdaterTests.cpp54
-rw-r--r--libs/hwui/tests/unit/RenderNodeTests.cpp3
19 files changed, 99 insertions, 172 deletions
diff --git a/core/jni/android_view_HardwareLayer.cpp b/core/jni/android_view_HardwareLayer.cpp
index 6b774e8f23e3..4e0b924e801f 100644
--- a/core/jni/android_view_HardwareLayer.cpp
+++ b/core/jni/android_view_HardwareLayer.cpp
@@ -32,7 +32,6 @@
#include <SkXfermode.h>
#include <DeferredLayerUpdater.h>
-#include <LayerRenderer.h>
#include <SkiaShader.h>
#include <Rect.h>
#include <RenderNode.h>
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index 0a8cd789b515..8cbe016942ee 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -70,7 +70,6 @@ hwui_src_files := \
JankTracker.cpp \
Layer.cpp \
LayerBuilder.cpp \
- LayerRenderer.cpp \
LayerUpdateQueue.cpp \
Matrix.cpp \
OpDumper.cpp \
@@ -249,6 +248,7 @@ LOCAL_SRC_FILES += \
tests/unit/CanvasStateTests.cpp \
tests/unit/ClipAreaTests.cpp \
tests/unit/DamageAccumulatorTests.cpp \
+ tests/unit/DeferredLayerUpdaterTests.cpp \
tests/unit/DeviceInfoTests.cpp \
tests/unit/FatVectorTests.cpp \
tests/unit/FontRendererTests.cpp \
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index ef81a522c050..fe3d8598db71 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -17,7 +17,7 @@
#include "Caches.h"
#include "GammaFontRenderer.h"
-#include "LayerRenderer.h"
+#include "Layer.h"
#include "Properties.h"
#include "renderstate/RenderState.h"
#include "ShadowTessellator.h"
diff --git a/libs/hwui/DeferredLayerUpdater.cpp b/libs/hwui/DeferredLayerUpdater.cpp
index f13cb8d7d1d7..c42ff1a93353 100644
--- a/libs/hwui/DeferredLayerUpdater.cpp
+++ b/libs/hwui/DeferredLayerUpdater.cpp
@@ -15,7 +15,6 @@
*/
#include "DeferredLayerUpdater.h"
-#include "LayerRenderer.h"
#include "renderthread/EglManager.h"
#include "renderthread/RenderTask.h"
#include "utils/PaintUtils.h"
@@ -29,8 +28,8 @@ DeferredLayerUpdater::DeferredLayerUpdater(Layer* layer)
, mNeedsGLContextAttach(false)
, mUpdateTexImage(false)
, mLayer(layer) {
- mWidth = mLayer->layer.getWidth();
- mHeight = mLayer->layer.getHeight();
+ mWidth = mLayer->getWidth();
+ mHeight = mLayer->getHeight();
mBlend = mLayer->isBlend();
mColorFilter = SkSafeRef(mLayer->getColorFilter());
mAlpha = mLayer->getAlpha();
@@ -107,8 +106,22 @@ void DeferredLayerUpdater::doUpdateTexImage() {
LOG_ALWAYS_FATAL_IF(renderTarget != GL_TEXTURE_2D && renderTarget != GL_TEXTURE_EXTERNAL_OES,
"doUpdateTexImage target %x, 2d %x, EXT %x",
renderTarget, GL_TEXTURE_2D, GL_TEXTURE_EXTERNAL_OES);
- LayerRenderer::updateTextureLayer(mLayer, mWidth, mHeight,
- !mBlend, forceFilter, renderTarget, transform);
+ updateLayer(forceFilter, renderTarget, transform);
+ }
+}
+
+void DeferredLayerUpdater::updateLayer(bool forceFilter, GLenum renderTarget,
+ const float* textureTransform) {
+ mLayer->setBlend(mBlend);
+ mLayer->setForceFilter(forceFilter);
+ mLayer->setSize(mWidth, mHeight);
+ mLayer->getTexTransform().load(textureTransform);
+
+ if (renderTarget != mLayer->getRenderTarget()) {
+ mLayer->setRenderTarget(renderTarget);
+ mLayer->bindTexture();
+ mLayer->setFilter(GL_NEAREST, false, true);
+ mLayer->setWrap(GL_CLAMP_TO_EDGE, false, true);
}
}
diff --git a/libs/hwui/DeferredLayerUpdater.h b/libs/hwui/DeferredLayerUpdater.h
index 389e17d12080..2376295b7eff 100644
--- a/libs/hwui/DeferredLayerUpdater.h
+++ b/libs/hwui/DeferredLayerUpdater.h
@@ -92,6 +92,8 @@ public:
void detachSurfaceTexture();
+ void updateLayer(bool forceFilter, GLenum renderTarget, const float* textureTransform);
+
private:
// Generic properties
int mWidth;
diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp
index b911b6825226..4e12bcef8a4f 100644
--- a/libs/hwui/Layer.cpp
+++ b/libs/hwui/Layer.cpp
@@ -41,7 +41,7 @@ Layer::Layer(RenderState& renderState, uint32_t layerWidth, uint32_t layerHeight
// TODO: This is a violation of Android's typical ref counting, but it
// preserves the old inc/dec ref locations. This should be changed...
incStrong(nullptr);
- renderTarget = GL_TEXTURE_2D;
+ renderTarget = GL_NONE; // see DeferredLayerUpdater::updateLayer()
texture.mWidth = layerWidth;
texture.mHeight = layerHeight;
renderState.registerLayer(this);
diff --git a/libs/hwui/Layer.h b/libs/hwui/Layer.h
index 153184149db6..c688a96aa8cd 100644
--- a/libs/hwui/Layer.h
+++ b/libs/hwui/Layer.h
@@ -175,19 +175,6 @@ public:
*/
void onGlContextLost();
- /**
- * Bounds of the layer.
- */
- Rect layer;
- /**
- * Texture coordinates of the layer.
- */
- Rect texCoords;
- /**
- * Clipping rectangle.
- */
- Rect clipRect;
-
private:
Caches& caches;
diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp
deleted file mode 100644
index 8d50dc2ccd94..000000000000
--- a/libs/hwui/LayerRenderer.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "LayerRenderer.h"
-#include "Matrix.h"
-#include "Properties.h"
-#include "Rect.h"
-#include "renderstate/RenderState.h"
-#include "utils/GLUtils.h"
-#include "utils/TraceUtils.h"
-
-#include <ui/Rect.h>
-
-#include <private/hwui/DrawGlInfo.h>
-
-namespace android {
-namespace uirenderer {
-
-Layer* LayerRenderer::createTextureLayer(RenderState& renderState) {
- LAYER_RENDERER_LOGD("Creating new texture layer");
-
- Layer* layer = new Layer(renderState, 0, 0);
- layer->layer.set(0.0f, 0.0f, 0.0f, 0.0f);
- layer->texCoords.set(0.0f, 1.0f, 1.0f, 0.0f);
- layer->setRenderTarget(GL_NONE); // see ::updateTextureLayer()
-
- Caches::getInstance().textureState().activateTexture(0);
- layer->generateTexture();
-
- return layer;
-}
-
-void LayerRenderer::updateTextureLayer(Layer* layer, uint32_t width, uint32_t height,
- bool isOpaque, bool forceFilter, GLenum renderTarget, const float* textureTransform) {
- layer->setBlend(!isOpaque);
- layer->setForceFilter(forceFilter);
- layer->setSize(width, height);
- layer->layer.set(0.0f, 0.0f, width, height);
- layer->getTexTransform().load(textureTransform);
-
- if (renderTarget != layer->getRenderTarget()) {
- layer->setRenderTarget(renderTarget);
- layer->bindTexture();
- layer->setFilter(GL_NEAREST, false, true);
- layer->setWrap(GL_CLAMP_TO_EDGE, false, true);
- }
-}
-
-}; // namespace uirenderer
-}; // namespace android
diff --git a/libs/hwui/LayerRenderer.h b/libs/hwui/LayerRenderer.h
deleted file mode 100644
index 7460e3e47fa2..000000000000
--- a/libs/hwui/LayerRenderer.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <cutils/compiler.h>
-
-#include "Layer.h"
-
-#include <SkBitmap.h>
-
-namespace android {
-namespace uirenderer {
-
-class RenderState;
-
-///////////////////////////////////////////////////////////////////////////////
-// Defines
-///////////////////////////////////////////////////////////////////////////////
-
-// Debug
-#if DEBUG_LAYER_RENDERER
- #define LAYER_RENDERER_LOGD(...) ALOGD(__VA_ARGS__)
-#else
- #define LAYER_RENDERER_LOGD(...)
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// Renderer
-///////////////////////////////////////////////////////////////////////////////
-
-class LayerRenderer {
-public:
- static Layer* createTextureLayer(RenderState& renderState);
- static void updateTextureLayer(Layer* layer, uint32_t width, uint32_t height,
- bool isOpaque, bool forceFilter, GLenum renderTarget, const float* textureTransform);
-}; // class LayerRenderer
-
-}; // namespace uirenderer
-}; // namespace android
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index ff277d111197..38c0e08f400e 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -19,7 +19,6 @@
#include "BakedOpRenderer.h"
#include "DamageAccumulator.h"
#include "Debug.h"
-#include "LayerRenderer.h"
#include "OpDumper.h"
#include "RecordedOp.h"
#include "TreeInfo.h"
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 9b0be49beb07..5e9b9b3c7a2a 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -21,7 +21,6 @@
#include "Caches.h"
#include "DeferredLayerUpdater.h"
#include "EglManager.h"
-#include "LayerRenderer.h"
#include "LayerUpdateQueue.h"
#include "Properties.h"
#include "Readback.h"
@@ -504,7 +503,7 @@ void CanvasContext::trimMemory(RenderThread& thread, int level) {
}
}
-Layer* CanvasContext::createTextureLayer() {
+DeferredLayerUpdater* CanvasContext::createTextureLayer() {
return mRenderPipeline->createTextureLayer();
}
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index 688bf2a0b792..a3b62612b123 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -100,7 +100,7 @@ public:
static void invokeFunctor(RenderThread& thread, Functor* functor);
- Layer* createTextureLayer();
+ DeferredLayerUpdater* createTextureLayer();
ANDROID_API static void setTextureAtlas(RenderThread& thread,
const sp<GraphicBuffer>& buffer, int64_t* map, size_t mapSize);
diff --git a/libs/hwui/renderthread/IRenderPipeline.h b/libs/hwui/renderthread/IRenderPipeline.h
index 0c0fbe9d716c..3250fed8f429 100644
--- a/libs/hwui/renderthread/IRenderPipeline.h
+++ b/libs/hwui/renderthread/IRenderPipeline.h
@@ -57,7 +57,7 @@ public:
virtual bool swapBuffers(const Frame& frame, bool drew, const SkRect& screenDirty,
FrameInfo* currentFrameInfo, bool* requireSwap) = 0;
virtual bool copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap) = 0;
- virtual Layer* createTextureLayer() = 0;
+ virtual DeferredLayerUpdater* createTextureLayer() = 0;
virtual bool setSurface(Surface* window, SwapBehavior swapBehavior) = 0;
virtual void onStop() = 0;
virtual bool isSurfaceReady() = 0;
diff --git a/libs/hwui/renderthread/OpenGLPipeline.cpp b/libs/hwui/renderthread/OpenGLPipeline.cpp
index 3a2b15584d50..36be387d3925 100644
--- a/libs/hwui/renderthread/OpenGLPipeline.cpp
+++ b/libs/hwui/renderthread/OpenGLPipeline.cpp
@@ -18,7 +18,6 @@
#include "DeferredLayerUpdater.h"
#include "EglManager.h"
-#include "LayerRenderer.h"
#include "renderstate/RenderState.h"
#include "Readback.h"
@@ -120,9 +119,13 @@ bool OpenGLPipeline::copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap
== CopyResult::Success;
}
-Layer* OpenGLPipeline::createTextureLayer() {
+DeferredLayerUpdater* OpenGLPipeline::createTextureLayer() {
mEglManager.initialize();
- return LayerRenderer::createTextureLayer(mRenderThread.renderState());
+ Layer* layer = new Layer(mRenderThread.renderState(), 0, 0);
+ Caches::getInstance().textureState().activateTexture(0);
+ layer->generateTexture();
+
+ return new DeferredLayerUpdater(layer);
}
void OpenGLPipeline::onStop() {
diff --git a/libs/hwui/renderthread/OpenGLPipeline.h b/libs/hwui/renderthread/OpenGLPipeline.h
index a6d22ee8b34f..e08fd9b63ffa 100644
--- a/libs/hwui/renderthread/OpenGLPipeline.h
+++ b/libs/hwui/renderthread/OpenGLPipeline.h
@@ -46,7 +46,7 @@ public:
bool swapBuffers(const Frame& frame, bool drew, const SkRect& screenDirty,
FrameInfo* currentFrameInfo, bool* requireSwap) override;
bool copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap) override;
- Layer* createTextureLayer() override;
+ DeferredLayerUpdater* createTextureLayer() override;
bool setSurface(Surface* window, SwapBehavior swapBehavior) override;
void onStop() override;
bool isSurfaceReady() override;
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index d860acd1edd1..ad1af4043d10 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -18,7 +18,6 @@
#include "DeferredLayerUpdater.h"
#include "DisplayList.h"
-#include "LayerRenderer.h"
#include "Readback.h"
#include "Rect.h"
#include "renderthread/CanvasContext.h"
@@ -266,9 +265,7 @@ void RenderProxy::invokeFunctor(Functor* functor, bool waitForCompletion) {
}
CREATE_BRIDGE1(createTextureLayer, CanvasContext* context) {
- Layer* layer = args->context->createTextureLayer();
- if (!layer) return nullptr;
- return new DeferredLayerUpdater(layer);
+ return args->context->createTextureLayer();
}
DeferredLayerUpdater* RenderProxy::createTextureLayer() {
diff --git a/libs/hwui/tests/common/TestUtils.cpp b/libs/hwui/tests/common/TestUtils.cpp
index 930067a9b2cc..5b9b003b4715 100644
--- a/libs/hwui/tests/common/TestUtils.cpp
+++ b/libs/hwui/tests/common/TestUtils.cpp
@@ -18,9 +18,9 @@
#include "hwui/Paint.h"
#include "DeferredLayerUpdater.h"
-#include "LayerRenderer.h"
#include <renderthread/EglManager.h>
+#include <renderthread/OpenGLPipeline.h>
#include <utils/Unicode.h>
namespace android {
@@ -46,20 +46,14 @@ SkColor TestUtils::interpolateColor(float fraction, SkColor start, SkColor end)
sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater(
renderthread::RenderThread& renderThread, uint32_t width, uint32_t height,
const SkMatrix& transform) {
- Layer* layer = LayerRenderer::createTextureLayer(renderThread.renderState());
- layer->getTransform().load(transform);
-
- sp<DeferredLayerUpdater> layerUpdater = new DeferredLayerUpdater(layer);
+ renderthread::OpenGLPipeline pipeline(renderThread);
+ sp<DeferredLayerUpdater> layerUpdater = pipeline.createTextureLayer();
+ layerUpdater->backingLayer()->getTransform().load(transform);
layerUpdater->setSize(width, height);
layerUpdater->setTransform(&transform);
// updateLayer so it's ready to draw
- bool isOpaque = true;
- bool forceFilter = true;
- GLenum renderTarget = GL_TEXTURE_EXTERNAL_OES;
- LayerRenderer::updateTextureLayer(layer, width, height, isOpaque, forceFilter,
- renderTarget, Matrix4::identity().data);
-
+ layerUpdater->updateLayer(true, GL_TEXTURE_EXTERNAL_OES, Matrix4::identity().data);
return layerUpdater;
}
@@ -114,17 +108,12 @@ void TestUtils::drawUtf8ToCanvas(Canvas* canvas, const char* text,
void TestUtils::TestTask::run() {
// RenderState only valid once RenderThread is running, so queried here
renderthread::RenderThread& renderThread = renderthread::RenderThread::getInstance();
- bool hasEglContext = renderThread.eglManager().hasEglContext();
- RenderState& renderState = renderThread.renderState();
- if (!hasEglContext) {
- renderState.onGLContextCreated();
- }
+ renderThread.eglManager().initialize();
rtCallback(renderThread);
- if (!hasEglContext) {
- renderState.flush(Caches::FlushMode::Full);
- renderState.onGLContextDestroyed();
- }
+
+ renderThread.renderState().flush(Caches::FlushMode::Full);
+ renderThread.eglManager().destroy();
}
std::unique_ptr<uint16_t[]> TestUtils::asciiToUtf16(const char* str) {
diff --git a/libs/hwui/tests/unit/DeferredLayerUpdaterTests.cpp b/libs/hwui/tests/unit/DeferredLayerUpdaterTests.cpp
new file mode 100644
index 000000000000..0326aa91bb18
--- /dev/null
+++ b/libs/hwui/tests/unit/DeferredLayerUpdaterTests.cpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "DeferredLayerUpdater.h"
+
+#include "renderthread/OpenGLPipeline.h"
+#include "tests/common/TestUtils.h"
+
+#include <gtest/gtest.h>
+
+using namespace android;
+using namespace android::uirenderer;
+
+RENDERTHREAD_TEST(DeferredLayerUpdater, updateLayer) {
+ renderthread::OpenGLPipeline pipeline(renderThread);
+ sp<DeferredLayerUpdater> layerUpdater = pipeline.createTextureLayer();
+ layerUpdater->setSize(100, 100);
+ layerUpdater->setBlend(true);
+
+
+ // updates are deferred so the backing layer should still be in its default state
+ EXPECT_EQ((uint32_t)GL_NONE, layerUpdater->backingLayer()->getRenderTarget());
+ EXPECT_EQ(0u, layerUpdater->backingLayer()->getWidth());
+ EXPECT_EQ(0u, layerUpdater->backingLayer()->getHeight());
+ EXPECT_FALSE(layerUpdater->backingLayer()->getForceFilter());
+ EXPECT_FALSE(layerUpdater->backingLayer()->isBlend());
+ EXPECT_EQ(Matrix4::identity(), layerUpdater->backingLayer()->getTexTransform());
+
+ // push the deferred updates to the layer
+ Matrix4 scaledMatrix;
+ scaledMatrix.loadScale(0.5, 0.5, 0.0);
+ layerUpdater->updateLayer(true, GL_TEXTURE_EXTERNAL_OES, scaledMatrix.data);
+
+ // the backing layer should now have all the properties applied.
+ EXPECT_EQ((uint32_t)GL_TEXTURE_EXTERNAL_OES, layerUpdater->backingLayer()->getRenderTarget());
+ EXPECT_EQ(100u, layerUpdater->backingLayer()->getWidth());
+ EXPECT_EQ(100u, layerUpdater->backingLayer()->getHeight());
+ EXPECT_TRUE(layerUpdater->backingLayer()->getForceFilter());
+ EXPECT_TRUE(layerUpdater->backingLayer()->isBlend());
+ EXPECT_EQ(scaledMatrix, layerUpdater->backingLayer()->getTexTransform());
+}
diff --git a/libs/hwui/tests/unit/RenderNodeTests.cpp b/libs/hwui/tests/unit/RenderNodeTests.cpp
index 132601efb543..1b34b2ed6f5c 100644
--- a/libs/hwui/tests/unit/RenderNodeTests.cpp
+++ b/libs/hwui/tests/unit/RenderNodeTests.cpp
@@ -104,9 +104,10 @@ TEST(RenderNode, releasedCallback) {
}
RENDERTHREAD_TEST(RenderNode, prepareTree_nullableDisplayList) {
+ auto rootNode = TestUtils::createNode(0, 0, 200, 400, nullptr);
ContextFactory contextFactory;
std::unique_ptr<CanvasContext> canvasContext(CanvasContext::create(
- renderThread, false, nullptr, &contextFactory));
+ renderThread, false, rootNode.get(), &contextFactory));
TreeInfo info(TreeInfo::MODE_RT_ONLY, *canvasContext.get());
DamageAccumulator damageAccumulator;
info.damageAccumulator = &damageAccumulator;