diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index fa82627..c231f6f 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -490,6 +490,16 @@
     task->run();
 }
 
+Layer* CanvasContext::createRenderLayer(int width, int height) {
+    requireGlContext();
+    return LayerRenderer::createRenderLayer(width, height);
+}
+
+Layer* CanvasContext::createTextureLayer() {
+    requireGlContext();
+    return LayerRenderer::createTextureLayer();
+}
+
 void CanvasContext::requireGlContext() {
     if (mEglSurface != EGL_NO_SURFACE) {
         mGlobalContext->makeCurrent(mEglSurface);
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index eb9096d..6f1c37f 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -35,6 +35,7 @@
 class DisplayListData;
 class OpenGLRenderer;
 class Rect;
+class Layer;
 
 namespace renderthread {
 
@@ -76,6 +77,9 @@
 
     void runWithGlContext(RenderTask* task);
 
+    Layer* createRenderLayer(int width, int height);
+    Layer* createTextureLayer();
+
 private:
     void setSurface(EGLNativeWindowType window);
     void swapBuffers();
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 489dc90..e817e61 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -202,10 +202,9 @@
     postAndWait(task);
 }
 
-CREATE_BRIDGE2(createDisplayListLayer, int width, int height) {
-    Layer* layer = LayerRenderer::createRenderLayer(args->width, args->height);
+CREATE_BRIDGE3(createDisplayListLayer, CanvasContext* context, int width, int height) {
+    Layer* layer = args->context->createRenderLayer(args->width, args->height);
     if (!layer) return 0;
-
     return new DeferredLayerUpdater(layer);
 }
 
@@ -213,20 +212,22 @@
     SETUP_TASK(createDisplayListLayer);
     args->width = width;
     args->height = height;
+    args->context = mContext;
     void* retval = postAndWait(task);
     DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval);
     mDrawFrameTask.addLayer(layer);
     return layer;
 }
 
-CREATE_BRIDGE0(createTextureLayer) {
-    Layer* layer = LayerRenderer::createTextureLayer();
+CREATE_BRIDGE1(createTextureLayer, CanvasContext* context) {
+    Layer* layer = args->context->createTextureLayer();
     if (!layer) return 0;
     return new DeferredLayerUpdater(layer);
 }
 
 DeferredLayerUpdater* RenderProxy::createTextureLayer() {
     SETUP_TASK(createTextureLayer);
+    args->context = mContext;
     void* retval = postAndWait(task);
     DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval);
     mDrawFrameTask.addLayer(layer);
