Loading libs/hwui/pipeline/skia/GLFunctorDrawable.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -56,7 +56,8 @@ static void GetFboDetails(SkCanvas* canvas, GLuint* outFboID, SkISize* outFboSiz } void GLFunctorDrawable::onDraw(SkCanvas* canvas) { if (canvas->getGrContext() == nullptr) { GrDirectContext* directContext = GrAsDirectContext(canvas->recordingContext()); if (directContext == nullptr) { // We're dumping a picture, render a light-blue rectangle instead // TODO: Draw the WebView text on top? Seemingly complicated as SkPaint doesn't // seem to have a default typeface that works. We only ever use drawGlyphs, which Loading Loading @@ -87,7 +88,7 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) { SkImageInfo surfaceInfo = canvas->imageInfo().makeWH(clipBounds.width(), clipBounds.height()); tmpSurface = SkSurface::MakeRenderTarget(canvas->getGrContext(), SkBudgeted::kYes, surfaceInfo); SkSurface::MakeRenderTarget(directContext, SkBudgeted::kYes, surfaceInfo); tmpSurface->getCanvas()->clear(SK_ColorTRANSPARENT); GrGLFramebufferInfo fboInfo; Loading Loading @@ -141,7 +142,7 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) { // notify Skia that we just updated the FBO and stencil const uint32_t grState = kStencil_GrGLBackendState | kRenderTarget_GrGLBackendState; canvas->getGrContext()->resetContext(grState); directContext->resetContext(grState); SkCanvas* tmpCanvas = canvas; if (tmpSurface) { Loading Loading @@ -188,7 +189,7 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) { glClear(GL_STENCIL_BUFFER_BIT); } canvas->getGrContext()->resetContext(); directContext->resetContext(); // if there were unclipped save layers involved we draw our offscreen surface to the canvas if (tmpSurface) { Loading libs/hwui/pipeline/skia/SkiaPipeline.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ void SkiaPipeline::renderLayers(const LightGeometry& lightGeometry, } void SkiaPipeline::renderLayersImpl(const LayerUpdateQueue& layers, bool opaque) { sk_sp<GrContext> cachedContext; sk_sp<GrDirectContext> cachedContext; // Render all layers that need to be updated, in order. for (size_t i = 0; i < layers.entries().size(); i++) { Loading Loading @@ -142,7 +142,8 @@ void SkiaPipeline::renderLayersImpl(const LayerUpdateQueue& layers, bool opaque) // cache the current context so that we can defer flushing it until // either all the layers have been rendered or the context changes GrContext* currentContext = layerNode->getLayerSurface()->getCanvas()->getGrContext(); GrDirectContext* currentContext = GrAsDirectContext(layerNode->getLayerSurface()->getCanvas()->recordingContext()); if (cachedContext.get() != currentContext) { if (cachedContext.get()) { ATRACE_NAME("flush layers (context changed)"); Loading Loading @@ -201,7 +202,7 @@ bool SkiaPipeline::createOrUpdateLayer(RenderNode* node, const DamageAccumulator } void SkiaPipeline::prepareToDraw(const RenderThread& thread, Bitmap* bitmap) { GrContext* context = thread.getGrContext(); GrDirectContext* context = thread.getGrContext(); if (context) { ATRACE_FORMAT("Bitmap#prepareToDraw %dx%d", bitmap->width(), bitmap->height()); auto image = bitmap->makeImage(); Loading libs/hwui/pipeline/skia/VkFunctorDrawable.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ void VkFunctorDrawable::onDraw(SkCanvas* canvas) { // "VkFunctorDrawable::onDraw" is not invoked for the most common case, when drawing in a GPU // canvas. if (canvas->getGrContext() == nullptr) { if (canvas->recordingContext() == nullptr) { // We're dumping a picture, render a light-blue rectangle instead SkPaint paint; paint.setColor(0xFF81D4FA); Loading libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ void VkInteropFunctorDrawable::vkInvokeFunctor(Functor* functor) { void VkInteropFunctorDrawable::onDraw(SkCanvas* canvas) { ATRACE_CALL(); if (canvas->getGrContext() == nullptr) { if (canvas->recordingContext() == nullptr) { SkDEBUGF(("Attempting to draw VkInteropFunctor into an unsupported surface")); return; } Loading libs/hwui/renderthread/CanvasContext.h +1 −1 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ public: * If Properties::isSkiaEnabled() is true then this will return the Skia * grContext associated with the current RenderPipeline. */ GrContext* getGrContext() const { return mRenderThread.getGrContext(); } GrDirectContext* getGrContext() const { return mRenderThread.getGrContext(); } // Won't take effect until next EGLSurface creation void setSwapBehavior(SwapBehavior swapBehavior); Loading Loading
libs/hwui/pipeline/skia/GLFunctorDrawable.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -56,7 +56,8 @@ static void GetFboDetails(SkCanvas* canvas, GLuint* outFboID, SkISize* outFboSiz } void GLFunctorDrawable::onDraw(SkCanvas* canvas) { if (canvas->getGrContext() == nullptr) { GrDirectContext* directContext = GrAsDirectContext(canvas->recordingContext()); if (directContext == nullptr) { // We're dumping a picture, render a light-blue rectangle instead // TODO: Draw the WebView text on top? Seemingly complicated as SkPaint doesn't // seem to have a default typeface that works. We only ever use drawGlyphs, which Loading Loading @@ -87,7 +88,7 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) { SkImageInfo surfaceInfo = canvas->imageInfo().makeWH(clipBounds.width(), clipBounds.height()); tmpSurface = SkSurface::MakeRenderTarget(canvas->getGrContext(), SkBudgeted::kYes, surfaceInfo); SkSurface::MakeRenderTarget(directContext, SkBudgeted::kYes, surfaceInfo); tmpSurface->getCanvas()->clear(SK_ColorTRANSPARENT); GrGLFramebufferInfo fboInfo; Loading Loading @@ -141,7 +142,7 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) { // notify Skia that we just updated the FBO and stencil const uint32_t grState = kStencil_GrGLBackendState | kRenderTarget_GrGLBackendState; canvas->getGrContext()->resetContext(grState); directContext->resetContext(grState); SkCanvas* tmpCanvas = canvas; if (tmpSurface) { Loading Loading @@ -188,7 +189,7 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) { glClear(GL_STENCIL_BUFFER_BIT); } canvas->getGrContext()->resetContext(); directContext->resetContext(); // if there were unclipped save layers involved we draw our offscreen surface to the canvas if (tmpSurface) { Loading
libs/hwui/pipeline/skia/SkiaPipeline.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ void SkiaPipeline::renderLayers(const LightGeometry& lightGeometry, } void SkiaPipeline::renderLayersImpl(const LayerUpdateQueue& layers, bool opaque) { sk_sp<GrContext> cachedContext; sk_sp<GrDirectContext> cachedContext; // Render all layers that need to be updated, in order. for (size_t i = 0; i < layers.entries().size(); i++) { Loading Loading @@ -142,7 +142,8 @@ void SkiaPipeline::renderLayersImpl(const LayerUpdateQueue& layers, bool opaque) // cache the current context so that we can defer flushing it until // either all the layers have been rendered or the context changes GrContext* currentContext = layerNode->getLayerSurface()->getCanvas()->getGrContext(); GrDirectContext* currentContext = GrAsDirectContext(layerNode->getLayerSurface()->getCanvas()->recordingContext()); if (cachedContext.get() != currentContext) { if (cachedContext.get()) { ATRACE_NAME("flush layers (context changed)"); Loading Loading @@ -201,7 +202,7 @@ bool SkiaPipeline::createOrUpdateLayer(RenderNode* node, const DamageAccumulator } void SkiaPipeline::prepareToDraw(const RenderThread& thread, Bitmap* bitmap) { GrContext* context = thread.getGrContext(); GrDirectContext* context = thread.getGrContext(); if (context) { ATRACE_FORMAT("Bitmap#prepareToDraw %dx%d", bitmap->width(), bitmap->height()); auto image = bitmap->makeImage(); Loading
libs/hwui/pipeline/skia/VkFunctorDrawable.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ void VkFunctorDrawable::onDraw(SkCanvas* canvas) { // "VkFunctorDrawable::onDraw" is not invoked for the most common case, when drawing in a GPU // canvas. if (canvas->getGrContext() == nullptr) { if (canvas->recordingContext() == nullptr) { // We're dumping a picture, render a light-blue rectangle instead SkPaint paint; paint.setColor(0xFF81D4FA); Loading
libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ void VkInteropFunctorDrawable::vkInvokeFunctor(Functor* functor) { void VkInteropFunctorDrawable::onDraw(SkCanvas* canvas) { ATRACE_CALL(); if (canvas->getGrContext() == nullptr) { if (canvas->recordingContext() == nullptr) { SkDEBUGF(("Attempting to draw VkInteropFunctor into an unsupported surface")); return; } Loading
libs/hwui/renderthread/CanvasContext.h +1 −1 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ public: * If Properties::isSkiaEnabled() is true then this will return the Skia * grContext associated with the current RenderPipeline. */ GrContext* getGrContext() const { return mRenderThread.getGrContext(); } GrDirectContext* getGrContext() const { return mRenderThread.getGrContext(); } // Won't take effect until next EGLSurface creation void setSwapBehavior(SwapBehavior swapBehavior); Loading