Loading libs/renderengine/RenderEngine.cpp +1 −17 Original line number Diff line number Diff line Loading @@ -26,23 +26,7 @@ namespace android { namespace renderengine { std::unique_ptr<RenderEngine> RenderEngine::create(RenderEngineCreationArgs args) { // Keep the ability to override by PROPERTIES: char prop[PROPERTY_VALUE_MAX]; property_get(PROPERTY_DEBUG_RENDERENGINE_BACKEND, prop, ""); if (strcmp(prop, "gles") == 0) { args.renderEngineType = RenderEngineType::GLES; } if (strcmp(prop, "threaded") == 0) { args.renderEngineType = RenderEngineType::THREADED; } if (strcmp(prop, "skiagl") == 0) { args.renderEngineType = RenderEngineType::SKIA_GL; } if (strcmp(prop, "skiaglthreaded") == 0) { args.renderEngineType = RenderEngineType::SKIA_GL_THREADED; } std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArgs& args) { switch (args.renderEngineType) { case RenderEngineType::THREADED: ALOGD("Threaded RenderEngine with GLES Backend"); Loading libs/renderengine/include/renderengine/RenderEngine.h +1 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ public: SKIA_GL_THREADED = 4, }; static std::unique_ptr<RenderEngine> create(RenderEngineCreationArgs args); static std::unique_ptr<RenderEngine> create(const RenderEngineCreationArgs& args); virtual ~RenderEngine() = 0; Loading services/surfaceflinger/SurfaceFlinger.cpp +34 −13 Original line number Diff line number Diff line Loading @@ -772,6 +772,25 @@ void SurfaceFlinger::deleteTextureAsync(uint32_t texture) { ATRACE_INT("TexturePoolSize", mTexturePool.size()); } static std::optional<renderengine::RenderEngine::RenderEngineType> chooseRenderEngineTypeViaSysProp() { char prop[PROPERTY_VALUE_MAX]; property_get(PROPERTY_DEBUG_RENDERENGINE_BACKEND, prop, ""); if (strcmp(prop, "gles") == 0) { return renderengine::RenderEngine::RenderEngineType::GLES; } else if (strcmp(prop, "threaded") == 0) { return renderengine::RenderEngine::RenderEngineType::THREADED; } else if (strcmp(prop, "skiagl") == 0) { return renderengine::RenderEngine::RenderEngineType::SKIA_GL; } else if (strcmp(prop, "skiaglthreaded") == 0) { return renderengine::RenderEngine::RenderEngineType::SKIA_GL_THREADED; } else { ALOGE("Unrecognized RenderEngineType %s; ignoring!", prop); return {}; } } // Do not call property_set on main thread which will be blocked by init // Use StartPropertySetThread instead. void SurfaceFlinger::init() { Loading @@ -782,8 +801,7 @@ void SurfaceFlinger::init() { // Get a RenderEngine for the given display / config (can't fail) // TODO(b/77156734): We need to stop casting and use HAL types when possible. // Sending maxFrameBufferAcquiredBuffers as the cache size is tightly tuned to single-display. mCompositionEngine->setRenderEngine(renderengine::RenderEngine::create( renderengine::RenderEngineCreationArgs::Builder() auto builder = renderengine::RenderEngineCreationArgs::Builder() .setPixelFormat(static_cast<int32_t>(defaultCompositionPixelFormat)) .setImageCacheSize(maxFrameBufferAcquiredBuffers) .setUseColorManagerment(useColorManagement) Loading @@ -793,8 +811,11 @@ void SurfaceFlinger::init() { .setContextPriority( useContextPriority ? renderengine::RenderEngine::ContextPriority::REALTIME : renderengine::RenderEngine::ContextPriority::MEDIUM) .build())); : renderengine::RenderEngine::ContextPriority::MEDIUM); if (auto type = chooseRenderEngineTypeViaSysProp()) { builder.setRenderEngineType(type.value()); } mCompositionEngine->setRenderEngine(renderengine::RenderEngine::create(builder.build())); mMaxRenderTargetSize = std::min(getRenderEngine().getMaxTextureSize(), getRenderEngine().getMaxViewportDims()); Loading Loading
libs/renderengine/RenderEngine.cpp +1 −17 Original line number Diff line number Diff line Loading @@ -26,23 +26,7 @@ namespace android { namespace renderengine { std::unique_ptr<RenderEngine> RenderEngine::create(RenderEngineCreationArgs args) { // Keep the ability to override by PROPERTIES: char prop[PROPERTY_VALUE_MAX]; property_get(PROPERTY_DEBUG_RENDERENGINE_BACKEND, prop, ""); if (strcmp(prop, "gles") == 0) { args.renderEngineType = RenderEngineType::GLES; } if (strcmp(prop, "threaded") == 0) { args.renderEngineType = RenderEngineType::THREADED; } if (strcmp(prop, "skiagl") == 0) { args.renderEngineType = RenderEngineType::SKIA_GL; } if (strcmp(prop, "skiaglthreaded") == 0) { args.renderEngineType = RenderEngineType::SKIA_GL_THREADED; } std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArgs& args) { switch (args.renderEngineType) { case RenderEngineType::THREADED: ALOGD("Threaded RenderEngine with GLES Backend"); Loading
libs/renderengine/include/renderengine/RenderEngine.h +1 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ public: SKIA_GL_THREADED = 4, }; static std::unique_ptr<RenderEngine> create(RenderEngineCreationArgs args); static std::unique_ptr<RenderEngine> create(const RenderEngineCreationArgs& args); virtual ~RenderEngine() = 0; Loading
services/surfaceflinger/SurfaceFlinger.cpp +34 −13 Original line number Diff line number Diff line Loading @@ -772,6 +772,25 @@ void SurfaceFlinger::deleteTextureAsync(uint32_t texture) { ATRACE_INT("TexturePoolSize", mTexturePool.size()); } static std::optional<renderengine::RenderEngine::RenderEngineType> chooseRenderEngineTypeViaSysProp() { char prop[PROPERTY_VALUE_MAX]; property_get(PROPERTY_DEBUG_RENDERENGINE_BACKEND, prop, ""); if (strcmp(prop, "gles") == 0) { return renderengine::RenderEngine::RenderEngineType::GLES; } else if (strcmp(prop, "threaded") == 0) { return renderengine::RenderEngine::RenderEngineType::THREADED; } else if (strcmp(prop, "skiagl") == 0) { return renderengine::RenderEngine::RenderEngineType::SKIA_GL; } else if (strcmp(prop, "skiaglthreaded") == 0) { return renderengine::RenderEngine::RenderEngineType::SKIA_GL_THREADED; } else { ALOGE("Unrecognized RenderEngineType %s; ignoring!", prop); return {}; } } // Do not call property_set on main thread which will be blocked by init // Use StartPropertySetThread instead. void SurfaceFlinger::init() { Loading @@ -782,8 +801,7 @@ void SurfaceFlinger::init() { // Get a RenderEngine for the given display / config (can't fail) // TODO(b/77156734): We need to stop casting and use HAL types when possible. // Sending maxFrameBufferAcquiredBuffers as the cache size is tightly tuned to single-display. mCompositionEngine->setRenderEngine(renderengine::RenderEngine::create( renderengine::RenderEngineCreationArgs::Builder() auto builder = renderengine::RenderEngineCreationArgs::Builder() .setPixelFormat(static_cast<int32_t>(defaultCompositionPixelFormat)) .setImageCacheSize(maxFrameBufferAcquiredBuffers) .setUseColorManagerment(useColorManagement) Loading @@ -793,8 +811,11 @@ void SurfaceFlinger::init() { .setContextPriority( useContextPriority ? renderengine::RenderEngine::ContextPriority::REALTIME : renderengine::RenderEngine::ContextPriority::MEDIUM) .build())); : renderengine::RenderEngine::ContextPriority::MEDIUM); if (auto type = chooseRenderEngineTypeViaSysProp()) { builder.setRenderEngineType(type.value()); } mCompositionEngine->setRenderEngine(renderengine::RenderEngine::create(builder.build())); mMaxRenderTargetSize = std::min(getRenderEngine().getMaxTextureSize(), getRenderEngine().getMaxViewportDims()); Loading