Loading libs/renderengine/include/renderengine/RenderEngine.h +2 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,8 @@ public: static std::unique_ptr<RenderEngine> create(const RenderEngineCreationArgs& args); static bool canSupport(GraphicsApi); virtual ~RenderEngine() = 0; // ----- BEGIN DEPRECATED INTERFACE ----- Loading libs/renderengine/skia/SkiaVkRenderEngine.cpp +19 −8 Original line number Diff line number Diff line Loading @@ -287,6 +287,7 @@ static GrVkGetProc sGetProc = [](const char* proc_name, VkInstance instance, VkD CHECK_NONNULL(vk##F) VulkanInterface initVulkanInterface(bool protectedContent = false) { const nsecs_t timeBefore = systemTime(); VulkanInterface interface; VK_GET_PROC(EnumerateInstanceVersion); Loading Loading @@ -598,7 +599,9 @@ VulkanInterface initVulkanInterface(bool protectedContent = false) { interface.isProtected = protectedContent; // funcs already initialized ALOGD("%s: Success init Vulkan interface", __func__); const nsecs_t timeAfter = systemTime(); const float initTimeMs = static_cast<float>(timeAfter - timeBefore) / 1.0E6; ALOGD("%s: Success init Vulkan interface in %f ms", __func__, initTimeMs); return interface; } Loading Loading @@ -654,17 +657,25 @@ static void sSetupVulkanInterface() { } } bool RenderEngine::canSupport(GraphicsApi graphicsApi) { switch (graphicsApi) { case GraphicsApi::GL: return true; case GraphicsApi::VK: { if (!sVulkanInterface.initialized) { sVulkanInterface = initVulkanInterface(false /* no protected content */); ALOGD("%s: initialized == %s.", __func__, sVulkanInterface.initialized ? "true" : "false"); } return sVulkanInterface.initialized; } } } namespace skia { using base::StringAppendF; bool SkiaVkRenderEngine::canSupportSkiaVkRenderEngine() { VulkanInterface temp = initVulkanInterface(false /* no protected content */); ALOGD("SkiaVkRenderEngine::canSupportSkiaVkRenderEngine(): initialized == %s.", temp.initialized ? "true" : "false"); return temp.initialized; } std::unique_ptr<SkiaVkRenderEngine> SkiaVkRenderEngine::create( const RenderEngineCreationArgs& args) { std::unique_ptr<SkiaVkRenderEngine> engine(new SkiaVkRenderEngine(args)); Loading libs/renderengine/skia/SkiaVkRenderEngine.h +0 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,6 @@ namespace skia { class SkiaVkRenderEngine : public SkiaRenderEngine { public: // Returns false if Vulkan implementation can't support SkiaVkRenderEngine. static bool canSupportSkiaVkRenderEngine(); static std::unique_ptr<SkiaVkRenderEngine> create(const RenderEngineCreationArgs& args); ~SkiaVkRenderEngine() override; Loading libs/renderengine/tests/RenderEngineTest.cpp +1 −7 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public: virtual std::string name() = 0; virtual renderengine::RenderEngine::GraphicsApi graphicsApi() = 0; virtual bool apiSupported() = 0; bool apiSupported() { return renderengine::RenderEngine::canSupport(graphicsApi()); } std::unique_ptr<renderengine::RenderEngine> createRenderEngine() { renderengine::RenderEngineCreationArgs reCreationArgs = renderengine::RenderEngineCreationArgs::Builder() Loading @@ -131,10 +131,6 @@ public: renderengine::RenderEngine::GraphicsApi graphicsApi() override { return renderengine::RenderEngine::GraphicsApi::VK; } bool apiSupported() override { return skia::SkiaVkRenderEngine::canSupportSkiaVkRenderEngine(); } }; class SkiaGLESRenderEngineFactory : public RenderEngineFactory { Loading @@ -144,8 +140,6 @@ public: renderengine::RenderEngine::GraphicsApi graphicsApi() { return renderengine::RenderEngine::GraphicsApi::GL; } bool apiSupported() override { return true; } }; class RenderEngineTest : public ::testing::TestWithParam<std::shared_ptr<RenderEngineFactory>> { Loading services/surfaceflinger/SurfaceFlinger.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -816,9 +816,10 @@ void chooseRenderEngineType(renderengine::RenderEngineCreationArgs::Builder& bui builder.setThreaded(renderengine::RenderEngine::Threaded::YES) .setGraphicsApi(renderengine::RenderEngine::GraphicsApi::VK); } else { builder.setGraphicsApi(FlagManager::getInstance().vulkan_renderengine() ? renderengine::RenderEngine::GraphicsApi::VK : renderengine::RenderEngine::GraphicsApi::GL); const auto kVulkan = renderengine::RenderEngine::GraphicsApi::VK; const bool useVulkan = FlagManager::getInstance().vulkan_renderengine() && renderengine::RenderEngine::canSupport(kVulkan); builder.setGraphicsApi(useVulkan ? kVulkan : renderengine::RenderEngine::GraphicsApi::GL); } } Loading Loading
libs/renderengine/include/renderengine/RenderEngine.h +2 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,8 @@ public: static std::unique_ptr<RenderEngine> create(const RenderEngineCreationArgs& args); static bool canSupport(GraphicsApi); virtual ~RenderEngine() = 0; // ----- BEGIN DEPRECATED INTERFACE ----- Loading
libs/renderengine/skia/SkiaVkRenderEngine.cpp +19 −8 Original line number Diff line number Diff line Loading @@ -287,6 +287,7 @@ static GrVkGetProc sGetProc = [](const char* proc_name, VkInstance instance, VkD CHECK_NONNULL(vk##F) VulkanInterface initVulkanInterface(bool protectedContent = false) { const nsecs_t timeBefore = systemTime(); VulkanInterface interface; VK_GET_PROC(EnumerateInstanceVersion); Loading Loading @@ -598,7 +599,9 @@ VulkanInterface initVulkanInterface(bool protectedContent = false) { interface.isProtected = protectedContent; // funcs already initialized ALOGD("%s: Success init Vulkan interface", __func__); const nsecs_t timeAfter = systemTime(); const float initTimeMs = static_cast<float>(timeAfter - timeBefore) / 1.0E6; ALOGD("%s: Success init Vulkan interface in %f ms", __func__, initTimeMs); return interface; } Loading Loading @@ -654,17 +657,25 @@ static void sSetupVulkanInterface() { } } bool RenderEngine::canSupport(GraphicsApi graphicsApi) { switch (graphicsApi) { case GraphicsApi::GL: return true; case GraphicsApi::VK: { if (!sVulkanInterface.initialized) { sVulkanInterface = initVulkanInterface(false /* no protected content */); ALOGD("%s: initialized == %s.", __func__, sVulkanInterface.initialized ? "true" : "false"); } return sVulkanInterface.initialized; } } } namespace skia { using base::StringAppendF; bool SkiaVkRenderEngine::canSupportSkiaVkRenderEngine() { VulkanInterface temp = initVulkanInterface(false /* no protected content */); ALOGD("SkiaVkRenderEngine::canSupportSkiaVkRenderEngine(): initialized == %s.", temp.initialized ? "true" : "false"); return temp.initialized; } std::unique_ptr<SkiaVkRenderEngine> SkiaVkRenderEngine::create( const RenderEngineCreationArgs& args) { std::unique_ptr<SkiaVkRenderEngine> engine(new SkiaVkRenderEngine(args)); Loading
libs/renderengine/skia/SkiaVkRenderEngine.h +0 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,6 @@ namespace skia { class SkiaVkRenderEngine : public SkiaRenderEngine { public: // Returns false if Vulkan implementation can't support SkiaVkRenderEngine. static bool canSupportSkiaVkRenderEngine(); static std::unique_ptr<SkiaVkRenderEngine> create(const RenderEngineCreationArgs& args); ~SkiaVkRenderEngine() override; Loading
libs/renderengine/tests/RenderEngineTest.cpp +1 −7 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public: virtual std::string name() = 0; virtual renderengine::RenderEngine::GraphicsApi graphicsApi() = 0; virtual bool apiSupported() = 0; bool apiSupported() { return renderengine::RenderEngine::canSupport(graphicsApi()); } std::unique_ptr<renderengine::RenderEngine> createRenderEngine() { renderengine::RenderEngineCreationArgs reCreationArgs = renderengine::RenderEngineCreationArgs::Builder() Loading @@ -131,10 +131,6 @@ public: renderengine::RenderEngine::GraphicsApi graphicsApi() override { return renderengine::RenderEngine::GraphicsApi::VK; } bool apiSupported() override { return skia::SkiaVkRenderEngine::canSupportSkiaVkRenderEngine(); } }; class SkiaGLESRenderEngineFactory : public RenderEngineFactory { Loading @@ -144,8 +140,6 @@ public: renderengine::RenderEngine::GraphicsApi graphicsApi() { return renderengine::RenderEngine::GraphicsApi::GL; } bool apiSupported() override { return true; } }; class RenderEngineTest : public ::testing::TestWithParam<std::shared_ptr<RenderEngineFactory>> { Loading
services/surfaceflinger/SurfaceFlinger.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -816,9 +816,10 @@ void chooseRenderEngineType(renderengine::RenderEngineCreationArgs::Builder& bui builder.setThreaded(renderengine::RenderEngine::Threaded::YES) .setGraphicsApi(renderengine::RenderEngine::GraphicsApi::VK); } else { builder.setGraphicsApi(FlagManager::getInstance().vulkan_renderengine() ? renderengine::RenderEngine::GraphicsApi::VK : renderengine::RenderEngine::GraphicsApi::GL); const auto kVulkan = renderengine::RenderEngine::GraphicsApi::VK; const bool useVulkan = FlagManager::getInstance().vulkan_renderengine() && renderengine::RenderEngine::canSupport(kVulkan); builder.setGraphicsApi(useVulkan ? kVulkan : renderengine::RenderEngine::GraphicsApi::GL); } } Loading