@@ -287,6 +287,7 @@ static GrVkGetProc sGetProc = [](const char* proc_name, VkInstance instance, VkD
287287 CHECK_NONNULL (vk##F)
288288
289289VulkanInterface initVulkanInterface (bool protectedContent = false ) {
290+ const nsecs_t timeBefore = systemTime ();
290291 VulkanInterface interface;
291292
292293 VK_GET_PROC (EnumerateInstanceVersion);
@@ -598,7 +599,9 @@ VulkanInterface initVulkanInterface(bool protectedContent = false) {
598599 interface.isProtected = protectedContent;
599600 // funcs already initialized
600601
601- ALOGD (" %s: Success init Vulkan interface" , __func__);
602+ const nsecs_t timeAfter = systemTime ();
603+ const float initTimeMs = static_cast <float >(timeAfter - timeBefore) / 1.0E6 ;
604+ ALOGD (" %s: Success init Vulkan interface in %f ms" , __func__, initTimeMs);
602605 return interface;
603606}
604607
@@ -654,17 +657,25 @@ static void sSetupVulkanInterface() {
654657 }
655658}
656659
660+ bool RenderEngine::canSupport (GraphicsApi graphicsApi) {
661+ switch (graphicsApi) {
662+ case GraphicsApi::GL:
663+ return true ;
664+ case GraphicsApi::VK: {
665+ if (!sVulkanInterface .initialized ) {
666+ sVulkanInterface = initVulkanInterface (false /* no protected content */ );
667+ ALOGD (" %s: initialized == %s." , __func__,
668+ sVulkanInterface .initialized ? " true" : " false" );
669+ }
670+ return sVulkanInterface .initialized ;
671+ }
672+ }
673+ }
674+
657675namespace skia {
658676
659677using base::StringAppendF;
660678
661- bool SkiaVkRenderEngine::canSupportSkiaVkRenderEngine () {
662- VulkanInterface temp = initVulkanInterface (false /* no protected content */ );
663- ALOGD (" SkiaVkRenderEngine::canSupportSkiaVkRenderEngine(): initialized == %s." ,
664- temp.initialized ? " true" : " false" );
665- return temp.initialized ;
666- }
667-
668679std::unique_ptr<SkiaVkRenderEngine> SkiaVkRenderEngine::create (
669680 const RenderEngineCreationArgs& args) {
670681 std::unique_ptr<SkiaVkRenderEngine> engine (new SkiaVkRenderEngine (args));
0 commit comments