diff options
Diffstat (limited to 'libs/renderengine/RenderEngine.cpp')
-rw-r--r-- | libs/renderengine/RenderEngine.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/libs/renderengine/RenderEngine.cpp b/libs/renderengine/RenderEngine.cpp index 45db31c026..b2ad22d687 100644 --- a/libs/renderengine/RenderEngine.cpp +++ b/libs/renderengine/RenderEngine.cpp @@ -51,11 +51,28 @@ std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArg return renderengine::threaded::RenderEngineThreaded::create( [args]() { return android::renderengine::gl::GLESRenderEngine::create(args); }); case RenderEngineType::SKIA_GL: + ALOGD("RenderEngine with SkiaGL Backend"); return renderengine::skia::SkiaGLRenderEngine::create(args); - case RenderEngineType::SKIA_GL_THREADED: - return renderengine::threaded::RenderEngineThreaded::create([args]() { - return android::renderengine::skia::SkiaGLRenderEngine::create(args); + case RenderEngineType::SKIA_GL_THREADED: { + // These need to be recreated, since they are a constant reference, and we need to + // let SkiaRE know that it's running as threaded, and all GL operation will happen on + // the same thread. + RenderEngineCreationArgs skiaArgs = + RenderEngineCreationArgs::Builder() + .setPixelFormat(args.pixelFormat) + .setImageCacheSize(args.imageCacheSize) + .setUseColorManagerment(args.useColorManagement) + .setEnableProtectedContext(args.enableProtectedContext) + .setPrecacheToneMapperShaderOnly(args.precacheToneMapperShaderOnly) + .setSupportsBackgroundBlur(args.supportsBackgroundBlur) + .setContextPriority(args.contextPriority) + .setRenderEngineType(RenderEngineType::SKIA_GL_THREADED) + .build(); + ALOGD("Threaded RenderEngine with SkiaGL Backend"); + return renderengine::threaded::RenderEngineThreaded::create([skiaArgs]() { + return android::renderengine::skia::SkiaGLRenderEngine::create(skiaArgs); }); + } case RenderEngineType::GLES: default: ALOGD("RenderEngine with GLES Backend"); |