From 277864a5afc79354503029140620bf4106a36a29 Mon Sep 17 00:00:00 2001 From: Le Hoang Quyen Date: Fri, 31 Jul 2020 16:38:05 +0800 Subject: [PATCH] Lazily initialize default shader library. --- src/libANGLE/renderer/metal/DisplayMtl.h | 2 +- src/libANGLE/renderer/metal/DisplayMtl.mm | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/libANGLE/renderer/metal/DisplayMtl.h b/src/libANGLE/renderer/metal/DisplayMtl.h index 1458a6bd22..f4a73df086 100644 --- a/src/libANGLE/renderer/metal/DisplayMtl.h +++ b/src/libANGLE/renderer/metal/DisplayMtl.h @@ -109,7 +109,7 @@ class DisplayMtl : public DisplayImpl mtl::RenderUtils &getUtils() { return mUtils; } mtl::StateCache &getStateCache() { return mStateCache; } - id getDefaultShadersLib() const { return mDefaultShaders; } + id getDefaultShadersLib(); id getDepthStencilState(const mtl::DepthStencilDesc &desc) { diff --git a/src/libANGLE/renderer/metal/DisplayMtl.mm b/src/libANGLE/renderer/metal/DisplayMtl.mm index eb82c75897..fcbd12d53c 100644 --- a/src/libANGLE/renderer/metal/DisplayMtl.mm +++ b/src/libANGLE/renderer/metal/DisplayMtl.mm @@ -79,7 +79,6 @@ bool IsMetalDisplayAvailable() initializeFeatures(); ANGLE_TRY(mFormatTable.initialize(this)); - ANGLE_TRY(initializeShaderLibrary()); return mUtils.initialize(); } @@ -744,6 +743,18 @@ bool IsMetalDisplayAvailable() return angle::Result::Continue; } +id DisplayMtl::getDefaultShadersLib() +{ + if (!mDefaultShaders) + { + if (initializeShaderLibrary() != angle::Result::Continue) + { + return nil; + } + } + return mDefaultShaders; +} + bool DisplayMtl::supportiOSGPUFamily(uint8_t iOSFamily) const { #if (!TARGET_OS_IOS && !TARGET_OS_TV) || TARGET_OS_MACCATALYST