diff --git a/packages/flutter_driver/lib/src/driver/memory_summarizer.dart b/packages/flutter_driver/lib/src/driver/memory_summarizer.dart index 20fb9e40baa..58a3c8ca5c9 100644 --- a/packages/flutter_driver/lib/src/driver/memory_summarizer.dart +++ b/packages/flutter_driver/lib/src/driver/memory_summarizer.dart @@ -21,7 +21,7 @@ class GPUMemorySumarizer { } /// Whether or not this event is a GPU allocation event. - static const Set kMemoryEvents = {'AllocatorVK'}; + static const Set kMemoryEvents = {'AllocatorVK', 'AllocatorMTL'}; final List _memoryMB = []; diff --git a/packages/flutter_driver/test/src/gpu_memory_summarizer_test.dart b/packages/flutter_driver/test/src/gpu_memory_summarizer_test.dart index 0dc4220bdee..56d67cbbe4c 100644 --- a/packages/flutter_driver/test/src/gpu_memory_summarizer_test.dart +++ b/packages/flutter_driver/test/src/gpu_memory_summarizer_test.dart @@ -15,6 +15,14 @@ TimelineEvent newGPUTraceEvent(double ms) => TimelineEvent({ }, }); +TimelineEvent newMetalGPUTraceEvent(double ms) => TimelineEvent({ + 'name': 'AllocatorMTL', + 'ph': 'b', + 'args': { + 'MemoryBudgetUsageMB': ms.toString() + }, +}); + void main() { test('Can process GPU memory usage times.', () { final GPUMemorySumarizer summarizer = GPUMemorySumarizer([ @@ -28,4 +36,17 @@ void main() { expect(summarizer.computePercentileMemoryUsage(50.0), closeTo(1024, 0.1)); expect(summarizer.computeWorstMemoryUsage(), 2048); }); + + test('Can process Metal GPU memory usage times.', () { + final GPUMemorySumarizer summarizer = GPUMemorySumarizer([ + newMetalGPUTraceEvent(1024), + newMetalGPUTraceEvent(1024), + newMetalGPUTraceEvent(512), + newMetalGPUTraceEvent(2048), + ]); + + expect(summarizer.computeAverageMemoryUsage(), closeTo(1152, 0.1)); + expect(summarizer.computePercentileMemoryUsage(50.0), closeTo(1024, 0.1)); + expect(summarizer.computeWorstMemoryUsage(), 2048); + }); }