summaryrefslogtreecommitdiff
path: root/libs/renderengine/RenderEngine.cpp
diff options
context:
space:
mode:
author Sally Qi <sallyqi@google.com> 2021-08-05 16:45:57 -0700
committer Sally Qi <sallyqi@google.com> 2021-08-19 10:19:58 -0700
commit4cabdd0dd2b0f4040845e007095dc1cf0ae2df4b (patch)
tree12d1ddee04dcba9ee7801064513d8929a2fc7da1 /libs/renderengine/RenderEngine.cpp
parent8d7957078701de11d045a8c8d10f0c35a32c5074 (diff)
First patch for async renderengine.
1. return a std::future object from DrawLayers() instead to make it asynchronously 2. retire drawFence value from drawLayers() parameter list. Bug: 180657548 Test: android.hardware.graphics.composer@2.2-vts, libcompositionengine_test, libsurfaceflinger_unittest and librenderengine_test pass Change-Id: If63c11762d1cce7b053cc72aaeaed6dd7904877f
Diffstat (limited to 'libs/renderengine/RenderEngine.cpp')
-rw-r--r--libs/renderengine/RenderEngine.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/libs/renderengine/RenderEngine.cpp b/libs/renderengine/RenderEngine.cpp
index 0c5a851c41..2174df5515 100644
--- a/libs/renderengine/RenderEngine.cpp
+++ b/libs/renderengine/RenderEngine.cpp
@@ -95,5 +95,16 @@ void RenderEngine::validateOutputBufferUsage(const sp<GraphicBuffer>& buffer) {
"output buffer not gpu writeable");
}
+std::future<RenderEngineResult> RenderEngine::drawLayers(
+ const DisplaySettings& display, const std::vector<const LayerSettings*>& layers,
+ const std::shared_ptr<ExternalTexture>& buffer, const bool useFramebufferCache,
+ base::unique_fd&& bufferFence) {
+ const auto resultPromise = std::make_shared<std::promise<RenderEngineResult>>();
+ std::future<RenderEngineResult> resultFuture = resultPromise->get_future();
+ drawLayersInternal(std::move(resultPromise), display, layers, buffer, useFramebufferCache,
+ std::move(bufferFence));
+ return resultFuture;
+}
+
} // namespace renderengine
} // namespace android