Update hwui_unit_tests to support running with Vulkan backend.
Added Macros for RENDERTHREAD_TESTS which run these tests using specific backends.
RENDERTHREAD_TESTS - Runs OpenGL, SkiaGL, and SkiaVulkan
RENDERTHREAD_SKIA_TESTS - Runs SkiaGL and SkiaVulkan
RENDERTHREAD_OPENGL_TESTS - Runs OpenGL
Test: manual running of hwui_unit_tests
Change-Id: Ia7420ee7a38803a15e2d58394d14b38cae8208d3
diff --git a/libs/hwui/tests/common/TestUtils.cpp b/libs/hwui/tests/common/TestUtils.cpp
index 5f6bcb3..275ce16 100644
--- a/libs/hwui/tests/common/TestUtils.cpp
+++ b/libs/hwui/tests/common/TestUtils.cpp
@@ -21,6 +21,9 @@
#include <renderthread/EglManager.h>
#include <renderthread/OpenGLPipeline.h>
+#include <pipeline/skia/SkiaOpenGLPipeline.h>
+#include <pipeline/skia/SkiaVulkanPipeline.h>
+#include <renderthread/VulkanManager.h>
#include <utils/Unicode.h>
#include <SkClipStack.h>
@@ -47,10 +50,24 @@
}
sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater(
+ renderthread::RenderThread& renderThread) {
+ android::uirenderer::renderthread::IRenderPipeline* pipeline;
+ if (Properties::getRenderPipelineType() == RenderPipelineType::OpenGL) {
+ pipeline = new renderthread::OpenGLPipeline(renderThread);
+ } else if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaGL) {
+ pipeline = new skiapipeline::SkiaOpenGLPipeline(renderThread);
+ } else {
+ pipeline = new skiapipeline::SkiaVulkanPipeline(renderThread);
+ }
+ sp<DeferredLayerUpdater> layerUpdater = pipeline->createTextureLayer();
+ delete pipeline;
+ return layerUpdater;
+}
+
+sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater(
renderthread::RenderThread& renderThread, uint32_t width, uint32_t height,
const SkMatrix& transform) {
- renderthread::OpenGLPipeline pipeline(renderThread);
- sp<DeferredLayerUpdater> layerUpdater = pipeline.createTextureLayer();
+ sp<DeferredLayerUpdater> layerUpdater = createTextureLayerUpdater(renderThread);
layerUpdater->backingLayer()->getTransform().load(transform);
layerUpdater->setSize(width, height);
layerUpdater->setTransform(&transform);
@@ -111,12 +128,20 @@
void TestUtils::TestTask::run() {
// RenderState only valid once RenderThread is running, so queried here
renderthread::RenderThread& renderThread = renderthread::RenderThread::getInstance();
- renderThread.eglManager().initialize();
+ if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) {
+ renderThread.vulkanManager().initialize();
+ } else {
+ renderThread.eglManager().initialize();
+ }
rtCallback(renderThread);
- renderThread.renderState().flush(Caches::FlushMode::Full);
- renderThread.eglManager().destroy();
+ if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) {
+ renderThread.vulkanManager().destroy();
+ } else {
+ renderThread.renderState().flush(Caches::FlushMode::Full);
+ renderThread.eglManager().destroy();
+ }
}
std::unique_ptr<uint16_t[]> TestUtils::asciiToUtf16(const char* str) {