Split RenderEngineType into two enums

Primary motivation is to prepare for making switching RenderEngine to
use Graphite. This is orthogonal to whether or not we're using
RenderEngineThreaded. The enum already encodes orthogonal types, so
split them up in the natural way, rather than adding more combos.

Replace RenderEngine::getRenderEngineType() with isThreaded(), as the
only caller really wants to know whether it's threaded. This allows
fixing a bug where the SKIA_VK_THREADED backend didn't offload
renderScreenImpl for no good reason. (This is not a behavior change
for users or dogfooders, since no one is currently using
SKIA_VK_THREADED.)

Add a vulkan_renderengine option to FlagManager, which will switch
RenderEngine to use Skia's *Ganesh* Vulkan backend. Though this is not
what we intend to ship, this will allow us to get more soak time on
Vulkan before making the switch to Graphite.

Update the comments for PROPERTY_DEBUG_RENDERENGINE_BACKEND, which were
already out of date. Specify that it will *override* the default
settings, which will now be determined by flags.

Bug: 293371537
Test: manual (sysprops)
Test: atest librenderengine_test
Test: atest librenderengine_bench
Change-Id: Ib9b8abb25f4894f1b50b6286720c2abf89ca74e2
diff --git a/libs/renderengine/RenderEngine.cpp b/libs/renderengine/RenderEngine.cpp
index 3e1ac33..233134d 100644
--- a/libs/renderengine/RenderEngine.cpp
+++ b/libs/renderengine/RenderEngine.cpp
@@ -28,28 +28,28 @@
 namespace renderengine {
 
 std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArgs& args) {
-    switch (args.renderEngineType) {
-        case RenderEngineType::SKIA_GL:
+    if (args.threaded == Threaded::YES) {
+        switch (args.graphicsApi) {
+            case GraphicsApi::GL:
+                ALOGD("Threaded RenderEngine with SkiaGL Backend");
+                return renderengine::threaded::RenderEngineThreaded::create([args]() {
+                    return android::renderengine::skia::SkiaGLRenderEngine::create(args);
+                });
+            case GraphicsApi::VK:
+                ALOGD("Threaded RenderEngine with SkiaVK Backend");
+                return renderengine::threaded::RenderEngineThreaded::create([args]() {
+                    return android::renderengine::skia::SkiaVkRenderEngine::create(args);
+                });
+        }
+    }
+
+    switch (args.graphicsApi) {
+        case GraphicsApi::GL:
             ALOGD("RenderEngine with SkiaGL Backend");
             return renderengine::skia::SkiaGLRenderEngine::create(args);
-        case RenderEngineType::SKIA_VK:
+        case GraphicsApi::VK:
             ALOGD("RenderEngine with SkiaVK Backend");
             return renderengine::skia::SkiaVkRenderEngine::create(args);
-        case RenderEngineType::SKIA_GL_THREADED: {
-            ALOGD("Threaded RenderEngine with SkiaGL Backend");
-            return renderengine::threaded::RenderEngineThreaded::create(
-                    [args]() {
-                        return android::renderengine::skia::SkiaGLRenderEngine::create(args);
-                    },
-                    args.renderEngineType);
-        }
-        case RenderEngineType::SKIA_VK_THREADED:
-            ALOGD("Threaded RenderEngine with SkiaVK Backend");
-            return renderengine::threaded::RenderEngineThreaded::create(
-                    [args]() {
-                        return android::renderengine::skia::SkiaVkRenderEngine::create(args);
-                    },
-                    args.renderEngineType);
     }
 }