Changeset 288074 in webkit
- Timestamp:
- Jan 16, 2022, 1:34:17 PM (5 years ago)
- Location:
- trunk/Source/ThirdParty/ANGLE
- Files:
-
- 2 edited
-
ChangeLog (modified) (1 diff)
-
src/libANGLE/renderer/metal/DisplayMtl.mm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/ThirdParty/ANGLE/ChangeLog
r288041 r288074 1 2022-01-16 David Kilzer <ddkilzer@apple.com> 2 3 REGRESSION (r286603): Leak of three NSMutableDictionary objects each time rx::DisplayMtl::getMetalDeviceMatchingAttribute() is called 4 <https://webkit.org/b/235278> 5 <rdar://problem/87653812> 6 7 Reviewed by Darin Adler. 8 9 * src/libANGLE/renderer/metal/DisplayMtl.mm: 10 (rx::DisplayMtl::getMetalDeviceMatchingAttribute): 11 - Make use of mtl::adoptObjCObj<> so these objects are relaseed 12 when the method returns. 13 1 14 2022-01-14 Kyle Piddington <kpiddington@apple.com> 2 15 -
trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.mm
r288041 r288074 239 239 auto deviceList = mtl::adoptObjCObj(MTLCopyAllDevices()); 240 240 241 NSMutableArray<id<MTLDevice>> *externalGPUs = [[NSMutableArray alloc] init];242 NSMutableArray<id<MTLDevice>> *integratedGPUs = [[NSMutableArray alloc] init];243 NSMutableArray<id<MTLDevice>> *discreteGPUs = [[NSMutableArray alloc] init];241 auto externalGPUs = mtl::adoptObjCObj<NSMutableArray<id<MTLDevice>>>([[NSMutableArray alloc] init]); 242 auto integratedGPUs = mtl::adoptObjCObj<NSMutableArray<id<MTLDevice>>>([[NSMutableArray alloc] init]); 243 auto discreteGPUs = mtl::adoptObjCObj<NSMutableArray<id<MTLDevice>>>([[NSMutableArray alloc] init]); 244 244 for (id<MTLDevice> device in deviceList.get()) 245 245 { 246 246 if (device.removable) 247 247 { 248 [externalGPUs addObject:device];248 [externalGPUs.get() addObject:device]; 249 249 } 250 250 else if (device.lowPower) 251 251 { 252 [integratedGPUs addObject:device];252 [integratedGPUs.get() addObject:device]; 253 253 } 254 254 else 255 255 { 256 [discreteGPUs addObject:device];256 [discreteGPUs.get() addObject:device]; 257 257 } 258 258 } … … 263 263 { 264 264 // Search for a discrete GPU first. 265 for (id<MTLDevice> device in discreteGPUs )265 for (id<MTLDevice> device in discreteGPUs.get()) 266 266 { 267 267 if (![device isHeadless]) … … 272 272 { 273 273 // If we've selected a low power device, look through integrated devices. 274 for (id<MTLDevice> device in integratedGPUs )274 for (id<MTLDevice> device in integratedGPUs.get()) 275 275 { 276 276 if (![device isHeadless]) … … 296 296 297 297 // Default to use a low power device, look through integrated devices. 298 for (id<MTLDevice> device in integratedGPUs )298 for (id<MTLDevice> device in integratedGPUs.get()) 299 299 { 300 300 if (![device isHeadless])
Note:
See TracChangeset
for help on using the changeset viewer.