summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Daniel <egdaniel@google.com>2021-04-09 13:23:41 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-04-09 13:23:41 +0000
commitd4fd1b0ce29875d2f533fe2ead4656fceca62ba9 (patch)
tree8bbfd0f070de7f1ef38f5f20cfae6449ae3017c8
parent303a9d787c08d3e1d354f530494c5d73f19f7374 (diff)
parentd2317a49836f2ebe073010af2906b6ff1ec50e3d (diff)
Merge "Make SkiaVulkanPipeline go through RenderThread to get VulkanManger." into sc-dev
-rw-r--r--libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp23
-rw-r--r--libs/hwui/pipeline/skia/SkiaVulkanPipeline.h3
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;
};