From cc8ea4c29ab50ef3bb432337db064d64aab79702 Mon Sep 17 00:00:00 2001 From: Geoff Lang Date: Thu, 13 Jul 2023 12:41:56 -0400 Subject: [PATCH] Metal: Call terminate if display initialization fails. This ensures that any resources that were partially initialized are cleaned up. This is a speculative fix for dual GPU macs not falling back to the low power GPU. DisplayMtl leaks the metal device if it fails to initialize due to unsupported GPU families or vendors. Bug: chromium:1322521 Change-Id: I93930de8c07bb94318ac41c67513a3b1c8bd3bf0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4681842 Reviewed-by: Shahbaz Youssefi Commit-Queue: Geoff Lang Reviewed-by: Yuly Novikov --- src/libANGLE/renderer/metal/DisplayMtl.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libANGLE/renderer/metal/DisplayMtl.mm b/src/libANGLE/renderer/metal/DisplayMtl.mm index c4bc7472b..e3a60b1ee 100644 --- a/src/libANGLE/renderer/metal/DisplayMtl.mm +++ b/src/libANGLE/renderer/metal/DisplayMtl.mm @@ -114,6 +114,7 @@ egl::Error DisplayMtl::initialize(egl::Display *display) angle::Result result = initializeImpl(display); if (result != angle::Result::Continue) { + terminate(); return egl::EglNotInitialized(); } return egl::NoError();