diff options
author | 2021-08-05 16:45:57 -0700 | |
---|---|---|
committer | 2021-08-19 10:19:58 -0700 | |
commit | 4cabdd0dd2b0f4040845e007095dc1cf0ae2df4b (patch) | |
tree | 12d1ddee04dcba9ee7801064513d8929a2fc7da1 /libs/renderengine/RenderEngine.cpp | |
parent | 8d7957078701de11d045a8c8d10f0c35a32c5074 (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.cpp | 11 |
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 |