diff options
| -rw-r--r-- | libs/renderengine/skia/AutoBackendTexture.cpp | 14 | ||||
| -rw-r--r-- | libs/renderengine/skia/AutoBackendTexture.h | 15 | ||||
| -rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.cpp | 5 |
3 files changed, 15 insertions, 19 deletions
diff --git a/libs/renderengine/skia/AutoBackendTexture.cpp b/libs/renderengine/skia/AutoBackendTexture.cpp index ee95e59d90..26b280d520 100644 --- a/libs/renderengine/skia/AutoBackendTexture.cpp +++ b/libs/renderengine/skia/AutoBackendTexture.cpp @@ -37,7 +37,7 @@ namespace skia { AutoBackendTexture::AutoBackendTexture(GrDirectContext* context, AHardwareBuffer* buffer, bool isOutputBuffer, CleanupManager& cleanupMgr) - : mCleanupMgr(cleanupMgr), mIsOutputBuffer(isOutputBuffer) { + : mGrContext(context), mCleanupMgr(cleanupMgr), mIsOutputBuffer(isOutputBuffer) { ATRACE_CALL(); AHardwareBuffer_Desc desc; AHardwareBuffer_describe(buffer, &desc); @@ -158,12 +158,11 @@ void logFatalTexture(const char* msg, const GrBackendTexture& tex, ui::Dataspace } } -sk_sp<SkImage> AutoBackendTexture::makeImage(ui::Dataspace dataspace, SkAlphaType alphaType, - GrDirectContext* context) { +sk_sp<SkImage> AutoBackendTexture::makeImage(ui::Dataspace dataspace, SkAlphaType alphaType) { ATRACE_CALL(); if (mBackendTexture.isValid()) { - mUpdateProc(mImageCtx, context); + mUpdateProc(mImageCtx, mGrContext); } auto colorType = mColorType; @@ -174,7 +173,7 @@ sk_sp<SkImage> AutoBackendTexture::makeImage(ui::Dataspace dataspace, SkAlphaTyp } sk_sp<SkImage> image = - SkImages::BorrowTextureFrom(context, mBackendTexture, kTopLeft_GrSurfaceOrigin, + SkImages::BorrowTextureFrom(mGrContext, mBackendTexture, kTopLeft_GrSurfaceOrigin, colorType, alphaType, toSkColorSpace(dataspace), releaseImageProc, this); if (image.get()) { @@ -190,13 +189,12 @@ sk_sp<SkImage> AutoBackendTexture::makeImage(ui::Dataspace dataspace, SkAlphaTyp return mImage; } -sk_sp<SkSurface> AutoBackendTexture::getOrCreateSurface(ui::Dataspace dataspace, - GrDirectContext* context) { +sk_sp<SkSurface> AutoBackendTexture::getOrCreateSurface(ui::Dataspace dataspace) { ATRACE_CALL(); LOG_ALWAYS_FATAL_IF(!mIsOutputBuffer, "You can't generate a SkSurface for a read-only texture"); if (!mSurface.get() || mDataspace != dataspace) { sk_sp<SkSurface> surface = - SkSurfaces::WrapBackendTexture(context, mBackendTexture, + SkSurfaces::WrapBackendTexture(mGrContext, mBackendTexture, kTopLeft_GrSurfaceOrigin, 0, mColorType, toSkColorSpace(dataspace), nullptr, releaseSurfaceProc, this); diff --git a/libs/renderengine/skia/AutoBackendTexture.h b/libs/renderengine/skia/AutoBackendTexture.h index 509ac40f77..17e183a64e 100644 --- a/libs/renderengine/skia/AutoBackendTexture.h +++ b/libs/renderengine/skia/AutoBackendTexture.h @@ -95,14 +95,13 @@ public: // Makes a new SkImage from the texture content. // As SkImages are immutable but buffer content is not, we create // a new SkImage every time. - sk_sp<SkImage> makeImage(ui::Dataspace dataspace, SkAlphaType alphaType, - GrDirectContext* context) { - return mTexture->makeImage(dataspace, alphaType, context); + sk_sp<SkImage> makeImage(ui::Dataspace dataspace, SkAlphaType alphaType) { + return mTexture->makeImage(dataspace, alphaType); } // Makes a new SkSurface from the texture content, if needed. - sk_sp<SkSurface> getOrCreateSurface(ui::Dataspace dataspace, GrDirectContext* context) { - return mTexture->getOrCreateSurface(dataspace, context); + sk_sp<SkSurface> getOrCreateSurface(ui::Dataspace dataspace) { + return mTexture->getOrCreateSurface(dataspace); } SkColorType colorType() const { return mTexture->mColorType; } @@ -130,17 +129,17 @@ private: // Makes a new SkImage from the texture content. // As SkImages are immutable but buffer content is not, we create // a new SkImage every time. - sk_sp<SkImage> makeImage(ui::Dataspace dataspace, SkAlphaType alphaType, - GrDirectContext* context); + sk_sp<SkImage> makeImage(ui::Dataspace dataspace, SkAlphaType alphaType); // Makes a new SkSurface from the texture content, if needed. - sk_sp<SkSurface> getOrCreateSurface(ui::Dataspace dataspace, GrDirectContext* context); + sk_sp<SkSurface> getOrCreateSurface(ui::Dataspace dataspace); GrBackendTexture mBackendTexture; GrAHardwareBufferUtils::DeleteImageProc mDeleteProc; GrAHardwareBufferUtils::UpdateImageProc mUpdateProc; GrAHardwareBufferUtils::TexImageCtx mImageCtx; + const GrDirectContext* mGrContext = nullptr; CleanupManager& mCleanupMgr; static void releaseSurfaceProc(SkSurface::ReleaseContext releaseContext); diff --git a/libs/renderengine/skia/SkiaRenderEngine.cpp b/libs/renderengine/skia/SkiaRenderEngine.cpp index 6e393f03fa..aeedb0369e 100644 --- a/libs/renderengine/skia/SkiaRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaRenderEngine.cpp @@ -679,8 +679,7 @@ void SkiaRenderEngine::drawLayersInternal( // wait on the buffer to be ready to use prior to using it waitFence(grContext, bufferFence); - sk_sp<SkSurface> dstSurface = - surfaceTextureRef->getOrCreateSurface(display.outputDataspace, grContext); + sk_sp<SkSurface> dstSurface = surfaceTextureRef->getOrCreateSurface(display.outputDataspace); SkCanvas* dstCanvas = mCapture->tryCapture(dstSurface.get()); if (dstCanvas == nullptr) { @@ -972,7 +971,7 @@ void SkiaRenderEngine::drawLayersInternal( : item.isOpaque ? kOpaque_SkAlphaType : item.usePremultipliedAlpha ? kPremul_SkAlphaType : kUnpremul_SkAlphaType; - sk_sp<SkImage> image = imageTextureRef->makeImage(layerDataspace, alphaType, grContext); + sk_sp<SkImage> image = imageTextureRef->makeImage(layerDataspace, alphaType); auto texMatrix = getSkM44(item.textureTransform).asM33(); // textureTansform was intended to be passed directly into a shader, so when |