diff options
author | Greg Daniel <egdaniel@google.com> | 2021-04-09 13:23:41 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-04-09 13:23:41 +0000 |
commit | d4fd1b0ce29875d2f533fe2ead4656fceca62ba9 (patch) | |
tree | 8bbfd0f070de7f1ef38f5f20cfae6449ae3017c8 | |
parent | 303a9d787c08d3e1d354f530494c5d73f19f7374 (diff) | |
parent | d2317a49836f2ebe073010af2906b6ff1ec50e3d (diff) |
Merge "Make SkiaVulkanPipeline go through RenderThread to get VulkanManger." into sc-dev
-rw-r--r-- | libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp | 23 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/SkiaVulkanPipeline.h | 3 |
2 files changed, 15 insertions, 11 deletions
diff --git a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp index 1bd943f4c21d..30a3fc5ac93f 100644 --- a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp +++ b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp @@ -43,8 +43,7 @@ namespace android { namespace uirenderer { namespace skiapipeline { -SkiaVulkanPipeline::SkiaVulkanPipeline(renderthread::RenderThread& thread) - : SkiaPipeline(thread), mVkManager(thread.vulkanManager()) { +SkiaVulkanPipeline::SkiaVulkanPipeline(renderthread::RenderThread& thread) : SkiaPipeline(thread) { thread.renderState().registerContextCallback(this); } @@ -52,13 +51,17 @@ SkiaVulkanPipeline::~SkiaVulkanPipeline() { mRenderThread.renderState().removeContextCallback(this); } +VulkanManager& SkiaVulkanPipeline::vulkanManager() { + return mRenderThread.vulkanManager(); +} + MakeCurrentResult SkiaVulkanPipeline::makeCurrent() { return MakeCurrentResult::AlreadyCurrent; } Frame SkiaVulkanPipeline::getFrame() { LOG_ALWAYS_FATAL_IF(mVkSurface == nullptr, "getFrame() called on a context with no surface!"); - return mVkManager.dequeueNextBuffer(mVkSurface); + return vulkanManager().dequeueNextBuffer(mVkSurface); } bool SkiaVulkanPipeline::draw(const Frame& frame, const SkRect& screenDirty, const SkRect& dirty, @@ -85,7 +88,7 @@ bool SkiaVulkanPipeline::draw(const Frame& frame, const SkRect& screenDirty, con { ATRACE_NAME("flush commands"); - mVkManager.finishFrame(backBuffer.get()); + vulkanManager().finishFrame(backBuffer.get()); } layerUpdateQueue->clear(); @@ -106,7 +109,7 @@ bool SkiaVulkanPipeline::swapBuffers(const Frame& frame, bool drew, const SkRect currentFrameInfo->markSwapBuffers(); if (*requireSwap) { - mVkManager.swapBuffers(mVkSurface, screenDirty); + vulkanManager().swapBuffers(mVkSurface, screenDirty); } return *requireSwap; @@ -122,15 +125,15 @@ void SkiaVulkanPipeline::onStop() {} bool SkiaVulkanPipeline::setSurface(ANativeWindow* surface, SwapBehavior swapBehavior) { if (mVkSurface) { - mVkManager.destroySurface(mVkSurface); + vulkanManager().destroySurface(mVkSurface); mVkSurface = nullptr; } if (surface) { mRenderThread.requireVkContext(); mVkSurface = - mVkManager.createSurface(surface, mColorMode, mSurfaceColorSpace, mSurfaceColorType, - mRenderThread.getGrContext(), 0); + vulkanManager().createSurface(surface, mColorMode, mSurfaceColorSpace, + mSurfaceColorType, mRenderThread.getGrContext(), 0); } return mVkSurface != nullptr; @@ -141,7 +144,7 @@ bool SkiaVulkanPipeline::isSurfaceReady() { } bool SkiaVulkanPipeline::isContextReady() { - return CC_LIKELY(mVkManager.hasVkContext()); + return CC_LIKELY(vulkanManager().hasVkContext()); } void SkiaVulkanPipeline::invokeFunctor(const RenderThread& thread, Functor* functor) { @@ -156,7 +159,7 @@ sk_sp<Bitmap> SkiaVulkanPipeline::allocateHardwareBitmap(renderthread::RenderThr void SkiaVulkanPipeline::onContextDestroyed() { if (mVkSurface) { - mVkManager.destroySurface(mVkSurface); + vulkanManager().destroySurface(mVkSurface); mVkSurface = nullptr; } } diff --git a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h index 6268daa6213f..56d42e013f31 100644 --- a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h +++ b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h @@ -55,7 +55,8 @@ protected: void onContextDestroyed() override; private: - renderthread::VulkanManager& mVkManager; + renderthread::VulkanManager& vulkanManager(); + renderthread::VulkanSurface* mVkSurface = nullptr; }; |