From 94d89e181059ab098c8cac9ce45a54bdd9884ca1 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 30 Jun 2023 10:23:58 -0700 Subject: [PATCH 001/211] WIP use BBHFactory for Picture cullRect --- lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart | 10 ++++++++-- .../lib/src/engine/canvaskit/embedded_views.dart | 10 ++++++---- lib/web_ui/lib/src/engine/canvaskit/layer.dart | 2 +- lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart | 2 -- lib/web_ui/lib/src/engine/canvaskit/picture.dart | 5 +++-- .../lib/src/engine/canvaskit/picture_recorder.dart | 4 +--- lib/web_ui/test/canvaskit/canvaskit_api_test.dart | 2 +- 7 files changed, 20 insertions(+), 15 deletions(-) diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart index cc2c295cf7679..173e1f0938632 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -2195,8 +2195,10 @@ class SkPictureRecorder { extension SkPictureRecorderExtension on SkPictureRecorder { @JS('beginRecording') - external SkCanvas _beginRecording(JSFloat32Array bounds); - SkCanvas beginRecording(Float32List bounds) => _beginRecording(bounds.toJS); + external SkCanvas _beginRecording( + JSFloat32Array bounds, JSBoolean computeBounds); + SkCanvas beginRecording(Float32List bounds) => + _beginRecording(bounds.toJS, true.toJS); external SkPicture finishRecordingAsPicture(); external JSVoid delete(); @@ -2594,6 +2596,10 @@ class SkPicture {} extension SkPictureExtension on SkPicture { external JSVoid delete(); + + @JS('cullRect') + external JSFloat32Array _cullRect(); + Float32List cullRect() => _cullRect().toDart; } @JS() diff --git a/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart b/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart index 70a1a3cb1d7d0..b11e0cb18b075 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart @@ -16,6 +16,7 @@ import '../window.dart'; import 'canvas.dart'; import 'embedded_views_diff.dart'; import 'path.dart'; +import 'picture.dart'; import 'picture_recorder.dart'; import 'renderer.dart'; import 'surface.dart'; @@ -139,7 +140,6 @@ class HtmlViewEmbedder { if (needNewOverlay && hasAvailableOverlay) { final CkPictureRecorder pictureRecorder = CkPictureRecorder(); pictureRecorder.beginRecording(ui.Offset.zero & _frameSize); - pictureRecorder.recordingCanvas!.clear(const ui.Color(0x00000000)); _context.pictureRecordersCreatedDuringPreroll.add(pictureRecorder); } @@ -422,9 +422,11 @@ class HtmlViewEmbedder { if (_overlays[viewId] != null) { final SurfaceFrame frame = _overlays[viewId]!.acquireFrame(_frameSize); final CkCanvas canvas = frame.skiaCanvas; - canvas.drawPicture( - _context.pictureRecorders[pictureRecorderIndex].endRecording(), - ); + final CkPicture ckPicture = + _context.pictureRecorders[pictureRecorderIndex].endRecording(); + print(ckPicture.cullRect()); + canvas.clear(const ui.Color(0x00000000)); + canvas.drawPicture(ckPicture); pictureRecorderIndex++; frame.submit(); } diff --git a/lib/web_ui/lib/src/engine/canvaskit/layer.dart b/lib/web_ui/lib/src/engine/canvaskit/layer.dart index b357465e7668c..f1c8af2df0cdb 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/layer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/layer.dart @@ -466,7 +466,7 @@ class PictureLayer extends Layer { @override void preroll(PrerollContext prerollContext, Matrix4 matrix) { - paintBounds = picture.cullRect!.shift(offset); + paintBounds = picture.cullRect().shift(offset); } @override diff --git a/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart b/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart index 576e1b2533221..0f950f5a43f91 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart @@ -51,8 +51,6 @@ class LayerTree { final Iterable overlayCanvases = frame.viewEmbedder!.getOverlayCanvases(); overlayCanvases.forEach(internalNodesCanvas.addCanvas); - // Clear the canvases before painting - internalNodesCanvas.clear(const ui.Color(0x00000000)); final PaintContext context = PaintContext( internalNodesCanvas, frame.canvas, diff --git a/lib/web_ui/lib/src/engine/canvaskit/picture.dart b/lib/web_ui/lib/src/engine/canvaskit/picture.dart index 374c24655d721..b8f8dfd41d84a 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/picture.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/picture.dart @@ -15,15 +15,16 @@ import 'surface_factory.dart'; /// Implements [ui.Picture] on top of [SkPicture]. class CkPicture implements ui.Picture { - CkPicture(SkPicture skPicture, this.cullRect) { + CkPicture(SkPicture skPicture) { _ref = UniqueRef(this, skPicture, 'Picture'); } late final UniqueRef _ref; - final ui.Rect? cullRect; SkPicture get skiaObject => _ref.nativeObject; + ui.Rect cullRect() => fromSkRect(skiaObject.cullRect()); + @override int get approximateBytesUsed => 0; diff --git a/lib/web_ui/lib/src/engine/canvaskit/picture_recorder.dart b/lib/web_ui/lib/src/engine/canvaskit/picture_recorder.dart index becc3996d0112..7930d067b2404 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/picture_recorder.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/picture_recorder.dart @@ -11,12 +11,10 @@ import 'canvaskit_api.dart'; import 'picture.dart'; class CkPictureRecorder implements ui.PictureRecorder { - ui.Rect? _cullRect; SkPictureRecorder? _skRecorder; CkCanvas? _recordingCanvas; CkCanvas beginRecording(ui.Rect bounds) { - _cullRect = bounds; final SkPictureRecorder recorder = _skRecorder = SkPictureRecorder(); final Float32List skRect = toSkRect(bounds); final SkCanvas skCanvas = recorder.beginRecording(skRect); @@ -36,7 +34,7 @@ class CkPictureRecorder implements ui.PictureRecorder { final SkPicture skPicture = recorder.finishRecordingAsPicture(); recorder.delete(); _skRecorder = null; - final CkPicture result = CkPicture(skPicture, _cullRect); + final CkPicture result = CkPicture(skPicture); // We invoke the handler here, not in the picture constructor, because we want // [result.approximateBytesUsed] to be available for the handler. ui.Picture.onCreate?.call(result); diff --git a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart index 220f78dc4bd19..644a91c34ab9c 100644 --- a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart +++ b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart @@ -1445,7 +1445,7 @@ void _canvasTests() { SkPaint()..setColorInt(0xAAFFFFFF), ); final CkPicture picture = - CkPicture(otherRecorder.finishRecordingAsPicture(), null); + CkPicture(otherRecorder.finishRecordingAsPicture()); final CkImage image = await picture.toImage(1, 1) as CkImage; final ByteData rawData = await image.toByteData(); From 5517770c3e83f35cc2b38bd6e1cdb2e2fb200621 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 30 Jun 2023 14:45:20 -0700 Subject: [PATCH 002/211] Add tests for cullRect and approximateBytesUsed --- .../src/engine/canvaskit/canvaskit_api.dart | 7 ++ .../lib/src/engine/canvaskit/picture.dart | 2 +- lib/web_ui/test/canvaskit/picture_test.dart | 67 +++++++++++++++++-- 3 files changed, 69 insertions(+), 7 deletions(-) diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart index 173e1f0938632..428c290cfcf27 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -2600,6 +2600,10 @@ extension SkPictureExtension on SkPicture { @JS('cullRect') external JSFloat32Array _cullRect(); Float32List cullRect() => _cullRect().toDart; + + @JS('approximateBytesUsed') + external JSNumber _approximateBytesUsed(); + int approximateBytesUsed() => _approximateBytesUsed().toDartInt; } @JS() @@ -3550,11 +3554,13 @@ List getCanvasKitJsFileNames(CanvasKitVariant variant) { return [_kChromiumCanvasKitJsFileName]; } } + Iterable get _canvasKitJsUrls { return getCanvasKitJsFileNames(configuration.canvasKitVariant).map( (String filename) => '$_canvasKitBaseUrl$filename', ); } + @visibleForTesting String canvasKitWasmModuleUrl(String file, String canvasKitBase) => canvasKitBase + file; @@ -3614,6 +3620,7 @@ Future _downloadCanvasKitJs(String url) { canvasKitScript.remove(); canvasKitLoadCompleter.complete(true); } + void errorEventHandler(DomEvent errorEvent) { canvasKitScript.remove(); canvasKitLoadCompleter.complete(false); diff --git a/lib/web_ui/lib/src/engine/canvaskit/picture.dart b/lib/web_ui/lib/src/engine/canvaskit/picture.dart index b8f8dfd41d84a..6ea9847a35571 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/picture.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/picture.dart @@ -26,7 +26,7 @@ class CkPicture implements ui.Picture { ui.Rect cullRect() => fromSkRect(skiaObject.cullRect()); @override - int get approximateBytesUsed => 0; + int get approximateBytesUsed => skiaObject.approximateBytesUsed(); @override bool get debugDisposed { diff --git a/lib/web_ui/test/canvaskit/picture_test.dart b/lib/web_ui/test/canvaskit/picture_test.dart index ca467d556e03e..eec726dbc424e 100644 --- a/lib/web_ui/test/canvaskit/picture_test.dart +++ b/lib/web_ui/test/canvaskit/picture_test.dart @@ -44,11 +44,11 @@ void testMain() { expect(actualError, isNotNull); // TODO(yjbanov): cannot test precise message due to https://github.com/flutter/flutter/issues/96298 - expect('$actualError', startsWith( - 'Bad state: Test.\n' - 'The picture has been disposed. ' - 'When the picture was disposed the stack trace was:\n' - )); + expect( + '$actualError', + startsWith('Bad state: Test.\n' + 'The picture has been disposed. ' + 'When the picture was disposed the stack trace was:\n')); }); }); @@ -68,6 +68,61 @@ void testMain() { expect(data!.lengthInBytes, 10 * 15 * 4); expect(data.buffer.asUint32List().first, color.value); }); - // TODO(hterkelsen): https://github.com/flutter/flutter/issues/60040 + + test('cullRect bounds are tight', () async { + const ui.Color red = ui.Color.fromRGBO(255, 0, 0, 1); + const ui.Color green = ui.Color.fromRGBO(0, 255, 0, 1); + const ui.Color blue = ui.Color.fromRGBO(0, 0, 255, 1); + + final ui.PictureRecorder recorder = ui.PictureRecorder(); + final ui.Canvas canvas = ui.Canvas(recorder); + canvas.drawRRect( + ui.RRect.fromRectXY(const ui.Rect.fromLTRB(20, 20, 150, 300), 15, 15), + ui.Paint()..color = red, + ); + canvas.drawCircle( + const ui.Offset(200, 200), + 100, + ui.Paint()..color = green, + ); + canvas.drawOval( + const ui.Rect.fromLTRB(210, 40, 268, 199), + ui.Paint()..color = blue, + ); + + final CkPicture picture = recorder.endRecording() as CkPicture; + final ui.Rect bounds = picture.cullRect(); + // Top left bounded by the red rrect, right bounded by right edge + // of red rrect, bottom bounded by bottom of green circle. + expect(bounds, equals(const ui.Rect.fromLTRB(20, 20, 300, 300))); + }); + + test('approximateBytesUsed', () async { + const ui.Color red = ui.Color.fromRGBO(255, 0, 0, 1); + const ui.Color green = ui.Color.fromRGBO(0, 255, 0, 1); + const ui.Color blue = ui.Color.fromRGBO(0, 0, 255, 1); + + final ui.PictureRecorder recorder = ui.PictureRecorder(); + final ui.Canvas canvas = ui.Canvas(recorder); + canvas.drawRRect( + ui.RRect.fromRectXY(const ui.Rect.fromLTRB(20, 20, 150, 300), 15, 15), + ui.Paint()..color = red, + ); + canvas.drawCircle( + const ui.Offset(200, 200), + 100, + ui.Paint()..color = green, + ); + canvas.drawOval( + const ui.Rect.fromLTRB(210, 40, 268, 199), + ui.Paint()..color = blue, + ); + + final CkPicture picture = recorder.endRecording() as CkPicture; + final int bytesUsed = picture.approximateBytesUsed; + // Sanity check: the picture should use more than 20 bytes of memory. + expect(bytesUsed, greaterThan(20)); + }); + // TODO(hterkelsen): https://github.com/flutter/flutter/issues/60040 }, skip: isIosSafari); } From 79d36ff6258cfa774d14d9c6a24b086fe14189ad Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 7 Jul 2023 12:04:35 -0700 Subject: [PATCH 003/211] Add test to canvaskit_api_test.dart --- .../test/canvaskit/canvaskit_api_test.dart | 261 +++++++++++++----- 1 file changed, 185 insertions(+), 76 deletions(-) diff --git a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart index 644a91c34ab9c..ce0835063ae7b 100644 --- a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart +++ b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart @@ -51,6 +51,7 @@ void testMain() { _matrix4x4CompositionTests(); _toSkRectTests(); _skVerticesTests(); + _pictureTests(); group('SkParagraph', () { _paragraphTests(); }); @@ -362,7 +363,8 @@ half4 main(vec2 fragCoord) { const String kInvalidSkSlProgram = ''; // Invalid SkSL returns null. - final SkRuntimeEffect? invalidEffect = MakeRuntimeEffect(kInvalidSkSlProgram); + final SkRuntimeEffect? invalidEffect = + MakeRuntimeEffect(kInvalidSkSlProgram); expect(invalidEffect, isNull); final SkShader? shader = effect!.makeShader([]); @@ -381,8 +383,9 @@ return u_color; } '''; - final SkShader? shaderWithUniform = MakeRuntimeEffect(kSkSlProgramWithUniforms) - !.makeShader([1.0, 0.0, 0.0, 1.0]); + final SkShader? shaderWithUniform = + MakeRuntimeEffect(kSkSlProgramWithUniforms)! + .makeShader([1.0, 0.0, 0.0, 1.0]); expect(shaderWithUniform, isNotNull); }); @@ -1049,6 +1052,26 @@ void _skVerticesTests() { }); } +void _pictureTests() { + late SkPicture picture; + + setUp(() { + final SkPictureRecorder recorder = SkPictureRecorder(); + final SkCanvas canvas = recorder.beginRecording(toSkRect(ui.Rect.largest)); + canvas.drawRect(toSkRect(const ui.Rect.fromLTRB(20, 30, 40, 50)), + SkPaint()..setColorInt(0xffff00ff)); + picture = recorder.finishRecordingAsPicture(); + }); + test('cullRect', () { + expect( + fromSkRect(picture.cullRect()), const ui.Rect.fromLTRB(20, 30, 40, 50)); + }); + + test('approximateBytesUsed', () { + expect(picture.approximateBytesUsed() > 0, isTrue); + }); +} + void _canvasTests() { late SkPictureRecorder recorder; late SkCanvas canvas; @@ -1116,7 +1139,8 @@ void _canvasTests() { test('clipRRect', () { canvas.clipRRect( - Float32List.fromList([0.9, 0.9, 99.1, 99.1, 1, 2, 3, 4, 5, 6, 7, 8]), + Float32List.fromList( + [0.9, 0.9, 99.1, 99.1, 1, 2, 3, 4, 5, 6, 7, 8]), canvasKit.ClipOp.Intersect, true, ); @@ -1329,7 +1353,7 @@ void _canvasTests() { canvas.rotate(90, 10, 20); expect(canvas.getLocalToDevice(), [ 0, -1, 0, 30, // tx = 10 - (-20) == 30 - 1, 0, 0, 10, // ty = 20 - 10 == 10 + 1, 0, 0, 10, // ty = 20 - 10 == 10 0, 0, 1, 0, 0, 0, 0, 1, ]); @@ -1338,52 +1362,124 @@ void _canvasTests() { test('scale', () { canvas.scale(2, 3); expect(canvas.getLocalToDevice(), [ - 2, 0, 0, 0, - 0, 3, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, + 2, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, ]); }); test('skew', () { canvas.skew(4, 5); expect(canvas.getLocalToDevice(), [ - 1, 4, 0, 0, - 5, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, + 1, + 4, + 0, + 0, + 5, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, ]); }); test('concat', () { canvas.concat(toSkM44FromFloat32(Matrix4.identity().storage)); expect(canvas.getLocalToDevice(), [ - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, ]); canvas.concat(Float32List.fromList([ - 11, 12, 13, 14, - 21, 22, 23, 24, - 31, 32, 33, 34, - 41, 42, 43, 44, + 11, + 12, + 13, + 14, + 21, + 22, + 23, + 24, + 31, + 32, + 33, + 34, + 41, + 42, + 43, + 44, ])); expect(canvas.getLocalToDevice(), [ - 11, 12, 13, 14, - 21, 22, 23, 24, - 31, 32, 33, 34, - 41, 42, 43, 44, + 11, + 12, + 13, + 14, + 21, + 22, + 23, + 24, + 31, + 32, + 33, + 34, + 41, + 42, + 43, + 44, ]); }); test('translate', () { canvas.translate(4, 5); expect(canvas.getLocalToDevice(), [ - 1, 0, 0, 4, - 0, 1, 0, 5, - 0, 0, 1, 0, - 0, 0, 0, 1, + 1, + 0, + 0, + 4, + 0, + 1, + 0, + 5, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, ]); }); @@ -1416,7 +1512,8 @@ void _canvasTests() { builder.addText('Hello there'); final CkParagraph paragraph = builder.build(); paragraph.layout(const ui.ParagraphConstraints(width: 100)); - ui.TextRange range = paragraph.getWordBoundary(const ui.TextPosition(offset: 5, affinity: ui.TextAffinity.upstream)); + ui.TextRange range = paragraph.getWordBoundary( + const ui.TextPosition(offset: 5, affinity: ui.TextAffinity.upstream)); expect(range.start, 0); expect(range.end, 5); @@ -1447,8 +1544,7 @@ void _canvasTests() { final CkPicture picture = CkPicture(otherRecorder.finishRecordingAsPicture()); final CkImage image = await picture.toImage(1, 1) as CkImage; - final ByteData rawData = - await image.toByteData(); + final ByteData rawData = await image.toByteData(); expect(rawData.lengthInBytes, greaterThan(0)); expect( rawData.buffer.asUint32List(), @@ -1566,8 +1662,7 @@ void _paragraphTests() { SkFontFeature() ..name = 'tnum' ..value = 1, - ] - ; + ]; props.strutStyle = SkStrutStyleProperties() ..fontFamilies = ['Roboto', 'Noto'] ..fontStyle = (SkFontStyle() @@ -1581,7 +1676,8 @@ void _paragraphTests() { ..forceStrutHeight = false; final SkParagraphStyle paragraphStyle = canvasKit.ParagraphStyle(props); - final SkParagraphBuilder builder = canvasKit.ParagraphBuilder.MakeFromFontCollection( + final SkParagraphBuilder builder = + canvasKit.ParagraphBuilder.MakeFromFontCollection( paragraphStyle, CanvasKitRenderer.instance.fontCollection.skFontCollection, ); @@ -1597,16 +1693,14 @@ void _paragraphTests() { builder.pushStyle(canvasKit.TextStyle(SkTextStyleProperties() ..color = Float32List.fromList([1, 0, 0, 1]) ..fontSize = 24 - ..fontFamilies = ['Roboto', 'serif'] - )); + ..fontFamilies = ['Roboto', 'serif'])); builder.addText('World'); builder.pop(); builder.pushPaintStyle( canvasKit.TextStyle(SkTextStyleProperties() ..color = Float32List.fromList([1, 0, 0, 1]) ..fontSize = 60 - ..fontFamilies = ['Roboto', 'serif'] - ), + ..fontFamilies = ['Roboto', 'serif']), SkPaint()..setColorInt(0xFF0000FF), SkPaint()..setColorInt(0xFFFF0000), ); @@ -1634,7 +1728,12 @@ void _paragraphTests() { skCanvas.drawColorInt(0xFFCCCCCC, toSkBlendMode(ui.BlendMode.srcOver)); skCanvas.drawParagraph(paragraph, 20, 20); skCanvas.drawRect( - Float32List.fromList([20, 20, 20 + paragraph.getMaxIntrinsicWidth(), 20 + paragraph.getHeight()]), + Float32List.fromList([ + 20, + 20, + 20 + paragraph.getMaxIntrinsicWidth(), + 20 + paragraph.getHeight() + ]), SkPaint() ..setStyle(toSkPaintStyle(ui.PaintingStyle.stroke)) ..setStrokeWidth(1) @@ -1660,12 +1759,10 @@ void _paragraphTests() { expectAlmost(paragraph.getMaxIntrinsicWidth(), 263); expectAlmost(paragraph.getMinIntrinsicWidth(), 135); expectAlmost(paragraph.getMaxWidth(), 500); - final SkRectWithDirection rectWithDirection = - paragraph.getRectsForRange( - 1, - 3, - canvasKit.RectHeightStyle.Tight, - canvasKit.RectWidthStyle.Max).single; + final SkRectWithDirection rectWithDirection = paragraph + .getRectsForRange( + 1, 3, canvasKit.RectHeightStyle.Tight, canvasKit.RectWidthStyle.Max) + .single; expect( rectWithDirection.rect, hasLength(4), @@ -1673,8 +1770,7 @@ void _paragraphTests() { expect(paragraph.getRectsForPlaceholders(), hasLength(1)); expect(paragraph.getLineMetrics(), hasLength(1)); - final SkLineMetrics lineMetrics = - paragraph.getLineMetrics().single; + final SkLineMetrics lineMetrics = paragraph.getLineMetrics().single; expectAlmost(lineMetrics.ascent, 55.6); expectAlmost(lineMetrics.descent, 14.8); expect(lineMetrics.isHardBreak, isTrue); @@ -1793,18 +1889,14 @@ void _paragraphTests() { majorVersion: webGLVersion.toDouble(), ), ); - final SkGrContext grContext = canvasKit.MakeGrContext(glContext); + final SkGrContext grContext = canvasKit.MakeGrContext(glContext); final SkSurface? skSurface = canvasKit.MakeOnScreenGLSurface( - grContext, - 100, - 100, - SkColorSpaceSRGB, - sampleCount, - stencilBits - ); + grContext, 100, 100, SkColorSpaceSRGB, sampleCount, stencilBits); expect(skSurface, isNotNull); - }, skip: isFirefox); // Intended: Headless firefox has no webgl support https://github.com/flutter/flutter/issues/109265 + }, + skip: + isFirefox); // Intended: Headless firefox has no webgl support https://github.com/flutter/flutter/issues/109265 test('MakeRenderTarget test', () { final DomCanvasElement canvas = createDomCanvasElement( @@ -1819,11 +1911,13 @@ void _paragraphTests() { majorVersion: webGLVersion.toDouble(), ), ).toInt(); - final SkGrContext grContext = canvasKit.MakeGrContext(glContext.toDouble()); + final SkGrContext grContext = canvasKit.MakeGrContext(glContext.toDouble()); final SkSurface? surface = canvasKit.MakeRenderTarget(grContext, 1, 1); expect(surface, isNotNull); - }, skip: isFirefox); // Intended: Headless firefox has no webgl support https://github.com/flutter/flutter/issues/109265 + }, + skip: + isFirefox); // Intended: Headless firefox has no webgl support https://github.com/flutter/flutter/issues/109265 group('getCanvasKitJsFileNames', () { dynamic oldV8BreakIterator = v8BreakIterator; @@ -1844,8 +1938,10 @@ void _paragraphTests() { intlSegmenter = Object(); // Any non-null value. browserSupportsImageDecoder = true; - expect(getCanvasKitJsFileNames(CanvasKitVariant.full), ['canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), ['chromium/canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.full), + ['canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), + ['chromium/canvaskit.js']); expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), [ 'chromium/canvaskit.js', 'canvaskit.js', @@ -1854,12 +1950,16 @@ void _paragraphTests() { test('in older versions of Chromium-based browsers', () { v8BreakIterator = Object(); // Any non-null value. - intlSegmenter = null; // Older versions of Chromium didn't have the Intl.Segmenter API. + intlSegmenter = + null; // Older versions of Chromium didn't have the Intl.Segmenter API. browserSupportsImageDecoder = true; - expect(getCanvasKitJsFileNames(CanvasKitVariant.full), ['canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), ['chromium/canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), ['canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.full), + ['canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), + ['chromium/canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), + ['canvaskit.js']); }); test('in other browsers', () { @@ -1867,23 +1967,32 @@ void _paragraphTests() { v8BreakIterator = null; browserSupportsImageDecoder = true; - expect(getCanvasKitJsFileNames(CanvasKitVariant.full), ['canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), ['chromium/canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), ['canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.full), + ['canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), + ['chromium/canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), + ['canvaskit.js']); v8BreakIterator = Object(); browserSupportsImageDecoder = false; // TODO(mdebbar): we don't check image codecs for now. // https://github.com/flutter/flutter/issues/122331 - expect(getCanvasKitJsFileNames(CanvasKitVariant.full), ['canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), ['chromium/canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), ['chromium/canvaskit.js', 'canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.full), + ['canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), + ['chromium/canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), + ['chromium/canvaskit.js', 'canvaskit.js']); v8BreakIterator = null; browserSupportsImageDecoder = false; - expect(getCanvasKitJsFileNames(CanvasKitVariant.full), ['canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), ['chromium/canvaskit.js']); - expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), ['canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.full), + ['canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.chromium), + ['chromium/canvaskit.js']); + expect(getCanvasKitJsFileNames(CanvasKitVariant.auto), + ['canvaskit.js']); }); }); @@ -1907,12 +2016,12 @@ void _paragraphTests() { // FinalizationRegistry because it depends on GC, which cannot be controlled, // So the test simply tests that a FinalizationRegistry can be constructed // and its `register` method can be called. - final DomFinalizationRegistry registry = createDomFinalizationRegistry((String arg) {}.toJS); + final DomFinalizationRegistry registry = + createDomFinalizationRegistry((String arg) {}.toJS); registry.register(Object(), Object()); }); } - @JS('window.Intl.v8BreakIterator') external dynamic get v8BreakIterator; From e1c5ad55fb856e621ec5d765676fb7446eee7db0 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 7 Jul 2023 13:52:05 -0700 Subject: [PATCH 004/211] Fix tests --- lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart | 1 - lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart | 1 + lib/web_ui/test/ui/scene_builder_test.dart | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart b/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart index b11e0cb18b075..779ca9babb1bc 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart @@ -424,7 +424,6 @@ class HtmlViewEmbedder { final CkCanvas canvas = frame.skiaCanvas; final CkPicture ckPicture = _context.pictureRecorders[pictureRecorderIndex].endRecording(); - print(ckPicture.cullRect()); canvas.clear(const ui.Color(0x00000000)); canvas.drawPicture(ckPicture); pictureRecorderIndex++; diff --git a/lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart b/lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart index b8b420bb829a6..67f01fff852f9 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart @@ -33,6 +33,7 @@ class Rasterizer { SurfaceFactory.instance.baseSurface.acquireFrame(layerTree.frameSize); HtmlViewEmbedder.instance.frameSize = layerTree.frameSize; final CkCanvas canvas = frame.skiaCanvas; + canvas.clear(const ui.Color(0x00000000)); final Frame compositorFrame = context.acquireFrame(canvas, HtmlViewEmbedder.instance); diff --git a/lib/web_ui/test/ui/scene_builder_test.dart b/lib/web_ui/test/ui/scene_builder_test.dart index 741a8f3816860..f321819d20ef1 100644 --- a/lib/web_ui/test/ui/scene_builder_test.dart +++ b/lib/web_ui/test/ui/scene_builder_test.dart @@ -218,6 +218,7 @@ Future testMain() async { sceneBuilder.pushImageFilter(ui.ImageFilter.blur( sigmaX: 5.0, sigmaY: 5.0, + tileMode: ui.TileMode.decal, )); sceneBuilder.addPicture(ui.Offset.zero, drawPicture((ui.Canvas canvas) { From 3490384a54f507cf7284c0ed028a741033035a2d Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 7 Jul 2023 14:10:01 -0700 Subject: [PATCH 005/211] Add test for cullRect with infinite draw size --- lib/web_ui/test/canvaskit/picture_test.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/web_ui/test/canvaskit/picture_test.dart b/lib/web_ui/test/canvaskit/picture_test.dart index eec726dbc424e..65a29525e473c 100644 --- a/lib/web_ui/test/canvaskit/picture_test.dart +++ b/lib/web_ui/test/canvaskit/picture_test.dart @@ -97,6 +97,21 @@ void testMain() { expect(bounds, equals(const ui.Rect.fromLTRB(20, 20, 300, 300))); }); + test('cullRect bounds with infinite size draw', () async { + const ui.Color red = ui.Color.fromRGBO(255, 0, 0, 1); + + final ui.PictureRecorder recorder = ui.PictureRecorder(); + final ui.Canvas canvas = ui.Canvas(recorder); + canvas.drawColor(red, ui.BlendMode.src); + + final CkPicture picture = recorder.endRecording() as CkPicture; + final ui.Rect bounds = picture.cullRect(); + // Since the drawColor command fills the entire canvas, the computed + // bounds default to the cullRect that is passed in when the + // PictureRecorder is created, ie ui.Rect.largest. + expect(bounds, equals(ui.Rect.largest)); + }); + test('approximateBytesUsed', () async { const ui.Color red = ui.Color.fromRGBO(255, 0, 0, 1); const ui.Color green = ui.Color.fromRGBO(0, 255, 0, 1); From 97f9c1d848cc621e3fc3472006d1eeb30256e409 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 12 Jul 2023 15:49:50 -0700 Subject: [PATCH 006/211] Adjust for comments --- lib/web_ui/lib/src/engine/canvaskit/layer.dart | 2 +- lib/web_ui/lib/src/engine/canvaskit/picture.dart | 16 ++++++++++------ lib/web_ui/test/canvaskit/picture_test.dart | 4 ++-- lib/web_ui/test/ui/scene_builder_test.dart | 1 - 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/web_ui/lib/src/engine/canvaskit/layer.dart b/lib/web_ui/lib/src/engine/canvaskit/layer.dart index f1c8af2df0cdb..51a2ca14d16eb 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/layer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/layer.dart @@ -466,7 +466,7 @@ class PictureLayer extends Layer { @override void preroll(PrerollContext prerollContext, Matrix4 matrix) { - paintBounds = picture.cullRect().shift(offset); + paintBounds = picture.cullRect.shift(offset); } @override diff --git a/lib/web_ui/lib/src/engine/canvaskit/picture.dart b/lib/web_ui/lib/src/engine/canvaskit/picture.dart index 6ea9847a35571..52b8229ec2b9f 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/picture.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/picture.dart @@ -6,6 +6,7 @@ import 'dart:typed_data'; import 'package:ui/ui.dart' as ui; +import '../scene_painting.dart'; import 'canvas.dart'; import 'canvaskit_api.dart'; import 'image.dart'; @@ -14,7 +15,7 @@ import 'surface.dart'; import 'surface_factory.dart'; /// Implements [ui.Picture] on top of [SkPicture]. -class CkPicture implements ui.Picture { +class CkPicture implements ScenePicture { CkPicture(SkPicture skPicture) { _ref = UniqueRef(this, skPicture, 'Picture'); } @@ -23,7 +24,8 @@ class CkPicture implements ui.Picture { SkPicture get skiaObject => _ref.nativeObject; - ui.Rect cullRect() => fromSkRect(skiaObject.cullRect()); + @override + ui.Rect get cullRect => fromSkRect(skiaObject.cullRect()); @override int get approximateBytesUsed => skiaObject.approximateBytesUsed(); @@ -40,7 +42,8 @@ class CkPicture implements ui.Picture { return result!; } - throw StateError('Picture.debugDisposed is only available when asserts are enabled.'); + throw StateError( + 'Picture.debugDisposed is only available when asserts are enabled.'); } /// This is set to true when [dispose] is called and is never reset back to @@ -97,8 +100,8 @@ class CkPicture implements ui.Picture { assert(debugCheckNotDisposed('Cannot convert picture to image.')); final Surface surface = SurfaceFactory.instance.pictureToImageSurface; - final CkSurface ckSurface = - surface.createOrUpdateSurface(ui.Size(width.toDouble(), height.toDouble())); + final CkSurface ckSurface = surface + .createOrUpdateSurface(ui.Size(width.toDouble(), height.toDouble())); final CkCanvas ckCanvas = ckSurface.getCanvas(); ckCanvas.clear(const ui.Color(0x00000000)); ckCanvas.drawPicture(this); @@ -111,7 +114,8 @@ class CkPicture implements ui.Picture { height: height.toDouble(), ); final Uint8List pixels = skImage.readPixels(0, 0, imageInfo); - final SkImage? rasterImage = canvasKit.MakeImage(imageInfo, pixels, (4 * width).toDouble()); + final SkImage? rasterImage = + canvasKit.MakeImage(imageInfo, pixels, (4 * width).toDouble()); if (rasterImage == null) { throw StateError('Unable to convert image pixels into SkImage.'); } diff --git a/lib/web_ui/test/canvaskit/picture_test.dart b/lib/web_ui/test/canvaskit/picture_test.dart index 65a29525e473c..035ea3ba4c197 100644 --- a/lib/web_ui/test/canvaskit/picture_test.dart +++ b/lib/web_ui/test/canvaskit/picture_test.dart @@ -91,7 +91,7 @@ void testMain() { ); final CkPicture picture = recorder.endRecording() as CkPicture; - final ui.Rect bounds = picture.cullRect(); + final ui.Rect bounds = picture.cullRect; // Top left bounded by the red rrect, right bounded by right edge // of red rrect, bottom bounded by bottom of green circle. expect(bounds, equals(const ui.Rect.fromLTRB(20, 20, 300, 300))); @@ -105,7 +105,7 @@ void testMain() { canvas.drawColor(red, ui.BlendMode.src); final CkPicture picture = recorder.endRecording() as CkPicture; - final ui.Rect bounds = picture.cullRect(); + final ui.Rect bounds = picture.cullRect; // Since the drawColor command fills the entire canvas, the computed // bounds default to the cullRect that is passed in when the // PictureRecorder is created, ie ui.Rect.largest. diff --git a/lib/web_ui/test/ui/scene_builder_test.dart b/lib/web_ui/test/ui/scene_builder_test.dart index f321819d20ef1..741a8f3816860 100644 --- a/lib/web_ui/test/ui/scene_builder_test.dart +++ b/lib/web_ui/test/ui/scene_builder_test.dart @@ -218,7 +218,6 @@ Future testMain() async { sceneBuilder.pushImageFilter(ui.ImageFilter.blur( sigmaX: 5.0, sigmaY: 5.0, - tileMode: ui.TileMode.decal, )); sceneBuilder.addPicture(ui.Offset.zero, drawPicture((ui.Canvas canvas) { From 72a37608a873b609e7e6107a962b8f6e0b60bf84 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Wed, 12 Jul 2023 16:12:50 -0700 Subject: [PATCH 007/211] [Impeller] Allocate buffers out of a pool on the raster thread. (#43564) https://github.com/flutter/flutter/issues/129392 Buffer allocations on worker threads can interefere with allocations on the main thread. Since all buffers that we allocate on the main thread are discarded after a frame, we can use a ring buffer of VmaPool objects with a linear allocate bit to get faster allocations. This works for buffers because they are likely to be suballocated, so we can continue to reuse the same memory over and over. Whereas most of our textures require dedicated allocations. In order to support this, we need the allocator to track an incrementing frame counter (actually this would probably be useful for the context to do in general, but we'll get there eventually). ![image](https://github.com/flutter/engine/assets/8975114/4a485e2b-c557-4567-9266-a725fc1448db) --- impeller/core/allocator.cc | 2 + impeller/core/allocator.h | 4 + .../renderer/backend/vulkan/allocator_vk.cc | 114 +++++++++++++++--- .../renderer/backend/vulkan/allocator_vk.h | 12 ++ .../renderer/backend/vulkan/context_vk.cc | 3 + 5 files changed, 115 insertions(+), 20 deletions(-) diff --git a/impeller/core/allocator.cc b/impeller/core/allocator.cc index be380b671ec27..075a738fe5b4f 100644 --- a/impeller/core/allocator.cc +++ b/impeller/core/allocator.cc @@ -61,4 +61,6 @@ uint16_t Allocator::MinimumBytesPerRow(PixelFormat format) const { return BytesPerPixelForPixelFormat(format); } +void Allocator::DidAcquireSurfaceFrame() {} + } // namespace impeller diff --git a/impeller/core/allocator.h b/impeller/core/allocator.h index 25b3dae07a22c..62b86b72b047f 100644 --- a/impeller/core/allocator.h +++ b/impeller/core/allocator.h @@ -45,6 +45,10 @@ class Allocator { virtual ISize GetMaxTextureSizeSupported() const = 0; + /// @brief Increment an internal frame used to cycle through a ring buffer of + /// allocation pools. + virtual void DidAcquireSurfaceFrame(); + protected: Allocator(); diff --git a/impeller/renderer/backend/vulkan/allocator_vk.cc b/impeller/renderer/backend/vulkan/allocator_vk.cc index d0af9e4afff2d..a865ca8ee98b6 100644 --- a/impeller/renderer/backend/vulkan/allocator_vk.cc +++ b/impeller/renderer/backend/vulkan/allocator_vk.cc @@ -93,6 +93,10 @@ AllocatorVK::AllocatorVK(std::weak_ptr context, VALIDATION_LOG << "Could not create memory allocator"; return; } + for (auto i = 0u; i < kPoolCount; i++) { + created_buffer_pools_ &= + CreateBufferPool(allocator, &staging_buffer_pools_[i]); + } allocator_ = allocator; supports_memoryless_textures_ = capabilities.SupportsMemorylessTextures(); is_valid_ = true; @@ -101,6 +105,11 @@ AllocatorVK::AllocatorVK(std::weak_ptr context, AllocatorVK::~AllocatorVK() { TRACE_EVENT0("impeller", "DestroyAllocatorVK"); if (allocator_) { + for (auto i = 0u; i < kPoolCount; i++) { + if (staging_buffer_pools_[i]) { + ::vmaDestroyPool(allocator_, staging_buffer_pools_[i]); + } + } ::vmaDestroyAllocator(allocator_); } } @@ -177,35 +186,51 @@ static constexpr VmaMemoryUsage ToVMAMemoryUsage() { return VMA_MEMORY_USAGE_AUTO; } -static constexpr VkMemoryPropertyFlags ToVKTextureMemoryPropertyFlags( - StorageMode mode, - bool supports_memoryless_textures) { +static constexpr vk::Flags +ToVKTextureMemoryPropertyFlags(StorageMode mode, + bool supports_memoryless_textures) { switch (mode) { case StorageMode::kHostVisible: - return VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT; + return vk::MemoryPropertyFlagBits::eHostVisible | + vk::MemoryPropertyFlagBits::eDeviceLocal | + vk::MemoryPropertyFlagBits::eHostCoherent; case StorageMode::kDevicePrivate: - return VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; + return vk::MemoryPropertyFlagBits::eDeviceLocal; case StorageMode::kDeviceTransient: if (supports_memoryless_textures) { - return VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT | - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; + return vk::MemoryPropertyFlagBits::eLazilyAllocated | + vk::MemoryPropertyFlagBits::eDeviceLocal; } - return VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; + return vk::MemoryPropertyFlagBits::eDeviceLocal; + } + FML_UNREACHABLE(); +} + +static constexpr vk::Flags +ToVKBufferMemoryPropertyFlags(StorageMode mode) { + switch (mode) { + case StorageMode::kHostVisible: + return vk::MemoryPropertyFlagBits::eHostVisible; + case StorageMode::kDevicePrivate: + return vk::MemoryPropertyFlagBits::eDeviceLocal; + case StorageMode::kDeviceTransient: + return vk::MemoryPropertyFlagBits::eLazilyAllocated; } FML_UNREACHABLE(); } -static constexpr VkMemoryPropertyFlags ToVKBufferMemoryPropertyFlags( +static VmaAllocationCreateFlags ToVmaAllocationBufferCreateFlags( StorageMode mode) { + VmaAllocationCreateFlags flags = 0; switch (mode) { case StorageMode::kHostVisible: - return VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | - VK_MEMORY_PROPERTY_HOST_COHERENT_BIT; + flags |= VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT; + flags |= VMA_ALLOCATION_CREATE_MAPPED_BIT; + return flags; case StorageMode::kDevicePrivate: - return VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; + return flags; case StorageMode::kDeviceTransient: - return VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT; + return flags; } FML_UNREACHABLE(); } @@ -270,8 +295,9 @@ class AllocatedTextureSourceVK final : public TextureSourceVK { VmaAllocationCreateInfo alloc_nfo = {}; alloc_nfo.usage = ToVMAMemoryUsage(); - alloc_nfo.preferredFlags = ToVKTextureMemoryPropertyFlags( - desc.storage_mode, supports_memoryless_textures); + alloc_nfo.preferredFlags = + static_cast(ToVKTextureMemoryPropertyFlags( + desc.storage_mode, supports_memoryless_textures)); alloc_nfo.flags = ToVmaAllocationCreateFlags(desc.storage_mode, /*is_texture=*/true, desc.GetByteSizeOfBaseMipLevel()); @@ -423,6 +449,11 @@ std::shared_ptr AllocatorVK::OnCreateTexture( return std::make_shared(context_, std::move(source)); } +void AllocatorVK::DidAcquireSurfaceFrame() { + frame_count_++; + raster_thread_id_ = std::this_thread::get_id(); +} + // |Allocator| std::shared_ptr AllocatorVK::OnCreateBuffer( const DeviceBufferDescriptor& desc) { @@ -441,10 +472,13 @@ std::shared_ptr AllocatorVK::OnCreateBuffer( VmaAllocationCreateInfo allocation_info = {}; allocation_info.usage = ToVMAMemoryUsage(); - allocation_info.preferredFlags = - ToVKBufferMemoryPropertyFlags(desc.storage_mode); - allocation_info.flags = ToVmaAllocationCreateFlags( - desc.storage_mode, /*is_texture=*/false, desc.size); + allocation_info.preferredFlags = static_cast( + ToVKBufferMemoryPropertyFlags(desc.storage_mode)); + allocation_info.flags = ToVmaAllocationBufferCreateFlags(desc.storage_mode); + if (created_buffer_pools_ && desc.storage_mode == StorageMode::kHostVisible && + raster_thread_id_ == std::this_thread::get_id()) { + allocation_info.pool = staging_buffer_pools_[frame_count_ % kPoolCount]; + } VkBuffer buffer = {}; VmaAllocation buffer_allocation = {}; @@ -472,4 +506,44 @@ std::shared_ptr AllocatorVK::OnCreateBuffer( ); } +// static +bool AllocatorVK::CreateBufferPool(VmaAllocator allocator, VmaPool* pool) { + vk::BufferCreateInfo buffer_info; + buffer_info.usage = vk::BufferUsageFlagBits::eVertexBuffer | + vk::BufferUsageFlagBits::eIndexBuffer | + vk::BufferUsageFlagBits::eUniformBuffer | + vk::BufferUsageFlagBits::eStorageBuffer | + vk::BufferUsageFlagBits::eTransferSrc | + vk::BufferUsageFlagBits::eTransferDst; + buffer_info.size = 1u; // doesn't matter + buffer_info.sharingMode = vk::SharingMode::eExclusive; + auto buffer_info_native = + static_cast(buffer_info); + + VmaAllocationCreateInfo allocation_info = {}; + allocation_info.usage = VMA_MEMORY_USAGE_AUTO; + allocation_info.preferredFlags = static_cast( + ToVKBufferMemoryPropertyFlags(StorageMode::kHostVisible)); + allocation_info.flags = + ToVmaAllocationBufferCreateFlags(StorageMode::kHostVisible); + + uint32_t memTypeIndex; + auto result = vk::Result{vmaFindMemoryTypeIndexForBufferInfo( + allocator, &buffer_info_native, &allocation_info, &memTypeIndex)}; + if (result != vk::Result::eSuccess) { + return false; + } + + VmaPoolCreateInfo pool_create_info = {}; + pool_create_info.memoryTypeIndex = memTypeIndex; + pool_create_info.flags = VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT | + VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT; + + result = vk::Result{vmaCreatePool(allocator, &pool_create_info, pool)}; + if (result != vk::Result::eSuccess) { + return false; + } + return true; +} + } // namespace impeller diff --git a/impeller/renderer/backend/vulkan/allocator_vk.h b/impeller/renderer/backend/vulkan/allocator_vk.h index fba13f2b7cf12..abb65ba836778 100644 --- a/impeller/renderer/backend/vulkan/allocator_vk.h +++ b/impeller/renderer/backend/vulkan/allocator_vk.h @@ -25,13 +25,20 @@ class AllocatorVK final : public Allocator { private: friend class ContextVK; + static constexpr size_t kPoolCount = 3; + fml::RefPtr vk_; VmaAllocator allocator_ = {}; + VmaPool staging_buffer_pools_[kPoolCount] = {}; std::weak_ptr context_; std::weak_ptr device_holder_; ISize max_texture_size_; bool is_valid_ = false; bool supports_memoryless_textures_ = false; + // TODO(jonahwilliams): figure out why CI can't create these buffer pools. + bool created_buffer_pools_ = true; + uint32_t frame_count_ = 0; + std::thread::id raster_thread_id_; AllocatorVK(std::weak_ptr context, uint32_t vulkan_api_version, @@ -45,6 +52,9 @@ class AllocatorVK final : public Allocator { // |Allocator| bool IsValid() const; + // |Allocator| + void DidAcquireSurfaceFrame() override; + // |Allocator| std::shared_ptr OnCreateBuffer( const DeviceBufferDescriptor& desc) override; @@ -56,6 +66,8 @@ class AllocatorVK final : public Allocator { // |Allocator| ISize GetMaxTextureSizeSupported() const override; + static bool CreateBufferPool(VmaAllocator allocator, VmaPool* pool); + FML_DISALLOW_COPY_AND_ASSIGN(AllocatorVK); }; diff --git a/impeller/renderer/backend/vulkan/context_vk.cc b/impeller/renderer/backend/vulkan/context_vk.cc index 116aab140aa5e..56e06ff165cae 100644 --- a/impeller/renderer/backend/vulkan/context_vk.cc +++ b/impeller/renderer/backend/vulkan/context_vk.cc @@ -492,6 +492,9 @@ std::unique_ptr ContextVK::AcquireNextSurface() { if (surface && pipeline_library_) { pipeline_library_->DidAcquireSurfaceFrame(); } + if (allocator_) { + allocator_->DidAcquireSurfaceFrame(); + } return surface; } From 3e7e62efd93970224e57a14e000c477099d2dcb0 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Wed, 12 Jul 2023 17:34:34 -0700 Subject: [PATCH 008/211] [Impeller] Add support to embedder for Impeller on GL (via Angle on Windows). (#43388) Actually works now, though there is some issue with the default fbo stencil so I've filled https://github.com/flutter/flutter/issues/130048 Other issues: * ~~Rendering looks wrong~~ * ~~Resizing window hangs~~ * ~~Reactor isn't set up correctly and all blit passes are currently failing.~~ * ~~Needs to handle falling back to sample count of 1 like we do on Android~~. --- ci/licenses_golden/licenses_flutter | 4 + .../renderer/backend/gles/render_pass_gles.cc | 9 + shell/common/rasterizer.cc | 1 - shell/gpu/gpu_surface_gl_delegate.h | 2 +- shell/gpu/gpu_surface_gl_impeller.cc | 20 +- shell/platform/embedder/BUILD.gn | 33 ++- shell/platform/embedder/embedder.cc | 122 ++++++++++-- .../embedder/embedder_surface_gl_impeller.cc | 188 ++++++++++++++++++ .../embedder/embedder_surface_gl_impeller.h | 81 ++++++++ .../embedder/platform_view_embedder.cc | 8 +- .../embedder/platform_view_embedder.h | 4 +- .../platform/windows/angle_surface_manager.cc | 48 +++-- .../platform/windows/angle_surface_manager.h | 7 +- .../windows/flutter_project_bundle.cc | 12 +- .../windows/flutter_windows_engine.cc | 26 ++- .../platform/windows/flutter_windows_engine.h | 2 + .../flutter_windows_engine_unittests.cc | 35 ++++ .../windows/flutter_windows_view_unittests.cc | 2 +- .../testing/flutter_windows_engine_builder.cc | 6 + .../testing/flutter_windows_engine_builder.h | 3 + 20 files changed, 548 insertions(+), 65 deletions(-) create mode 100644 shell/platform/embedder/embedder_surface_gl_impeller.cc create mode 100644 shell/platform/embedder/embedder_surface_gl_impeller.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index c612f38ea0eed..2eac5e73c0ba2 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -2822,6 +2822,8 @@ ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface.cc + ../../../ ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface_gl.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface_gl.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface_gl_impeller.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface_metal.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface_metal.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/embedder/embedder_surface_metal_impeller.h + ../../../flutter/LICENSE @@ -5526,6 +5528,8 @@ FILE: ../../../flutter/shell/platform/embedder/embedder_surface.cc FILE: ../../../flutter/shell/platform/embedder/embedder_surface.h FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.cc FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.h +FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc +FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl_impeller.h FILE: ../../../flutter/shell/platform/embedder/embedder_surface_metal.h FILE: ../../../flutter/shell/platform/embedder/embedder_surface_metal.mm FILE: ../../../flutter/shell/platform/embedder/embedder_surface_metal_impeller.h diff --git a/impeller/renderer/backend/gles/render_pass_gles.cc b/impeller/renderer/backend/gles/render_pass_gles.cc index a8592027c4b04..2cdadb4fc3cd7 100644 --- a/impeller/renderer/backend/gles/render_pass_gles.cc +++ b/impeller/renderer/backend/gles/render_pass_gles.cc @@ -454,6 +454,7 @@ struct RenderPassData { if (gl.DiscardFramebufferEXT.IsAvailable()) { std::vector attachments; + if (pass_data.discard_color_attachment) { attachments.push_back(is_default_fbo ? GL_COLOR_EXT : GL_COLOR_ATTACHMENT0); @@ -462,7 +463,15 @@ struct RenderPassData { attachments.push_back(is_default_fbo ? GL_DEPTH_EXT : GL_DEPTH_ATTACHMENT); } + +// TODO(jonahwilliams): discarding the stencil on the default fbo when running +// on Windows causes Angle to discard the entire render target. Until we know +// the reason, default to storing. +#ifdef FML_OS_WIN + if (pass_data.discard_stencil_attachment && !is_default_fbo) { +#else if (pass_data.discard_stencil_attachment) { +#endif attachments.push_back(is_default_fbo ? GL_STENCIL_EXT : GL_STENCIL_ATTACHMENT); } diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 3fb35fcc30803..e3daa2d7cabda 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -552,7 +552,6 @@ RasterStatus Rasterizer::DrawToSurfaceUnsafe( auto root_surface_canvas = embedder_root_canvas ? embedder_root_canvas : frame->Canvas(); - auto compositor_frame = compositor_context_->AcquireFrame( surface_->GetContext(), // skia GrContext root_surface_canvas, // root surface canvas diff --git a/shell/gpu/gpu_surface_gl_delegate.h b/shell/gpu/gpu_surface_gl_delegate.h index f097cba2d0266..dee0c682969a0 100644 --- a/shell/gpu/gpu_surface_gl_delegate.h +++ b/shell/gpu/gpu_surface_gl_delegate.h @@ -58,7 +58,7 @@ class GPUSurfaceGLDelegate { virtual std::unique_ptr GLContextMakeCurrent() = 0; // Called to clear the current GL context on the thread. This may be called on - // either the GPU or IO threads. + // either the Raster or IO threads. virtual bool GLContextClearCurrent() = 0; // Inform the GL Context that there's going to be no writing beyond diff --git a/shell/gpu/gpu_surface_gl_impeller.cc b/shell/gpu/gpu_surface_gl_impeller.cc index 20fd96142d917..3b6777042eaa7 100644 --- a/shell/gpu/gpu_surface_gl_impeller.cc +++ b/shell/gpu/gpu_surface_gl_impeller.cc @@ -61,7 +61,7 @@ std::unique_ptr GPUSurfaceGLImpeller::AcquireFrame( delegate = delegate_]() -> bool { if (weak) { GLPresentInfo present_info = { - .fbo_id = 0, + .fbo_id = 0u, .frame_damage = std::nullopt, // TODO (https://github.com/flutter/flutter/issues/105597): wire-up // presentation time to impeller backend. @@ -80,10 +80,14 @@ std::unique_ptr GPUSurfaceGLImpeller::AcquireFrame( return nullptr; } + GLFrameInfo frame_info = {static_cast(size.width()), + static_cast(size.height())}; + const GLFBOInfo fbo_info = delegate_->GLContextFBO(frame_info); + auto surface = impeller::SurfaceGLES::WrapFBO( impeller_context_, // context swap_callback, // swap_callback - 0u, // fbo + fbo_info.fbo_id, // fbo impeller::PixelFormat::kR8G8B8A8UNormInt, // color_format impeller::ISize{size.width(), size.height()} // fbo_size ); @@ -122,12 +126,12 @@ std::unique_ptr GPUSurfaceGLImpeller::AcquireFrame( }); return std::make_unique( - nullptr, // surface - SurfaceFrame::FramebufferInfo{}, // framebuffer info - submit_callback, // submit callback - size, // frame size - std::move(context_switch), // context result - true // display list fallback + nullptr, // surface + delegate_->GLContextFramebufferInfo(), // framebuffer info + submit_callback, // submit callback + size, // frame size + std::move(context_switch), // context result + true // display list fallback ); } diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index aa43f3f48b755..5bfe8cad0215f 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -95,16 +95,6 @@ template("embedder_source_set") { ] public_deps = [ ":embedder_headers" ] - - if (embedder_enable_gl) { - sources += [ - "embedder_external_texture_gl.cc", - "embedder_external_texture_gl.h", - "embedder_surface_gl.cc", - "embedder_surface_gl.h", - ] - } - deps = [ ":embedder_gpu_configuration", "//flutter/assets", @@ -121,13 +111,33 @@ template("embedder_source_set") { "//third_party/skia", ] + if (embedder_enable_gl) { + sources += [ + "embedder_external_texture_gl.cc", + "embedder_external_texture_gl.h", + "embedder_surface_gl.cc", + "embedder_surface_gl.h", + ] + + if (impeller_supports_rendering) { + sources += [ + "embedder_surface_gl_impeller.cc", + "embedder_surface_gl_impeller.h", + ] + deps += [ "//flutter/impeller/renderer/backend/gles" ] + } + } + if (impeller_supports_rendering) { sources += [ "embedder_render_target_impeller.cc", "embedder_render_target_impeller.h", ] - deps += [ "//flutter/impeller" ] + deps += [ + "//flutter/impeller", + "//flutter/impeller/renderer", + ] } if (embedder_enable_metal) { @@ -143,6 +153,7 @@ template("embedder_source_set") { "embedder_surface_metal_impeller.h", "embedder_surface_metal_impeller.mm", ] + deps += [ "//flutter/impeller/renderer/backend/metal" ] } cflags_objc = flutter_cflags_objc diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 008ea576482d5..34b874b609a85 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -64,9 +64,20 @@ extern const intptr_t kPlatformStrongDillSize; #include "rapidjson/rapidjson.h" #include "rapidjson/writer.h" +// Note: the IMPELLER_SUPPORTS_RENDERING may be defined even when the +// embedder/BUILD.gn variable impeller_supports_rendering is disabled. #ifdef SHELL_ENABLE_GL #include "flutter/shell/platform/embedder/embedder_external_texture_gl.h" -#endif +#ifdef IMPELLER_SUPPORTS_RENDERING +#include "flutter/shell/platform/embedder/embedder_render_target_impeller.h" // nogncheck +#include "flutter/shell/platform/embedder/embedder_surface_gl_impeller.h" // nogncheck +#include "impeller/core/texture.h" // nogncheck +#include "impeller/renderer/backend/gles/context_gles.h" // nogncheck +#include "impeller/renderer/backend/gles/texture_gles.h" // nogncheck +#include "impeller/renderer/context.h" // nogncheck +#include "impeller/renderer/render_target.h" // nogncheck +#endif // IMPELLER_SUPPORTS_RENDERING +#endif // SHELL_ENABLE_GL #ifdef SHELL_ENABLE_METAL #include "flutter/shell/platform/embedder/embedder_surface_metal.h" @@ -265,7 +276,8 @@ InferOpenGLPlatformViewCreationCallback( const flutter::PlatformViewEmbedder::PlatformDispatchTable& platform_dispatch_table, std::unique_ptr - external_view_embedder) { + external_view_embedder, + bool enable_impeller) { #ifdef SHELL_ENABLE_GL if (config->type != kOpenGL) { return nullptr; @@ -441,15 +453,30 @@ InferOpenGLPlatformViewCreationCallback( return fml::MakeCopyable( [gl_dispatch_table, fbo_reset_after_present, platform_dispatch_table, + enable_impeller, external_view_embedder = std::move(external_view_embedder)](flutter::Shell& shell) mutable { + std::shared_ptr view_embedder = + std::move(external_view_embedder); + if (enable_impeller) { + return std::make_unique( + shell, // delegate + shell.GetTaskRunners(), // task runners + std::make_unique( + gl_dispatch_table, fbo_reset_after_present, + view_embedder), // embedder_surface + platform_dispatch_table, // embedder platform dispatch table + view_embedder // external view embedder + ); + } return std::make_unique( - shell, // delegate - shell.GetTaskRunners(), // task runners - gl_dispatch_table, // embedder GL dispatch table - fbo_reset_after_present, // fbo reset after present + shell, // delegate + shell.GetTaskRunners(), // task runners + std::make_unique( + gl_dispatch_table, fbo_reset_after_present, + view_embedder), // embedder_surface platform_dispatch_table, // embedder platform dispatch table - std::move(external_view_embedder) // external view embedder + view_embedder // external view embedder ); }); #else @@ -686,7 +713,7 @@ InferPlatformViewCreationCallback( case kOpenGL: return InferOpenGLPlatformViewCreationCallback( config, user_data, platform_dispatch_table, - std::move(external_view_embedder)); + std::move(external_view_embedder), enable_impeller); case kSoftware: return InferSoftwarePlatformViewCreationCallback( config, user_data, platform_dispatch_table, @@ -924,6 +951,66 @@ static sk_sp MakeSkSurfaceFromBackingStore( #endif } +static std::unique_ptr +MakeRenderTargetFromBackingStoreImpeller( + FlutterBackingStore backing_store, + const fml::closure& on_release, + const std::shared_ptr& aiks_context, + const FlutterBackingStoreConfig& config, + const FlutterOpenGLFramebuffer* framebuffer) { +#if defined(SHELL_ENABLE_GL) && defined(IMPELLER_SUPPORTS_RENDERING) + + const auto& gl_context = + impeller::ContextGLES::Cast(*aiks_context->GetContext()); + const auto size = impeller::ISize(config.size.width, config.size.height); + + impeller::TextureDescriptor color0_tex; + color0_tex.type = impeller::TextureType::kTexture2D; + color0_tex.format = impeller::PixelFormat::kR8G8B8A8UNormInt; + color0_tex.size = size; + color0_tex.usage = static_cast( + impeller::TextureUsage::kRenderTarget); + color0_tex.sample_count = impeller::SampleCount::kCount1; + color0_tex.storage_mode = impeller::StorageMode::kDevicePrivate; + + impeller::ColorAttachment color0; + color0.texture = std::make_shared( + gl_context.GetReactor(), color0_tex, + impeller::TextureGLES::IsWrapped::kWrapped); + color0.clear_color = impeller::Color::DarkSlateGray(); + color0.load_action = impeller::LoadAction::kClear; + color0.store_action = impeller::StoreAction::kStore; + + impeller::TextureDescriptor stencil0_tex; + stencil0_tex.type = impeller::TextureType::kTexture2D; + stencil0_tex.format = impeller::PixelFormat::kR8G8B8A8UNormInt; + stencil0_tex.size = size; + stencil0_tex.usage = static_cast( + impeller::TextureUsage::kRenderTarget); + stencil0_tex.sample_count = impeller::SampleCount::kCount1; + + impeller::StencilAttachment stencil0; + stencil0.clear_stencil = 0; + stencil0.texture = std::make_shared( + gl_context.GetReactor(), stencil0_tex, + impeller::TextureGLES::IsWrapped::kWrapped); + stencil0.load_action = impeller::LoadAction::kClear; + stencil0.store_action = impeller::StoreAction::kDontCare; + + impeller::RenderTarget render_target_desc; + + render_target_desc.SetColorAttachment(color0, framebuffer->target); + render_target_desc.SetStencilAttachment(stencil0); + + return std::make_unique( + backing_store, aiks_context, + std::make_unique(std::move(render_target_desc)), + on_release); +#else + return nullptr; +#endif +} + static std::unique_ptr MakeRenderTargetFromBackingStoreImpeller( FlutterBackingStore backing_store, @@ -1113,12 +1200,19 @@ CreateEmbedderRenderTarget( break; } case kFlutterOpenGLTargetTypeFramebuffer: { - auto skia_surface = MakeSkSurfaceFromBackingStore( - context, config, &backing_store.open_gl.framebuffer); - render_target = MakeRenderTargetFromSkSurface( - backing_store, std::move(skia_surface), - collect_callback.Release()); - break; + if (enable_impeller) { + render_target = MakeRenderTargetFromBackingStoreImpeller( + backing_store, collect_callback.Release(), aiks_context, config, + &backing_store.open_gl.framebuffer); + break; + } else { + auto skia_surface = MakeSkSurfaceFromBackingStore( + context, config, &backing_store.open_gl.framebuffer); + render_target = MakeRenderTargetFromSkSurface( + backing_store, std::move(skia_surface), + collect_callback.Release()); + break; + } } } break; diff --git a/shell/platform/embedder/embedder_surface_gl_impeller.cc b/shell/platform/embedder/embedder_surface_gl_impeller.cc new file mode 100644 index 0000000000000..7a4c3ddf1524b --- /dev/null +++ b/shell/platform/embedder/embedder_surface_gl_impeller.cc @@ -0,0 +1,188 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/shell/platform/embedder/embedder_surface_gl_impeller.h" + +#include + +#include "impeller/entity/gles/entity_shaders_gles.h" +#include "impeller/renderer/backend/gles/context_gles.h" +#include "impeller/renderer/backend/gles/proc_table_gles.h" +#include "impeller/scene/shaders/gles/scene_shaders_gles.h" + +namespace flutter { + +class ReactorWorker final : public impeller::ReactorGLES::Worker { + public: + ReactorWorker() = default; + + // |ReactorGLES::Worker| + bool CanReactorReactOnCurrentThreadNow( + const impeller::ReactorGLES& reactor) const override { + impeller::ReaderLock lock(mutex_); + auto found = reactions_allowed_.find(std::this_thread::get_id()); + if (found == reactions_allowed_.end()) { + return false; + } + return found->second; + } + + void SetReactionsAllowedOnCurrentThread(bool allowed) { + impeller::WriterLock lock(mutex_); + reactions_allowed_[std::this_thread::get_id()] = allowed; + } + + private: + mutable impeller::RWMutex mutex_; + std::map reactions_allowed_ IPLR_GUARDED_BY(mutex_); + + FML_DISALLOW_COPY_AND_ASSIGN(ReactorWorker); +}; + +EmbedderSurfaceGLImpeller::EmbedderSurfaceGLImpeller( + EmbedderSurfaceGL::GLDispatchTable gl_dispatch_table, + bool fbo_reset_after_present, + std::shared_ptr external_view_embedder) + : gl_dispatch_table_(std::move(gl_dispatch_table)), + fbo_reset_after_present_(fbo_reset_after_present), + external_view_embedder_(std::move(external_view_embedder)), + worker_(std::make_shared()) { + // Make sure all required members of the dispatch table are checked. + if (!gl_dispatch_table_.gl_make_current_callback || + !gl_dispatch_table_.gl_clear_current_callback || + !gl_dispatch_table_.gl_present_callback || + !gl_dispatch_table_.gl_fbo_callback || + !gl_dispatch_table_.gl_populate_existing_damage || + !gl_dispatch_table_.gl_proc_resolver) { + return; + } + std::vector> shader_mappings = { + std::make_shared( + impeller_entity_shaders_gles_data, + impeller_entity_shaders_gles_length), + std::make_shared( + impeller_scene_shaders_gles_data, impeller_scene_shaders_gles_length), + }; + auto gl = std::make_unique( + gl_dispatch_table_.gl_proc_resolver); + if (!gl->IsValid()) { + return; + } + + impeller_context_ = + impeller::ContextGLES::Create(std::move(gl), shader_mappings); + + if (!impeller_context_) { + FML_LOG(ERROR) << "Could not create Impeller context."; + return; + } + + worker_->SetReactionsAllowedOnCurrentThread(true); + auto worker_id = impeller_context_->AddReactorWorker(worker_); + if (!worker_id.has_value()) { + FML_LOG(ERROR) << "Could not add reactor worker."; + return; + } + + FML_LOG(ERROR) << "Using the Impeller rendering backend (OpenGL)."; + valid_ = true; +} + +EmbedderSurfaceGLImpeller::~EmbedderSurfaceGLImpeller() = default; + +// |EmbedderSurface| +bool EmbedderSurfaceGLImpeller::IsValid() const { + return valid_; +} + +// |GPUSurfaceGLDelegate| +std::unique_ptr +EmbedderSurfaceGLImpeller::GLContextMakeCurrent() { + worker_->SetReactionsAllowedOnCurrentThread(true); + return std::make_unique( + gl_dispatch_table_.gl_make_current_callback()); +} + +// |GPUSurfaceGLDelegate| +bool EmbedderSurfaceGLImpeller::GLContextClearCurrent() { + worker_->SetReactionsAllowedOnCurrentThread(false); + return gl_dispatch_table_.gl_clear_current_callback(); +} + +// |GPUSurfaceGLDelegate| +bool EmbedderSurfaceGLImpeller::GLContextPresent( + const GLPresentInfo& present_info) { + // Pass the present information to the embedder present callback. + return gl_dispatch_table_.gl_present_callback(present_info); +} + +// |GPUSurfaceGLDelegate| +GLFBOInfo EmbedderSurfaceGLImpeller::GLContextFBO( + GLFrameInfo frame_info) const { + // Get the FBO ID using the gl_fbo_callback and then get exiting damage by + // passing that ID to the gl_populate_existing_damage. + return gl_dispatch_table_.gl_populate_existing_damage( + gl_dispatch_table_.gl_fbo_callback(frame_info)); +} + +// |GPUSurfaceGLDelegate| +bool EmbedderSurfaceGLImpeller::GLContextFBOResetAfterPresent() const { + return fbo_reset_after_present_; +} + +// |GPUSurfaceGLDelegate| +SkMatrix EmbedderSurfaceGLImpeller::GLContextSurfaceTransformation() const { + auto callback = gl_dispatch_table_.gl_surface_transformation_callback; + if (!callback) { + SkMatrix matrix; + matrix.setIdentity(); + return matrix; + } + return callback(); +} + +// |GPUSurfaceGLDelegate| +EmbedderSurfaceGL::GLProcResolver EmbedderSurfaceGLImpeller::GetGLProcResolver() + const { + return gl_dispatch_table_.gl_proc_resolver; +} + +// |GPUSurfaceGLDelegate| +SurfaceFrame::FramebufferInfo +EmbedderSurfaceGLImpeller::GLContextFramebufferInfo() const { + // Enable partial repaint by default on the embedders. + auto info = SurfaceFrame::FramebufferInfo{}; + info.supports_readback = true; + info.supports_partial_repaint = + gl_dispatch_table_.gl_populate_existing_damage != nullptr; + return info; +} + +// |EmbedderSurface| +std::unique_ptr EmbedderSurfaceGLImpeller::CreateGPUSurface() { + return std::make_unique( + this, // GPU surface GL delegate + impeller_context_ // render to surface + ); +} + +// |EmbedderSurface| +std::shared_ptr +EmbedderSurfaceGLImpeller::CreateImpellerContext() const { + return impeller_context_; +} + +// |EmbedderSurface| +sk_sp EmbedderSurfaceGLImpeller::CreateResourceContext() + const { + if (gl_dispatch_table_.gl_make_resource_current_callback()) { + worker_->SetReactionsAllowedOnCurrentThread(true); + } else { + FML_DLOG(ERROR) << "Could not make the resource context current."; + worker_->SetReactionsAllowedOnCurrentThread(false); + } + return nullptr; +} + +} // namespace flutter diff --git a/shell/platform/embedder/embedder_surface_gl_impeller.h b/shell/platform/embedder/embedder_surface_gl_impeller.h new file mode 100644 index 0000000000000..6d19272102bf3 --- /dev/null +++ b/shell/platform/embedder/embedder_surface_gl_impeller.h @@ -0,0 +1,81 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_SURFACE_GL_IMPELLER_H_ +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_SURFACE_GL_IMPELLER_H_ + +#include "flutter/fml/macros.h" +#include "flutter/shell/gpu/gpu_surface_gl_impeller.h" +#include "flutter/shell/platform/embedder/embedder_external_view_embedder.h" +#include "flutter/shell/platform/embedder/embedder_surface.h" +#include "flutter/shell/platform/embedder/embedder_surface_gl.h" + +namespace impeller { +class ContextGLES; +} // namespace impeller + +namespace flutter { + +class ReactorWorker; + +class EmbedderSurfaceGLImpeller final : public EmbedderSurface, + public GPUSurfaceGLDelegate { + public: + EmbedderSurfaceGLImpeller( + EmbedderSurfaceGL::GLDispatchTable gl_dispatch_table, + bool fbo_reset_after_present, + std::shared_ptr external_view_embedder); + + ~EmbedderSurfaceGLImpeller() override; + + private: + bool valid_ = false; + EmbedderSurfaceGL::GLDispatchTable gl_dispatch_table_; + bool fbo_reset_after_present_; + std::shared_ptr impeller_context_; + std::shared_ptr external_view_embedder_; + std::shared_ptr worker_; + + // |EmbedderSurface| + bool IsValid() const override; + + // |EmbedderSurface| + std::unique_ptr CreateGPUSurface() override; + + // |EmbedderSurface| + std::shared_ptr CreateImpellerContext() const override; + + // |GPUSurfaceGLDelegate| + std::unique_ptr GLContextMakeCurrent() override; + + // |GPUSurfaceGLDelegate| + bool GLContextClearCurrent() override; + + // |GPUSurfaceGLDelegate| + bool GLContextPresent(const GLPresentInfo& present_info) override; + + // |GPUSurfaceGLDelegate| + GLFBOInfo GLContextFBO(GLFrameInfo frame_info) const override; + + // |GPUSurfaceGLDelegate| + bool GLContextFBOResetAfterPresent() const override; + + // |GPUSurfaceGLDelegate| + SkMatrix GLContextSurfaceTransformation() const override; + + // |GPUSurfaceGLDelegate| + GLProcResolver GetGLProcResolver() const override; + + // |GPUSurfaceGLDelegate| + SurfaceFrame::FramebufferInfo GLContextFramebufferInfo() const override; + + // |EmbedderSurface| + sk_sp CreateResourceContext() const override; + + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderSurfaceGLImpeller); +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_SURFACE_GL_IMPELLER_H_ diff --git a/shell/platform/embedder/platform_view_embedder.cc b/shell/platform/embedder/platform_view_embedder.cc index ccbe0fc01a524..7e7ed026079f3 100644 --- a/shell/platform/embedder/platform_view_embedder.cc +++ b/shell/platform/embedder/platform_view_embedder.cc @@ -66,16 +66,12 @@ PlatformViewEmbedder::PlatformViewEmbedder( PlatformViewEmbedder::PlatformViewEmbedder( PlatformView::Delegate& delegate, const flutter::TaskRunners& task_runners, - const EmbedderSurfaceGL::GLDispatchTable& gl_dispatch_table, - bool fbo_reset_after_present, + std::unique_ptr embedder_surface, PlatformDispatchTable platform_dispatch_table, std::shared_ptr external_view_embedder) : PlatformView(delegate, task_runners), external_view_embedder_(std::move(external_view_embedder)), - embedder_surface_( - std::make_unique(gl_dispatch_table, - fbo_reset_after_present, - external_view_embedder_)), + embedder_surface_(std::move(embedder_surface)), platform_message_handler_(new EmbedderPlatformMessageHandler( GetWeakPtr(), task_runners.GetPlatformTaskRunner())), diff --git a/shell/platform/embedder/platform_view_embedder.h b/shell/platform/embedder/platform_view_embedder.h index 87378b5074672..896e11a7101c6 100644 --- a/shell/platform/embedder/platform_view_embedder.h +++ b/shell/platform/embedder/platform_view_embedder.h @@ -17,6 +17,7 @@ #ifdef SHELL_ENABLE_GL #include "flutter/shell/platform/embedder/embedder_surface_gl.h" +#include "flutter/shell/platform/embedder/embedder_surface_gl_impeller.h" #endif #ifdef SHELL_ENABLE_METAL @@ -65,8 +66,7 @@ class PlatformViewEmbedder final : public PlatformView { PlatformViewEmbedder( PlatformView::Delegate& delegate, const flutter::TaskRunners& task_runners, - const EmbedderSurfaceGL::GLDispatchTable& gl_dispatch_table, - bool fbo_reset_after_present, + std::unique_ptr embedder_surface, PlatformDispatchTable platform_dispatch_table, std::shared_ptr external_view_embedder); #endif diff --git a/shell/platform/windows/angle_surface_manager.cc b/shell/platform/windows/angle_surface_manager.cc index 18d21f6b425b9..7deafc2d0bf8c 100644 --- a/shell/platform/windows/angle_surface_manager.cc +++ b/shell/platform/windows/angle_surface_manager.cc @@ -20,20 +20,21 @@ namespace flutter { int AngleSurfaceManager::instance_count_ = 0; -std::unique_ptr AngleSurfaceManager::Create() { +std::unique_ptr AngleSurfaceManager::Create( + bool enable_impeller) { std::unique_ptr manager; - manager.reset(new AngleSurfaceManager()); + manager.reset(new AngleSurfaceManager(enable_impeller)); if (!manager->initialize_succeeded_) { return nullptr; } return std::move(manager); } -AngleSurfaceManager::AngleSurfaceManager() +AngleSurfaceManager::AngleSurfaceManager(bool enable_impeller) : egl_config_(nullptr), egl_display_(EGL_NO_DISPLAY), egl_context_(EGL_NO_CONTEXT) { - initialize_succeeded_ = Initialize(); + initialize_succeeded_ = Initialize(enable_impeller); ++instance_count_; } @@ -66,15 +67,21 @@ bool AngleSurfaceManager::InitializeEGL( return true; } -bool AngleSurfaceManager::Initialize() { - // TODO(dnfield): Enable MSAA here, see similar code in android_context_gl.cc - // Will need to plumb in argument from project bundle for sampling rate. - // https://github.com/flutter/flutter/issues/100392 +bool AngleSurfaceManager::Initialize(bool enable_impeller) { const EGLint config_attributes[] = {EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, EGL_ALPHA_SIZE, 8, EGL_DEPTH_SIZE, 8, EGL_STENCIL_SIZE, 8, EGL_NONE}; + const EGLint impeller_config_attributes[] = { + EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, EGL_DEPTH_SIZE, 0, EGL_STENCIL_SIZE, 8, + EGL_SAMPLE_BUFFERS, 1, EGL_SAMPLES, 4, EGL_NONE}; + const EGLint impeller_config_attributes_no_msaa[] = { + EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, EGL_DEPTH_SIZE, 0, EGL_STENCIL_SIZE, 8, + EGL_NONE}; + const EGLint display_context_attributes[] = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE}; @@ -147,11 +154,26 @@ bool AngleSurfaceManager::Initialize() { } EGLint numConfigs = 0; - if ((eglChooseConfig(egl_display_, config_attributes, &egl_config_, 1, - &numConfigs) == EGL_FALSE) || - (numConfigs == 0)) { - LogEglError("Failed to choose first context"); - return false; + if (enable_impeller) { + // First try the MSAA configuration. + if ((eglChooseConfig(egl_display_, impeller_config_attributes, &egl_config_, + 1, &numConfigs) == EGL_FALSE) || + (numConfigs == 0)) { + // Next fall back to disabled MSAA. + if ((eglChooseConfig(egl_display_, impeller_config_attributes_no_msaa, + &egl_config_, 1, &numConfigs) == EGL_FALSE) || + (numConfigs == 0)) { + LogEglError("Failed to choose first context"); + return false; + } + } + } else { + if ((eglChooseConfig(egl_display_, config_attributes, &egl_config_, 1, + &numConfigs) == EGL_FALSE) || + (numConfigs == 0)) { + LogEglError("Failed to choose first context"); + return false; + } } egl_context_ = eglCreateContext(egl_display_, egl_config_, EGL_NO_CONTEXT, diff --git a/shell/platform/windows/angle_surface_manager.h b/shell/platform/windows/angle_surface_manager.h index edfe7a8cbcd95..576704f630054 100644 --- a/shell/platform/windows/angle_surface_manager.h +++ b/shell/platform/windows/angle_surface_manager.h @@ -27,7 +27,8 @@ namespace flutter { // destroy surfaces class AngleSurfaceManager { public: - static std::unique_ptr Create(); + static std::unique_ptr Create(bool enable_impeller); + virtual ~AngleSurfaceManager(); // Creates an EGLSurface wrapper and backing DirectX 11 SwapChain @@ -88,10 +89,10 @@ class AngleSurfaceManager { protected: // Creates a new surface manager retaining reference to the passed-in target // for the lifetime of the manager. - AngleSurfaceManager(); + explicit AngleSurfaceManager(bool enable_impeller); private: - bool Initialize(); + bool Initialize(bool enable_impeller); void CleanUp(); // Attempts to initialize EGL using ANGLE. diff --git a/shell/platform/windows/flutter_project_bundle.cc b/shell/platform/windows/flutter_project_bundle.cc index df289b526a0f4..aab3239ce8291 100644 --- a/shell/platform/windows/flutter_project_bundle.cc +++ b/shell/platform/windows/flutter_project_bundle.cc @@ -88,7 +88,17 @@ void FlutterProjectBundle::SetSwitches( } const std::vector FlutterProjectBundle::GetSwitches() { - return GetSwitchesFromEnvironment(); + if (engine_switches_.size() == 0) { + return GetSwitchesFromEnvironment(); + } + std::vector switches; + switches.insert(switches.end(), engine_switches_.begin(), + engine_switches_.end()); + + auto env_switches = GetSwitchesFromEnvironment(); + switches.insert(switches.end(), env_switches.begin(), env_switches.end()); + + return switches; } } // namespace flutter diff --git a/shell/platform/windows/flutter_windows_engine.cc b/shell/platform/windows/flutter_windows_engine.cc index 3dd00d422ae0f..844790db56c17 100644 --- a/shell/platform/windows/flutter_windows_engine.cc +++ b/shell/platform/windows/flutter_windows_engine.cc @@ -199,7 +199,13 @@ FlutterWindowsEngine::FlutterWindowsEngine(const FlutterProjectBundle& project) FlutterWindowsTextureRegistrar::ResolveGlFunctions(gl_procs_); texture_registrar_ = std::make_unique(this, gl_procs_); - surface_manager_ = AngleSurfaceManager::Create(); + + // Check for impeller support. + auto& switches = project_->GetSwitches(); + enable_impeller_ = std::find(switches.begin(), switches.end(), + "--enable-impeller=true") != switches.end(); + + surface_manager_ = AngleSurfaceManager::Create(enable_impeller_); window_proc_delegate_manager_ = std::make_unique(); window_proc_delegate_manager_->RegisterTopLevelWindowProcDelegate( [](HWND hwnd, UINT msg, WPARAM wpar, LPARAM lpar, void* user_data, @@ -369,9 +375,21 @@ bool FlutterWindowsEngine::Run(std::string_view entrypoint) { args.aot_data = aot_data_.get(); } - FlutterRendererConfig renderer_config = surface_manager_ - ? GetOpenGLRendererConfig() - : GetSoftwareRendererConfig(); + FlutterRendererConfig renderer_config; + + if (enable_impeller_) { + // Impeller does not support a Software backend. Avoid falling back and + // confusing the engine on which renderer is selected. + if (!surface_manager_) { + FML_LOG(ERROR) << "Could not create surface manager. Impeller backend " + "does not support software rendering."; + return false; + } + renderer_config = GetOpenGLRendererConfig(); + } else { + renderer_config = surface_manager_ ? GetOpenGLRendererConfig() + : GetSoftwareRendererConfig(); + } auto result = embedder_api_.Run(FLUTTER_ENGINE_VERSION, &renderer_config, &args, this, &engine_); diff --git a/shell/platform/windows/flutter_windows_engine.h b/shell/platform/windows/flutter_windows_engine.h index 01f371d0a4fee..29a904d3506b4 100644 --- a/shell/platform/windows/flutter_windows_engine.h +++ b/shell/platform/windows/flutter_windows_engine.h @@ -391,6 +391,8 @@ class FlutterWindowsEngine { bool high_contrast_enabled_ = false; + bool enable_impeller_ = false; + // The manager for WindowProc delegate registration and callbacks. std::unique_ptr window_proc_delegate_manager_; diff --git a/shell/platform/windows/flutter_windows_engine_unittests.cc b/shell/platform/windows/flutter_windows_engine_unittests.cc index d518e7f9c1f66..80fb26f6cd3b3 100644 --- a/shell/platform/windows/flutter_windows_engine_unittests.cc +++ b/shell/platform/windows/flutter_windows_engine_unittests.cc @@ -223,6 +223,41 @@ TEST_F(FlutterWindowsEngineTest, RunWithoutANGLEUsesSoftware) { modifier.embedder_api().Shutdown = [](auto engine) { return kSuccess; }; } +TEST_F(FlutterWindowsEngineTest, RunWithoutANGLEOnImpellerFailsToStart) { + FlutterWindowsEngineBuilder builder{GetContext()}; + builder.SetSwitches({"--enable-impeller=true"}); + std::unique_ptr engine = builder.Build(); + EngineModifier modifier(engine.get()); + + modifier.embedder_api().NotifyDisplayUpdate = + MOCK_ENGINE_PROC(NotifyDisplayUpdate, + ([engine_instance = engine.get()]( + FLUTTER_API_SYMBOL(FlutterEngine) raw_engine, + const FlutterEngineDisplaysUpdateType update_type, + const FlutterEngineDisplay* embedder_displays, + size_t display_count) { return kSuccess; })); + + // Accessibility updates must do nothing when the embedder engine is mocked + modifier.embedder_api().UpdateAccessibilityFeatures = MOCK_ENGINE_PROC( + UpdateAccessibilityFeatures, + [](FLUTTER_API_SYMBOL(FlutterEngine) engine, + FlutterAccessibilityFeature flags) { return kSuccess; }); + + // Stub out UpdateLocales and SendPlatformMessage as we don't have a fully + // initialized engine instance. + modifier.embedder_api().UpdateLocales = MOCK_ENGINE_PROC( + UpdateLocales, ([](auto engine, const FlutterLocale** locales, + size_t locales_count) { return kSuccess; })); + modifier.embedder_api().SendPlatformMessage = + MOCK_ENGINE_PROC(SendPlatformMessage, + ([](auto engine, auto message) { return kSuccess; })); + + // Set the AngleSurfaceManager to nullptr to test software fallback path. + modifier.SetSurfaceManager(nullptr); + + EXPECT_FALSE(engine->Run()); +} + TEST_F(FlutterWindowsEngineTest, SendPlatformMessageWithoutResponse) { FlutterWindowsEngineBuilder builder{GetContext()}; std::unique_ptr engine = builder.Build(); diff --git a/shell/platform/windows/flutter_windows_view_unittests.cc b/shell/platform/windows/flutter_windows_view_unittests.cc index 89082dd46cba1..2d5dfd71409d1 100644 --- a/shell/platform/windows/flutter_windows_view_unittests.cc +++ b/shell/platform/windows/flutter_windows_view_unittests.cc @@ -118,7 +118,7 @@ class MockFlutterWindowsEngine : public FlutterWindowsEngine { class MockAngleSurfaceManager : public AngleSurfaceManager { public: - MockAngleSurfaceManager() {} + MockAngleSurfaceManager() : AngleSurfaceManager(false) {} MOCK_METHOD4(CreateSurface, bool(WindowsRenderTarget*, EGLint, EGLint, bool)); MOCK_METHOD4(ResizeSurface, void(WindowsRenderTarget*, EGLint, EGLint, bool)); diff --git a/shell/platform/windows/testing/flutter_windows_engine_builder.cc b/shell/platform/windows/testing/flutter_windows_engine_builder.cc index d4f8086c89609..9b8f6e4053dbc 100644 --- a/shell/platform/windows/testing/flutter_windows_engine_builder.cc +++ b/shell/platform/windows/testing/flutter_windows_engine_builder.cc @@ -62,6 +62,11 @@ void FlutterWindowsEngineBuilder::AddDartEntrypointArgument(std::string arg) { dart_entrypoint_arguments_.emplace_back(std::move(arg)); } +void FlutterWindowsEngineBuilder::SetSwitches( + std::vector switches) { + switches_ = std::move(switches); +} + void FlutterWindowsEngineBuilder::SetCreateKeyboardHandlerCallbacks( KeyboardKeyEmbedderHandler::GetKeyStateHandler get_key_state, KeyboardKeyEmbedderHandler::MapVirtualKeyToScanCode map_vk_to_scan) { @@ -86,6 +91,7 @@ std::unique_ptr FlutterWindowsEngineBuilder::Build() { } FlutterProjectBundle project(properties_); + project.SetSwitches(switches_); return std::make_unique(project, get_key_state_, map_vk_to_scan_); diff --git a/shell/platform/windows/testing/flutter_windows_engine_builder.h b/shell/platform/windows/testing/flutter_windows_engine_builder.h index ce3648a82a005..e17d3c794227e 100644 --- a/shell/platform/windows/testing/flutter_windows_engine_builder.h +++ b/shell/platform/windows/testing/flutter_windows_engine_builder.h @@ -29,6 +29,8 @@ class FlutterWindowsEngineBuilder { KeyboardKeyEmbedderHandler::GetKeyStateHandler get_key_state, KeyboardKeyEmbedderHandler::MapVirtualKeyToScanCode map_vk_to_scan); + void SetSwitches(std::vector switches); + std::unique_ptr Build(); private: @@ -36,6 +38,7 @@ class FlutterWindowsEngineBuilder { FlutterDesktopEngineProperties properties_ = {}; std::string dart_entrypoint_; std::vector dart_entrypoint_arguments_; + std::vector switches_; KeyboardKeyEmbedderHandler::GetKeyStateHandler get_key_state_; KeyboardKeyEmbedderHandler::MapVirtualKeyToScanCode map_vk_to_scan_; From 689902f85c6b8c48dcfdd23403df58570634c182 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 12 Jul 2023 21:12:05 -0400 Subject: [PATCH 009/211] Roll Skia from bedc92598644 to 6ed93436d57c (3 revisions) (#43621) https://skia.googlesource.com/skia.git/+log/bedc92598644..6ed93436d57c 2023-07-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 4ba3255697ef to 3b2c55a1bc2b (5 revisions) 2023-07-12 jvanverth@google.com [graphite] Add wait/signal semaphore support to InsertRecordingInfo. 2023-07-12 herb@google.com Move sk_float_nextlog2 to WangsFormula.h and cleanup If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bafc194a9897d..c945d635b82f5 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'bedc925986447a08b4d723830bae0601e2c732d0', + 'skia_revision': '6ed93436d57c0149454b88d8de388b822317fdc0', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9d09afdb19834..d69aef858b734 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5b4b21a6a3bc77d421e6daa3448044e1 +Signature: 0376b67f8b900163fce690bd1ff87de8 ==================================================================================================== LIBRARY: etc1 From 9629c8066df1d021d8064eb1087150c90f17ea19 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 12 Jul 2023 22:02:54 -0400 Subject: [PATCH 010/211] Roll Fuchsia Mac SDK from 0fvk838jTDNQ_l43k... to 3C7P0w8ySmtqpyi3S... (#43622) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index c945d635b82f5..92600b8a1e384 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '0fvk838jTDNQ_l43kj5Vz-3ZA1JntonkaLZ8UJxQSaUC' + 'version': '3C7P0w8ySmtqpyi3SZWDcHJ9zdLC09Fo45XjXGjJ1xQC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From 5b8fcd71f132ba0f0cc3b7458b3be75839cf3be2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 12 Jul 2023 22:06:30 -0400 Subject: [PATCH 011/211] Roll Dart SDK from 8f8f281ccdc6 to f499e91e8cb2 (3 revisions) (#43623) https://dart.googlesource.com/sdk.git/+log/8f8f281ccdc6..f499e91e8cb2 2023-07-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-305.0.dev 2023-07-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-304.0.dev 2023-07-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-303.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 92600b8a1e384..40ffba252a2e1 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '8f8f281ccdc670e304c122c77050d9dd31356c1e', + 'dart_revision': 'f499e91e8cb2bc824a22c068dc4c88ca3a0dd1af', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index ceee2efd12771..8c36a1b4004e3 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 01d2a2135abeb752cf16b45b5baf3798 +Signature: 7b9215d39a578c8eec3c1473fcc3452a ==================================================================================================== LIBRARY: angle From 88f9b40bde91c74fa449dd8d7a3696c18f36dae5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 12 Jul 2023 22:55:04 -0400 Subject: [PATCH 012/211] Roll Skia from 6ed93436d57c to 7f391ea9164e (1 revision) (#43625) https://skia.googlesource.com/skia.git/+log/6ed93436d57c..7f391ea9164e 2023-07-13 michaelludwig@google.com [skif] Replace SkTileImageFilter with nested crops If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 40ffba252a2e1..6a1404c3008b8 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '6ed93436d57c0149454b88d8de388b822317fdc0', + 'skia_revision': '7f391ea9164ef5fcd07f2b32ccf7a6e6400493a6', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d69aef858b734..c9028b4bf2000 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0376b67f8b900163fce690bd1ff87de8 +Signature: e72363ac21e08cba3ce3a4ac23e61614 ==================================================================================================== LIBRARY: etc1 @@ -2371,7 +2371,6 @@ ORIGIN: ../../../third_party/skia/src/core/SkValidationUtils.h + ../../../third_ ORIGIN: ../../../third_party/skia/src/effects/imagefilters/SkComposeImageFilter.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/effects/imagefilters/SkDisplacementMapImageFilter.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/effects/imagefilters/SkDropShadowImageFilter.cpp + ../../../third_party/skia/LICENSE -ORIGIN: ../../../third_party/skia/src/effects/imagefilters/SkTileImageFilter.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/Blend.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/RectanizerSkyline.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrCaps.h + ../../../third_party/skia/LICENSE @@ -2511,7 +2510,6 @@ FILE: ../../../third_party/skia/src/core/SkValidationUtils.h FILE: ../../../third_party/skia/src/effects/imagefilters/SkComposeImageFilter.cpp FILE: ../../../third_party/skia/src/effects/imagefilters/SkDisplacementMapImageFilter.cpp FILE: ../../../third_party/skia/src/effects/imagefilters/SkDropShadowImageFilter.cpp -FILE: ../../../third_party/skia/src/effects/imagefilters/SkTileImageFilter.cpp FILE: ../../../third_party/skia/src/gpu/Blend.h FILE: ../../../third_party/skia/src/gpu/RectanizerSkyline.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrCaps.h From 917fa47cfe10a1ffe99e4709d833e1a473b896c4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 12 Jul 2023 23:52:19 -0400 Subject: [PATCH 013/211] Roll Fuchsia Linux SDK from 1STsUj0X5YgpiSNEb... to xBJq6PsO5ebblODMe... (#43627) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/excluded_files | 3 - ci/licenses_golden/licenses_fuchsia | 106 +--------------------------- sky/packages/sky_engine/LICENSE | 1 - 4 files changed, 3 insertions(+), 109 deletions(-) diff --git a/DEPS b/DEPS index 6a1404c3008b8..2bb5900d6d3cf 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '1STsUj0X5YgpiSNEbqRCus0XRGJ-uLoTCxmjIVMy_EoC' + 'version': 'xBJq6PsO5ebblODMegtfmB5Q-Kaghtn_K0m3pR3dU60C' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index 2a987bd3c7ba6..844ae7972e8b1 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -449,10 +449,7 @@ ../../../fuchsia/sdk/linux/arch/arm64/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/arch/x64/sysroot/dist/lib/asan/ld.so.1 ../../../fuchsia/sdk/linux/arch/x64/sysroot/dist/lib/ld.so.1 -../../../fuchsia/sdk/linux/dart/fidl/meta.json -../../../fuchsia/sdk/linux/dart/fuchsia/meta.json ../../../fuchsia/sdk/linux/dart/sl4f/meta.json -../../../fuchsia/sdk/linux/dart/zircon/meta.json ../../../fuchsia/sdk/linux/data/config/symbol_index/meta.json ../../../fuchsia/sdk/linux/docs ../../../fuchsia/sdk/linux/fidl/fuchsia.accessibility.gesture/meta.json diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 9b5013d4cf592..44a296c90be71 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 68b7ea840cc0ec7d126a53cdf00bd955 +Signature: ad98b304d04164e717245b5c284794fb ==================================================================================================== LIBRARY: fuchsia_sdk @@ -354,7 +354,6 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libzircon.so -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/handle_disposition.dart FILE: ../../../fuchsia/sdk/linux/data/config/symbol_index/config.json FILE: ../../../fuchsia/sdk/linux/pkg/async-default/async-default.ifs FILE: ../../../fuchsia/sdk/linux/pkg/fdio/fdio.ifs @@ -646,7 +645,6 @@ ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/prof ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/resource.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/types.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/types.h + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/interface.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.component.runner/component_runner.fidl + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.fonts/font_provider.fidl + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.math/math.fidl + ../../../fuchsia/sdk/linux/LICENSE @@ -736,7 +734,6 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/profil FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/resource.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/types.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/types.h -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/interface.dart FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component.runner/component_runner.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.fonts/font_provider.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.math/math.fidl @@ -1082,47 +1079,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: fuchsia_sdk -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/fidl.dart + ../../../LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fuchsia/lib/fuchsia.dart + ../../../LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/zircon_fakes.dart + ../../../LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/zircon.dart + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/fidl.dart -FILE: ../../../fuchsia/sdk/linux/dart/fuchsia/lib/fuchsia.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/zircon_fakes.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/zircon.dart ----------------------------------------------------------------------------------------------------- -Copyright 2018 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: fuchsia_sdk ORIGIN: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/dlfcn.h + ../../../fuchsia/sdk/linux/LICENSE @@ -1139,29 +1095,6 @@ ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/limits.h + .. ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/smc.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/threads.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/time.h + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/codec.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/enum.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/error.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/hash_codes.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/interface_async.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/message.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/struct.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/table.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/types.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/unknown_data.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fuchsia/lib/src/fakes/fuchsia_fakes.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/channel.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/channel_reader.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/constants.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/errors.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/eventpair.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/handle.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/handle_waiter.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/system.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/handle_wrapper.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/socket.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/socket_reader.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/vmo.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.auth/attestation_signer.fidl + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.auth/common.fidl + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.bluetooth.gatt/types.fidl + ../../../fuchsia/sdk/linux/LICENSE @@ -1374,29 +1307,6 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/limits.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/smc.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/threads.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/time.h -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/codec.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/enum.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/error.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/hash_codes.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/interface_async.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/message.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/struct.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/table.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/types.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/unknown_data.dart -FILE: ../../../fuchsia/sdk/linux/dart/fuchsia/lib/src/fakes/fuchsia_fakes.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/channel.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/channel_reader.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/constants.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/errors.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/eventpair.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/handle.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/handle_waiter.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/system.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/handle_wrapper.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/socket.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/socket_reader.dart -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/vmo.dart FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.auth/attestation_signer.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.auth/common.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.bluetooth.gatt/types.fidl @@ -2010,7 +1920,6 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libzircon.so -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/handle_disposition.dart FILE: ../../../fuchsia/sdk/linux/data/config/symbol_index/config.json FILE: ../../../fuchsia/sdk/linux/pkg/async-default/async-default.ifs FILE: ../../../fuchsia/sdk/linux/pkg/fdio/fdio.ifs @@ -2071,8 +1980,6 @@ ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/lookup.h + .. ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/clock.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/scheduler.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/utc.h + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/bits.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/union.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/dart/sl4f/lib/sl4f.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/audio.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/device_log.dart + ../../../fuchsia/sdk/linux/LICENSE @@ -2367,8 +2274,6 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/lookup.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/clock.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/scheduler.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/utc.h -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/bits.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/union.dart FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/sl4f.dart FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/audio.dart FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/device_log.dart @@ -3031,8 +2936,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. LIBRARY: fuchsia_sdk ORIGIN: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/codegen_common.dart + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/wire_format.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/trace_processing/metrics/camera_metrics.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/trace_processing/metrics/flatland_latency.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/virtual_camera.dart + ../../../fuchsia/sdk/linux/LICENSE @@ -3160,8 +3063,6 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/zx/status_string.cc + ../../../fuchsia/sd TYPE: LicenseType.bsd FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/availability.h -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/codegen_common.dart -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/wire_format.dart FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/trace_processing/metrics/camera_metrics.dart FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/trace_processing/metrics/flatland_latency.dart FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/virtual_camera.dart @@ -3319,7 +3220,6 @@ ORIGIN: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/errors.h + ORIGIN: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/optional_nullable.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/performance_publish.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/trace_processing/metrics/power_metrics.dart + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.accessibility.semantics/overview.fidl + ../../../fuchsia/sdk/linux/LICENSE @@ -3543,7 +3443,6 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/errors.h FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/internal/cdecls.inc FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/errors.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/internal/cdecls.inc -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/optional_nullable.dart FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/performance_publish.dart FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/trace_processing/metrics/power_metrics.dart FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.accessibility.semantics/overview.fidl @@ -4241,7 +4140,6 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libzircon.so -FILE: ../../../fuchsia/sdk/linux/dart/zircon/lib/src/fakes/handle_disposition.dart FILE: ../../../fuchsia/sdk/linux/data/config/symbol_index/config.json FILE: ../../../fuchsia/sdk/linux/pkg/async-default/async-default.ifs FILE: ../../../fuchsia/sdk/linux/pkg/fdio/fdio.ifs @@ -4391,4 +4289,4 @@ permissive licensing, and of not having licensing issues being an obstacle to adoption, that text has been removed. ==================================================================================================== -Total license count: 14 +Total license count: 13 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 899035f691ddb..5c9f132c7b49b 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -26790,7 +26790,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility angle -fuchsia_sdk skia Copyright 2018 The Chromium Authors. All rights reserved. From 05a17c2627b0f4e01380aaf09d1f51f8a1fb8609 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 12 Jul 2023 22:18:06 -0700 Subject: [PATCH 014/211] [Impeller] Add RAII wrappers for VMA objects. (#43626) Uses `fml::UniqueObject`. --- ci/licenses_golden/licenses_flutter | 4 + impeller/renderer/backend/vulkan/BUILD.gn | 2 + .../renderer/backend/vulkan/allocator_vk.cc | 217 ++++++++---------- .../renderer/backend/vulkan/allocator_vk.h | 7 +- .../backend/vulkan/device_buffer_vk.cc | 28 +-- .../backend/vulkan/device_buffer_vk.h | 35 +-- impeller/renderer/backend/vulkan/formats_vk.h | 1 - .../backend/vulkan/pipeline_library_vk.h | 1 - .../renderer/backend/vulkan/render_pass_vk.cc | 2 - impeller/renderer/backend/vulkan/sampler_vk.h | 1 - impeller/renderer/backend/vulkan/vk.h | 2 - impeller/renderer/backend/vulkan/vma.cc | 11 + impeller/renderer/backend/vulkan/vma.h | 134 +++++++++++ 13 files changed, 266 insertions(+), 179 deletions(-) create mode 100644 impeller/renderer/backend/vulkan/vma.cc create mode 100644 impeller/renderer/backend/vulkan/vma.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 2eac5e73c0ba2..8d1d6795f8fd5 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -1562,6 +1562,8 @@ ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/texture_vk.h + ../../. ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/vertex_descriptor_vk.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/vertex_descriptor_vk.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/vk.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/vma.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/vma.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/blit_command.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/blit_command.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/blit_pass.cc + ../../../flutter/LICENSE @@ -4252,6 +4254,8 @@ FILE: ../../../flutter/impeller/renderer/backend/vulkan/texture_vk.h FILE: ../../../flutter/impeller/renderer/backend/vulkan/vertex_descriptor_vk.cc FILE: ../../../flutter/impeller/renderer/backend/vulkan/vertex_descriptor_vk.h FILE: ../../../flutter/impeller/renderer/backend/vulkan/vk.h +FILE: ../../../flutter/impeller/renderer/backend/vulkan/vma.cc +FILE: ../../../flutter/impeller/renderer/backend/vulkan/vma.h FILE: ../../../flutter/impeller/renderer/blit_command.cc FILE: ../../../flutter/impeller/renderer/blit_command.h FILE: ../../../flutter/impeller/renderer/blit_pass.cc diff --git a/impeller/renderer/backend/vulkan/BUILD.gn b/impeller/renderer/backend/vulkan/BUILD.gn index bb75156ab63db..4515720b412e9 100644 --- a/impeller/renderer/backend/vulkan/BUILD.gn +++ b/impeller/renderer/backend/vulkan/BUILD.gn @@ -94,6 +94,8 @@ impeller_component("vulkan") { "vertex_descriptor_vk.cc", "vertex_descriptor_vk.h", "vk.h", + "vma.cc", + "vma.h", ] public_deps = [ diff --git a/impeller/renderer/backend/vulkan/allocator_vk.cc b/impeller/renderer/backend/vulkan/allocator_vk.cc index a865ca8ee98b6..345a37bddd9a9 100644 --- a/impeller/renderer/backend/vulkan/allocator_vk.cc +++ b/impeller/renderer/backend/vulkan/allocator_vk.cc @@ -16,6 +16,75 @@ namespace impeller { +static constexpr vk::Flags +ToVKBufferMemoryPropertyFlags(StorageMode mode) { + switch (mode) { + case StorageMode::kHostVisible: + return vk::MemoryPropertyFlagBits::eHostVisible; + case StorageMode::kDevicePrivate: + return vk::MemoryPropertyFlagBits::eDeviceLocal; + case StorageMode::kDeviceTransient: + return vk::MemoryPropertyFlagBits::eLazilyAllocated; + } + FML_UNREACHABLE(); +} + +static VmaAllocationCreateFlags ToVmaAllocationBufferCreateFlags( + StorageMode mode) { + VmaAllocationCreateFlags flags = 0; + switch (mode) { + case StorageMode::kHostVisible: + flags |= VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT; + flags |= VMA_ALLOCATION_CREATE_MAPPED_BIT; + return flags; + case StorageMode::kDevicePrivate: + return flags; + case StorageMode::kDeviceTransient: + return flags; + } + FML_UNREACHABLE(); +} + +static PoolVMA CreateBufferPool(VmaAllocator allocator) { + vk::BufferCreateInfo buffer_info; + buffer_info.usage = vk::BufferUsageFlagBits::eVertexBuffer | + vk::BufferUsageFlagBits::eIndexBuffer | + vk::BufferUsageFlagBits::eUniformBuffer | + vk::BufferUsageFlagBits::eStorageBuffer | + vk::BufferUsageFlagBits::eTransferSrc | + vk::BufferUsageFlagBits::eTransferDst; + buffer_info.size = 1u; // doesn't matter + buffer_info.sharingMode = vk::SharingMode::eExclusive; + auto buffer_info_native = + static_cast(buffer_info); + + VmaAllocationCreateInfo allocation_info = {}; + allocation_info.usage = VMA_MEMORY_USAGE_AUTO; + allocation_info.preferredFlags = static_cast( + ToVKBufferMemoryPropertyFlags(StorageMode::kHostVisible)); + allocation_info.flags = + ToVmaAllocationBufferCreateFlags(StorageMode::kHostVisible); + + uint32_t memTypeIndex; + auto result = vk::Result{vmaFindMemoryTypeIndexForBufferInfo( + allocator, &buffer_info_native, &allocation_info, &memTypeIndex)}; + if (result != vk::Result::eSuccess) { + return {}; + } + + VmaPoolCreateInfo pool_create_info = {}; + pool_create_info.memoryTypeIndex = memTypeIndex; + pool_create_info.flags = VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT | + VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT; + + VmaPool pool = {}; + result = vk::Result{::vmaCreatePool(allocator, &pool_create_info, &pool)}; + if (result != vk::Result::eSuccess) { + return {}; + } + return {allocator, pool}; +} + AllocatorVK::AllocatorVK(std::weak_ptr context, uint32_t vulkan_api_version, const vk::PhysicalDevice& physical_device, @@ -93,26 +162,16 @@ AllocatorVK::AllocatorVK(std::weak_ptr context, VALIDATION_LOG << "Could not create memory allocator"; return; } - for (auto i = 0u; i < kPoolCount; i++) { - created_buffer_pools_ &= - CreateBufferPool(allocator, &staging_buffer_pools_[i]); + for (size_t i = 0u; i < staging_buffer_pools_.size(); i++) { + staging_buffer_pools_[i].reset(CreateBufferPool(allocator)); + created_buffer_pools_ &= staging_buffer_pools_[i].is_valid(); } - allocator_ = allocator; + allocator_.reset(allocator); supports_memoryless_textures_ = capabilities.SupportsMemorylessTextures(); is_valid_ = true; } -AllocatorVK::~AllocatorVK() { - TRACE_EVENT0("impeller", "DestroyAllocatorVK"); - if (allocator_) { - for (auto i = 0u; i < kPoolCount; i++) { - if (staging_buffer_pools_[i]) { - ::vmaDestroyPool(allocator_, staging_buffer_pools_[i]); - } - } - ::vmaDestroyAllocator(allocator_); - } -} +AllocatorVK::~AllocatorVK() = default; // |Allocator| bool AllocatorVK::IsValid() const { @@ -206,35 +265,6 @@ ToVKTextureMemoryPropertyFlags(StorageMode mode, FML_UNREACHABLE(); } -static constexpr vk::Flags -ToVKBufferMemoryPropertyFlags(StorageMode mode) { - switch (mode) { - case StorageMode::kHostVisible: - return vk::MemoryPropertyFlagBits::eHostVisible; - case StorageMode::kDevicePrivate: - return vk::MemoryPropertyFlagBits::eDeviceLocal; - case StorageMode::kDeviceTransient: - return vk::MemoryPropertyFlagBits::eLazilyAllocated; - } - FML_UNREACHABLE(); -} - -static VmaAllocationCreateFlags ToVmaAllocationBufferCreateFlags( - StorageMode mode) { - VmaAllocationCreateFlags flags = 0; - switch (mode) { - case StorageMode::kHostVisible: - flags |= VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT; - flags |= VMA_ALLOCATION_CREATE_MAPPED_BIT; - return flags; - case StorageMode::kDevicePrivate: - return flags; - case StorageMode::kDeviceTransient: - return flags; - } - FML_UNREACHABLE(); -} - static VmaAllocationCreateFlags ToVmaAllocationCreateFlags(StorageMode mode, bool is_texture, size_t size) { @@ -357,8 +387,8 @@ class AllocatedTextureSourceVK final : public TextureSourceVK { << vk::to_string(result); return; } - resource_.Reset( - ImageResource(image, allocator, allocation, std::move(image_view))); + resource_.Reset(ImageResource(ImageVMA{allocator, allocation, image}, + std::move(image_view))); is_valid_ = true; } @@ -366,7 +396,7 @@ class AllocatedTextureSourceVK final : public TextureSourceVK { bool IsValid() const { return is_valid_; } - vk::Image GetImage() const override { return resource_->image; } + vk::Image GetImage() const override { return resource_->image.get().image; } vk::ImageView GetImageView() const override { return resource_->image_view.get(); @@ -374,44 +404,19 @@ class AllocatedTextureSourceVK final : public TextureSourceVK { private: struct ImageResource { - vk::Image image = {}; - VmaAllocator allocator = {}; - VmaAllocation allocation = {}; + UniqueImageVMA image; vk::UniqueImageView image_view; ImageResource() = default; - ImageResource(vk::Image p_image, - VmaAllocator p_allocator, - VmaAllocation p_allocation, - vk::UniqueImageView p_image_view) - : image(p_image), - allocator(p_allocator), - allocation(p_allocation), - image_view(std::move(p_image_view)) {} + ImageResource(ImageVMA p_image, vk::UniqueImageView p_image_view) + : image(p_image), image_view(std::move(p_image_view)) {} ImageResource(ImageResource&& o) { std::swap(image, o.image); - std::swap(allocator, o.allocator); - std::swap(allocation, o.allocation); std::swap(image_view, o.image_view); } - ~ImageResource() { - if (!image) { - return; - } - TRACE_EVENT0("impeller", "DestroyDeviceTexture"); - image_view.reset(); - if (image) { - ::vmaDestroyImage( - allocator, // - static_cast(image), // - allocation // - ); - } - } - FML_DISALLOW_COPY_AND_ASSIGN(ImageResource); }; @@ -439,7 +444,7 @@ std::shared_ptr AllocatorVK::OnCreateTexture( auto source = std::make_shared( ContextVK::Cast(*context).GetResourceManager(), // desc, // - allocator_, // + allocator_.get(), // device_holder->GetDevice(), // supports_memoryless_textures_ // ); @@ -477,13 +482,16 @@ std::shared_ptr AllocatorVK::OnCreateBuffer( allocation_info.flags = ToVmaAllocationBufferCreateFlags(desc.storage_mode); if (created_buffer_pools_ && desc.storage_mode == StorageMode::kHostVisible && raster_thread_id_ == std::this_thread::get_id()) { - allocation_info.pool = staging_buffer_pools_[frame_count_ % kPoolCount]; + allocation_info.pool = + staging_buffer_pools_[frame_count_ % staging_buffer_pools_.size()] + .get() + .pool; } VkBuffer buffer = {}; VmaAllocation buffer_allocation = {}; VmaAllocationInfo buffer_allocation_info = {}; - auto result = vk::Result{::vmaCreateBuffer(allocator_, // + auto result = vk::Result{::vmaCreateBuffer(allocator_.get(), // &buffer_info_native, // &allocation_info, // &buffer, // @@ -497,53 +505,14 @@ std::shared_ptr AllocatorVK::OnCreateBuffer( return {}; } - return std::make_shared(desc, // - context_, // - allocator_, // - buffer_allocation, // - buffer_allocation_info, // - vk::Buffer{buffer} // + return std::make_shared( + desc, // + context_, // + UniqueBufferVMA{BufferVMA{allocator_.get(), // + buffer_allocation, // + vk::Buffer{buffer}}}, // + buffer_allocation_info // ); } -// static -bool AllocatorVK::CreateBufferPool(VmaAllocator allocator, VmaPool* pool) { - vk::BufferCreateInfo buffer_info; - buffer_info.usage = vk::BufferUsageFlagBits::eVertexBuffer | - vk::BufferUsageFlagBits::eIndexBuffer | - vk::BufferUsageFlagBits::eUniformBuffer | - vk::BufferUsageFlagBits::eStorageBuffer | - vk::BufferUsageFlagBits::eTransferSrc | - vk::BufferUsageFlagBits::eTransferDst; - buffer_info.size = 1u; // doesn't matter - buffer_info.sharingMode = vk::SharingMode::eExclusive; - auto buffer_info_native = - static_cast(buffer_info); - - VmaAllocationCreateInfo allocation_info = {}; - allocation_info.usage = VMA_MEMORY_USAGE_AUTO; - allocation_info.preferredFlags = static_cast( - ToVKBufferMemoryPropertyFlags(StorageMode::kHostVisible)); - allocation_info.flags = - ToVmaAllocationBufferCreateFlags(StorageMode::kHostVisible); - - uint32_t memTypeIndex; - auto result = vk::Result{vmaFindMemoryTypeIndexForBufferInfo( - allocator, &buffer_info_native, &allocation_info, &memTypeIndex)}; - if (result != vk::Result::eSuccess) { - return false; - } - - VmaPoolCreateInfo pool_create_info = {}; - pool_create_info.memoryTypeIndex = memTypeIndex; - pool_create_info.flags = VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT | - VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT; - - result = vk::Result{vmaCreatePool(allocator, &pool_create_info, pool)}; - if (result != vk::Result::eSuccess) { - return false; - } - return true; -} - } // namespace impeller diff --git a/impeller/renderer/backend/vulkan/allocator_vk.h b/impeller/renderer/backend/vulkan/allocator_vk.h index abb65ba836778..68b08aa708721 100644 --- a/impeller/renderer/backend/vulkan/allocator_vk.h +++ b/impeller/renderer/backend/vulkan/allocator_vk.h @@ -13,6 +13,7 @@ #include "impeller/renderer/backend/vulkan/device_holder.h" #include "impeller/renderer/backend/vulkan/vk.h" +#include #include namespace impeller { @@ -28,8 +29,8 @@ class AllocatorVK final : public Allocator { static constexpr size_t kPoolCount = 3; fml::RefPtr vk_; - VmaAllocator allocator_ = {}; - VmaPool staging_buffer_pools_[kPoolCount] = {}; + UniqueAllocatorVMA allocator_; + std::array staging_buffer_pools_; std::weak_ptr context_; std::weak_ptr device_holder_; ISize max_texture_size_; @@ -66,8 +67,6 @@ class AllocatorVK final : public Allocator { // |Allocator| ISize GetMaxTextureSizeSupported() const override; - static bool CreateBufferPool(VmaAllocator allocator, VmaPool* pool); - FML_DISALLOW_COPY_AND_ASSIGN(AllocatorVK); }; diff --git a/impeller/renderer/backend/vulkan/device_buffer_vk.cc b/impeller/renderer/backend/vulkan/device_buffer_vk.cc index d113e853bb194..5386ae3c037e8 100644 --- a/impeller/renderer/backend/vulkan/device_buffer_vk.cc +++ b/impeller/renderer/backend/vulkan/device_buffer_vk.cc @@ -6,27 +6,22 @@ #include "flutter/fml/logging.h" #include "flutter/fml/trace_event.h" -#include "vulkan/vulkan_handles.hpp" namespace impeller { DeviceBufferVK::DeviceBufferVK(DeviceBufferDescriptor desc, std::weak_ptr context, - VmaAllocator allocator, - VmaAllocation allocation, - VmaAllocationInfo info, - vk::Buffer buffer) + UniqueBufferVMA buffer, + VmaAllocationInfo info) : DeviceBuffer(desc), context_(std::move(context)), resource_(ContextVK::Cast(*context_.lock().get()).GetResourceManager(), BufferResource{ - allocator, // - allocation, // - info, // - buffer // + std::move(buffer), // + info // }) {} -DeviceBufferVK::~DeviceBufferVK() {} +DeviceBufferVK::~DeviceBufferVK() = default; uint8_t* DeviceBufferVK::OnGetContents() const { return static_cast(resource_->info.pMappedData); @@ -51,17 +46,18 @@ bool DeviceBufferVK::OnCopyHostBuffer(const uint8_t* source, bool DeviceBufferVK::SetLabel(const std::string& label) { auto context = context_.lock(); - if (!context || !resource_->buffer) { + if (!context || !resource_->buffer.is_valid()) { // The context could have died at this point. return false; } - ::vmaSetAllocationName(resource_->allocator, // - resource_->allocation, // - label.c_str() // + ::vmaSetAllocationName(resource_->buffer.get().allocator, // + resource_->buffer.get().allocation, // + label.c_str() // ); - return ContextVK::Cast(*context).SetDebugName(resource_->buffer, label); + return ContextVK::Cast(*context).SetDebugName(resource_->buffer.get().buffer, + label); } bool DeviceBufferVK::SetLabel(const std::string& label, Range range) { @@ -70,7 +66,7 @@ bool DeviceBufferVK::SetLabel(const std::string& label, Range range) { } vk::Buffer DeviceBufferVK::GetBuffer() const { - return resource_->buffer; + return resource_->buffer.get().buffer; } } // namespace impeller diff --git a/impeller/renderer/backend/vulkan/device_buffer_vk.h b/impeller/renderer/backend/vulkan/device_buffer_vk.h index bf5c033b482d8..7cc934f72f135 100644 --- a/impeller/renderer/backend/vulkan/device_buffer_vk.h +++ b/impeller/renderer/backend/vulkan/device_buffer_vk.h @@ -12,6 +12,7 @@ #include "impeller/core/device_buffer.h" #include "impeller/renderer/backend/vulkan/context_vk.h" #include "impeller/renderer/backend/vulkan/resource_manager_vk.h" +#include "impeller/renderer/backend/vulkan/vma.h" namespace impeller { @@ -20,10 +21,8 @@ class DeviceBufferVK final : public DeviceBuffer, public: DeviceBufferVK(DeviceBufferDescriptor desc, std::weak_ptr context, - VmaAllocator allocator, - VmaAllocation allocation, - VmaAllocationInfo info, - vk::Buffer buffer); + UniqueBufferVMA buffer, + VmaAllocationInfo info); // |DeviceBuffer| ~DeviceBufferVK() override; @@ -34,37 +33,17 @@ class DeviceBufferVK final : public DeviceBuffer, friend class AllocatorVK; struct BufferResource { - VmaAllocator allocator = {}; - VmaAllocation allocation = {}; + UniqueBufferVMA buffer; VmaAllocationInfo info = {}; - vk::Buffer buffer = {}; BufferResource() = default; - BufferResource(VmaAllocator p_allocator, - VmaAllocation p_allocation, - VmaAllocationInfo p_info, - vk::Buffer p_buffer) - : allocator(p_allocator), - allocation(p_allocation), - info(p_info), - buffer(p_buffer) {} + BufferResource(UniqueBufferVMA p_buffer, VmaAllocationInfo p_info) + : buffer(std::move(p_buffer)), info(p_info) {} BufferResource(BufferResource&& o) { - std::swap(o.allocator, allocator); - std::swap(o.allocation, allocation); - std::swap(o.info, info); std::swap(o.buffer, buffer); - } - - ~BufferResource() { - if (!buffer) { - return; - } - TRACE_EVENT0("impeller", "DestroyDeviceBuffer"); - ::vmaDestroyBuffer(allocator, - static_cast(buffer), - allocation); + std::swap(o.info, info); } FML_DISALLOW_COPY_AND_ASSIGN(BufferResource); diff --git a/impeller/renderer/backend/vulkan/formats_vk.h b/impeller/renderer/backend/vulkan/formats_vk.h index 2bf4aaedffb1e..634f647f0f533 100644 --- a/impeller/renderer/backend/vulkan/formats_vk.h +++ b/impeller/renderer/backend/vulkan/formats_vk.h @@ -8,7 +8,6 @@ #include "impeller/core/formats.h" #include "impeller/core/shader_types.h" #include "impeller/renderer/backend/vulkan/vk.h" -#include "vulkan/vulkan_enums.hpp" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/pipeline_library_vk.h b/impeller/renderer/backend/vulkan/pipeline_library_vk.h index 538a2b9834c62..4db81e06bb2ab 100644 --- a/impeller/renderer/backend/vulkan/pipeline_library_vk.h +++ b/impeller/renderer/backend/vulkan/pipeline_library_vk.h @@ -17,7 +17,6 @@ #include "impeller/renderer/backend/vulkan/pipeline_vk.h" #include "impeller/renderer/backend/vulkan/vk.h" #include "impeller/renderer/pipeline_library.h" -#include "vulkan/vulkan_handles.hpp" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/render_pass_vk.cc b/impeller/renderer/backend/vulkan/render_pass_vk.cc index 4c2820b7906ee..82d2214a5f5b2 100644 --- a/impeller/renderer/backend/vulkan/render_pass_vk.cc +++ b/impeller/renderer/backend/vulkan/render_pass_vk.cc @@ -23,8 +23,6 @@ #include "impeller/renderer/backend/vulkan/sampler_vk.h" #include "impeller/renderer/backend/vulkan/shared_object_vk.h" #include "impeller/renderer/backend/vulkan/texture_vk.h" -#include "vulkan/vulkan_enums.hpp" -#include "vulkan/vulkan_structs.hpp" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/sampler_vk.h b/impeller/renderer/backend/vulkan/sampler_vk.h index f67a64f9e83d6..5286cef2fbab6 100644 --- a/impeller/renderer/backend/vulkan/sampler_vk.h +++ b/impeller/renderer/backend/vulkan/sampler_vk.h @@ -9,7 +9,6 @@ #include "impeller/core/sampler.h" #include "impeller/renderer/backend/vulkan/shared_object_vk.h" #include "impeller/renderer/backend/vulkan/vk.h" -#include "vulkan/vulkan_handles.hpp" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/vk.h b/impeller/renderer/backend/vulkan/vk.h index 3eef9a3cf6fd6..efbf94b840536 100644 --- a/impeller/renderer/backend/vulkan/vk.h +++ b/impeller/renderer/backend/vulkan/vk.h @@ -67,5 +67,3 @@ #include "vulkan/vulkan.hpp" static_assert(VK_HEADER_VERSION >= 215, "Vulkan headers must not be too old."); - -#include "flutter/flutter_vma/flutter_vma.h" diff --git a/impeller/renderer/backend/vulkan/vma.cc b/impeller/renderer/backend/vulkan/vma.cc new file mode 100644 index 0000000000000..5c28daa885f42 --- /dev/null +++ b/impeller/renderer/backend/vulkan/vma.cc @@ -0,0 +1,11 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "impeller/renderer/backend/vulkan/vma.h" + +namespace impeller { + +// + +} // namespace impeller diff --git a/impeller/renderer/backend/vulkan/vma.h b/impeller/renderer/backend/vulkan/vma.h new file mode 100644 index 0000000000000..f33a396997f01 --- /dev/null +++ b/impeller/renderer/backend/vulkan/vma.h @@ -0,0 +1,134 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#pragma once + +#include "flutter/flutter_vma/flutter_vma.h" +#include "flutter/fml/trace_event.h" +#include "flutter/fml/unique_object.h" +#include "impeller/renderer/backend/vulkan/vk.h" + +namespace impeller { + +// ----------------------------------------------------------------------------- +// Unique handles to VMA allocators. +// ----------------------------------------------------------------------------- +struct AllocatorVMATraits { + static VmaAllocator InvalidValue() { return {}; } + + static bool IsValid(const VmaAllocator& value) { + return value != InvalidValue(); + } + + static void Free(VmaAllocator allocator) { + TRACE_EVENT0("impeller", "DestroyAllocator"); + ::vmaDestroyAllocator(allocator); + } +}; + +using UniqueAllocatorVMA = fml::UniqueObject; + +// ----------------------------------------------------------------------------- +// Unique handles to VMA pools. +// ----------------------------------------------------------------------------- + +struct PoolVMA { + VmaAllocator allocator = {}; + VmaPool pool = {}; + + constexpr bool operator==(const PoolVMA& other) const { + return allocator == other.allocator && pool == other.pool; + } + + constexpr bool operator!=(const PoolVMA& other) const { + return !(*this == other); + } +}; + +struct PoolVMATraits { + static PoolVMA InvalidValue() { return {}; } + + static bool IsValid(const PoolVMA& value) { + return value.allocator != VmaAllocator{}; + } + + static void Free(const PoolVMA& pool) { + TRACE_EVENT0("impeller", "DestroyPool"); + ::vmaDestroyPool(pool.allocator, pool.pool); + } +}; + +using UniquePoolVMA = fml::UniqueObject; + +// ----------------------------------------------------------------------------- +// Unique handles to VMA buffers. +// ----------------------------------------------------------------------------- + +struct BufferVMA { + VmaAllocator allocator = {}; + VmaAllocation allocation = {}; + vk::Buffer buffer = {}; + + constexpr bool operator==(const BufferVMA& other) const { + return allocator == other.allocator && allocation == other.allocation && + buffer == other.buffer; + } + + constexpr bool operator!=(const BufferVMA& other) const { + return !(*this == other); + } +}; + +struct BufferVMATraits { + static BufferVMA InvalidValue() { return {}; } + + static bool IsValid(const BufferVMA& value) { + return value.allocator != VmaAllocator{}; + } + + static void Free(const BufferVMA& buffer) { + TRACE_EVENT0("impeller", "DestroyBuffer"); + ::vmaDestroyBuffer(buffer.allocator, static_cast(buffer.buffer), + buffer.allocation); + } +}; + +using UniqueBufferVMA = fml::UniqueObject; + +// ----------------------------------------------------------------------------- +// Unique handles to VMA images. +// ----------------------------------------------------------------------------- + +struct ImageVMA { + VmaAllocator allocator = {}; + VmaAllocation allocation = {}; + vk::Image image = {}; + + constexpr bool operator==(const ImageVMA& other) const { + return allocator == other.allocator && allocation == other.allocation && + image == other.image; + } + + constexpr bool operator!=(const ImageVMA& other) const { + return !(*this == other); + } +}; + +struct ImageVMATraits { + static ImageVMA InvalidValue() { return {}; } + + static bool IsValid(const ImageVMA& value) { + return value.allocator != VmaAllocator{}; + } + + static void Free(const ImageVMA& image) { + TRACE_EVENT0("impeller", "DestroyImage"); + ::vmaDestroyImage(image.allocator, static_cast(image.image), + image.allocation); + } +}; + +using UniqueImageVMA = fml::UniqueObject; + +} // namespace impeller From 9265fc6ffc767ffc33b00007ddf4545d0eadaaa3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 01:28:04 -0400 Subject: [PATCH 015/211] Roll Skia from 7f391ea9164e to c8da0c657c4e (1 revision) (#43628) https://skia.googlesource.com/skia.git/+log/7f391ea9164e..c8da0c657c4e 2023-07-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from dda70a3ef9fe to 151fa797ee3e (1 revision) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 2bb5900d6d3cf..ce68be9e000f9 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '7f391ea9164ef5fcd07f2b32ccf7a6e6400493a6', + 'skia_revision': 'c8da0c657c4e808014bead031fd0f6515b4760f1', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From bff04a5bd6b0c61e21aa3a9a6e9e56b7432413d3 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 12 Jul 2023 22:54:00 -0700 Subject: [PATCH 016/211] [Impeller] Remove unactionable error logs and use structure chains for instance creation. (#43629) I didn't know this when I wrote it initially but structure chains will throw a compile time error if a chain member violates the Vulkan spec. pNext chaining is easy to mess up otherwise and we should use structure chains where possible. We are already doing this during pipeline construction. --- .../renderer/backend/vulkan/context_vk.cc | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/impeller/renderer/backend/vulkan/context_vk.cc b/impeller/renderer/backend/vulkan/context_vk.cc index 56e06ff165cae..54332291e670d 100644 --- a/impeller/renderer/backend/vulkan/context_vk.cc +++ b/impeller/renderer/backend/vulkan/context_vk.cc @@ -185,28 +185,21 @@ void ContextVK::Setup(Settings settings) { application_info.setPEngineName("Impeller"); application_info.setPApplicationName("Impeller"); + vk::StructureChain + instance_chain; + + if (!caps->AreValidationsEnabled()) { + instance_chain.unlink(); + } + std::vector enabled_validations = { vk::ValidationFeatureEnableEXT::eSynchronizationValidation, }; - vk::ValidationFeaturesEXT validation; + auto validation = instance_chain.get(); validation.setEnabledValidationFeatures(enabled_validations); - vk::InstanceCreateInfo instance_info; - if (caps->AreValidationsEnabled()) { - std::stringstream ss; - ss << "Enabling validation layers, features: ["; - for (const auto& validation : enabled_validations) { - ss << vk::to_string(validation) << " "; - } - ss << "]"; - FML_LOG(ERROR) << ss.str(); -#if !defined(IMPELLER_ENABLE_VULKAN_VALIDATION_LAYERS) && FML_OS_ANDROID - FML_LOG(ERROR) << "Vulkan validation layers turned on but the gn argument " - "`--enable-vulkan-validation-layers` is missing."; -#endif - instance_info.pNext = &validation; - } + auto instance_info = instance_chain.get(); instance_info.setPEnabledLayerNames(enabled_layers_c); instance_info.setPEnabledExtensionNames(enabled_extensions_c); instance_info.setPApplicationInfo(&application_info); From d94903129247da6438a9881a105fe5ebd00f43a2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 02:21:33 -0400 Subject: [PATCH 017/211] Roll Skia from c8da0c657c4e to 811b046c673b (3 revisions) (#43630) https://skia.googlesource.com/skia.git/+log/c8da0c657c4e..811b046c673b 2023-07-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from c7cba4b06eab to bd8a6b1b3547 2023-07-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from c60298c2b806 to c7cba4b06eab (5 revisions) 2023-07-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn from 75bc633f02db to 7a6604d0564b (28 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ce68be9e000f9..af6b0f4cf92e9 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'c8da0c657c4e808014bead031fd0f6515b4760f1', + 'skia_revision': '811b046c673b0373bd46f1c950c3ce9f40e5a9df', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c9028b4bf2000..0134b4a895dfb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e72363ac21e08cba3ce3a4ac23e61614 +Signature: 63efa44b47bf0eddd988a322acd5d813 ==================================================================================================== LIBRARY: etc1 From e969dbac00758117c01983674753399f91e52ea1 Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Wed, 12 Jul 2023 23:34:51 -0700 Subject: [PATCH 018/211] Make GOMA state automatic by default (#43584) We used to default to force-enabled, which would fail on non-GOMA setups. --- tools/gn | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/gn b/tools/gn index 320243ba62818..33908609e5c16 100755 --- a/tools/gn +++ b/tools/gn @@ -214,6 +214,13 @@ def buildtools_dir(): def setup_goma(args): goma_gn_args = {} + # args.goma has three states, True (--goma), False (--no-goma), and + # None (default). In True mode, we force GOMA to be used (and fail + # if we cannot enable it) unless the selected target definitely does + # not support it (in which case we print a warning). In False mode, + # we disable GOMA regardless. In None mode, we enable it if we can + # autodetect a configuration, and otherwise disable it. + # When running in CI, the recipes use their own goma install, and take # care of starting and stopping the compiler proxy. running_on_luci = os.environ.get('LUCI_CONTEXT') is not None @@ -235,14 +242,16 @@ def setup_goma(args): if args.target_os == 'wasm' or args.web: goma_gn_args['use_goma'] = False goma_gn_args['goma_dir'] = None - print('Disabling GOMA for wasm builds, it is not supported yet.') - elif args.goma and not running_on_luci and os.path.exists(cipd_goma_dir): + if args.goma: + print('Disabling GOMA for wasm builds, it is not supported yet.') + elif args.goma is not False and not running_on_luci and os.path.exists( + cipd_goma_dir): goma_gn_args['use_goma'] = True goma_gn_args['goma_dir'] = cipd_goma_dir - elif args.goma and goma_dir and os.path.exists(goma_dir): + elif args.goma is not False and goma_dir and os.path.exists(goma_dir): goma_gn_args['use_goma'] = True goma_gn_args['goma_dir'] = goma_dir - elif args.goma and os.path.exists(goma_home_dir): + elif args.goma is not False and os.path.exists(goma_home_dir): goma_gn_args['use_goma'] = True goma_gn_args['goma_dir'] = goma_home_dir elif args.goma: @@ -870,7 +879,7 @@ def parse_args(args): help='Do not build the host-side development artifacts.' ) - parser.add_argument('--goma', default=True, action='store_true') + parser.add_argument('--goma', default=None, action='store_true') parser.add_argument('--no-goma', dest='goma', action='store_false') parser.add_argument( '--xcode-symlinks', From b063f17bb275ed65132be7562896716144cb177f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 03:12:13 -0400 Subject: [PATCH 019/211] Roll Skia from 811b046c673b to e5ec341bc3ca (1 revision) (#43631) https://skia.googlesource.com/skia.git/+log/811b046c673b..e5ec341bc3ca 2023-07-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from ebaadc6c2cba to 8ae9f28d7af2 (12 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index af6b0f4cf92e9..7947607f558c4 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '811b046c673b0373bd46f1c950c3ce9f40e5a9df', + 'skia_revision': 'e5ec341bc3ca63f4069bbbda4233371cb409d490', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From cf3d53a5be6f08bae8baf026993239296255592b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 06:45:21 -0400 Subject: [PATCH 020/211] Roll Dart SDK from f499e91e8cb2 to ade4dae923f3 (1 revision) (#43632) https://dart.googlesource.com/sdk.git/+log/f499e91e8cb2..ade4dae923f3 2023-07-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-306.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 7947607f558c4..62ddabef3aa6d 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'f499e91e8cb2bc824a22c068dc4c88ca3a0dd1af', + 'dart_revision': 'ade4dae923f3e5ce8846072c4bf4c98b910cd905', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 05ac165cf24d5c89bb5962e2efb1393ea50f5a7f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 09:10:04 -0400 Subject: [PATCH 021/211] Roll Skia from e5ec341bc3ca to 56b68ce6196c (1 revision) (#43633) https://skia.googlesource.com/skia.git/+log/e5ec341bc3ca..56b68ce6196c 2023-07-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 3b2c55a1bc2b to ad8a66bf7d69 (3 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 62ddabef3aa6d..023921c87b1d3 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'e5ec341bc3ca63f4069bbbda4233371cb409d490', + 'skia_revision': '56b68ce6196c395f24f4ac17ccd18ee03111cbf8', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From c83f75391065e2526e9f4508719882aecbd9bf70 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 13 Jul 2023 07:26:04 -0700 Subject: [PATCH 022/211] Apply the transform of an image filter layer to paint bounds in the CanvasKit backend (#43353) Fixes https://github.com/flutter/flutter/issues/128788 --- .../src/engine/canvaskit/color_filter.dart | 4 +++ .../src/engine/canvaskit/image_filter.dart | 10 +++++++ .../lib/src/engine/canvaskit/layer.dart | 12 +++++++++ lib/web_ui/test/canvaskit/layer_test.dart | 26 +++++++++++++++++++ 4 files changed, 52 insertions(+) diff --git a/lib/web_ui/lib/src/engine/canvaskit/color_filter.dart b/lib/web_ui/lib/src/engine/canvaskit/color_filter.dart index bb40093ae73b6..8114aa3cedc01 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/color_filter.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/color_filter.dart @@ -4,6 +4,7 @@ import 'dart:typed_data'; +import 'package:ui/src/engine/vector_math.dart'; import 'package:ui/ui.dart' as ui; import '../color_filter.dart'; @@ -79,6 +80,9 @@ abstract class CkColorFilter implements CkManagedSkImageFilterConvertible { borrow(skImageFilter); skImageFilter.delete(); } + + @override + Matrix4 get transform => Matrix4.identity(); } /// A reusable identity transform matrix. diff --git a/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart b/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart index 46eda4f2ce4be..2032ccdd88670 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart @@ -23,6 +23,8 @@ typedef SkImageFilterBorrow = void Function(SkImageFilter); /// Currently implemented by [CkImageFilter] and [CkColorFilter]. abstract class CkManagedSkImageFilterConvertible implements ui.ImageFilter { void imageFilter(SkImageFilterBorrow borrow); + + Matrix4 get transform; } /// The CanvasKit implementation of [ui.ImageFilter]. @@ -40,6 +42,9 @@ abstract class CkImageFilter implements CkManagedSkImageFilterConvertible { required ui.FilterQuality filterQuality}) = _CkMatrixImageFilter; CkImageFilter._(); + + @override + Matrix4 get transform => Matrix4.identity(); } class CkColorFilterImageFilter extends CkImageFilter { @@ -149,6 +154,7 @@ class _CkMatrixImageFilter extends CkImageFilter { _CkMatrixImageFilter( {required Float64List matrix, required this.filterQuality}) : matrix = Float64List.fromList(matrix), + _transform = Matrix4.fromFloat32List(toMatrix32(matrix)), super._() { final SkImageFilter skImageFilter = canvasKit.ImageFilter.MakeMatrixTransform( toSkMatrixFromFloat64(matrix), @@ -160,6 +166,7 @@ class _CkMatrixImageFilter extends CkImageFilter { final Float64List matrix; final ui.FilterQuality filterQuality; + final Matrix4 _transform; late final UniqueRef _ref; @@ -183,4 +190,7 @@ class _CkMatrixImageFilter extends CkImageFilter { @override String toString() => 'ImageFilter.matrix($matrix, $filterQuality)'; + + @override + Matrix4 get transform => _transform; } diff --git a/lib/web_ui/lib/src/engine/canvaskit/layer.dart b/lib/web_ui/lib/src/engine/canvaskit/layer.dart index 51a2ca14d16eb..04b4dbf7cd2f4 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/layer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/layer.dart @@ -7,6 +7,7 @@ import 'package:ui/ui.dart' as ui; import '../vector_math.dart'; import 'canvas.dart'; import 'embedded_views.dart'; +import 'image_filter.dart'; import 'n_way_canvas.dart'; import 'painting.dart'; import 'path.dart'; @@ -396,6 +397,17 @@ class ImageFilterEngineLayer extends ContainerLayer final ui.Offset _offset; final ui.ImageFilter _filter; + @override + void preroll(PrerollContext prerollContext, Matrix4 matrix) { + final Matrix4 transform = (_filter as CkManagedSkImageFilterConvertible).transform; + final Matrix4 childMatrix = matrix.multiplied(transform); + prerollContext.mutatorsStack.pushTransform(transform); + final ui.Rect childPaintBounds = + prerollChildren(prerollContext, childMatrix); + paintBounds = transform.transformRect(childPaintBounds); + prerollContext.mutatorsStack.pop(); + } + @override void paint(PaintContext paintContext) { assert(needsPainting); diff --git a/lib/web_ui/test/canvaskit/layer_test.dart b/lib/web_ui/test/canvaskit/layer_test.dart index 4dae7c63addb9..7ed4051b7c930 100644 --- a/lib/web_ui/test/canvaskit/layer_test.dart +++ b/lib/web_ui/test/canvaskit/layer_test.dart @@ -72,5 +72,31 @@ void testMain() { region: kDefaultRegion, ); }); + + test('ImageFilter layer applies matrix in preroll', () async { + final CkPicture picture = + paintPicture(const ui.Rect.fromLTRB(0, 0, 100, 100), (CkCanvas canvas) { + canvas.drawRect(const ui.Rect.fromLTRB(0, 0, 100, 100), + CkPaint()..style = ui.PaintingStyle.fill); + }); + + final LayerSceneBuilder sb = LayerSceneBuilder(); + sb.pushImageFilter( + ui.ImageFilter.matrix( + ( + Matrix4.identity() + ..scale(0.5, 0.5) + ..translate(20) + ).toFloat64(), + ), + ); + sb.addPicture(ui.Offset.zero, picture); + + final LayerTree layerTree = sb.build().layerTree; + CanvasKitRenderer.instance.rasterizer.draw(layerTree); + + final ImageFilterEngineLayer imageFilterLayer = layerTree.rootLayer.debugLayers.single as ImageFilterEngineLayer; + expect(imageFilterLayer.paintBounds, const ui.Rect.fromLTRB(10, 0, 60, 50)); + }); }); } From 51225b0ff3d54359bbbc73a4a0c5142c30cfa847 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 10:39:19 -0400 Subject: [PATCH 023/211] Roll Dart SDK from ade4dae923f3 to 16ddfe8d08e0 (1 revision) (#43634) https://dart.googlesource.com/sdk.git/+log/ade4dae923f3..16ddfe8d08e0 2023-07-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-307.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 023921c87b1d3..455fbb1a74998 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'ade4dae923f3e5ce8846072c4bf4c98b910cd905', + 'dart_revision': '16ddfe8d08e09eb529112bc78ac4dcae7e1fdfd3', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 8c36a1b4004e3..2f1d8b22812d9 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 7b9215d39a578c8eec3c1473fcc3452a +Signature: 28f3d38d110f51b67e3777c18492d67f ==================================================================================================== LIBRARY: angle From b6af3130b151813c90295765eb2226089fa0d5f0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 10:41:05 -0400 Subject: [PATCH 024/211] Roll Fuchsia Mac SDK from 3C7P0w8ySmtqpyi3S... to rRUd41Mv9NI0n3Iyc... (#43635) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 455fbb1a74998..f3493f94877bd 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '3C7P0w8ySmtqpyi3SZWDcHJ9zdLC09Fo45XjXGjJ1xQC' + 'version': 'rRUd41Mv9NI0n3IycuJXEbDEmYYuE1P9aTHCcu_c0NkC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From 8a1d66966778921c7682ace7cc07a0ff79d019e3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 12:08:46 -0400 Subject: [PATCH 025/211] Roll Skia from 56b68ce6196c to c2d28b15c246 (1 revision) (#43638) https://skia.googlesource.com/skia.git/+log/56b68ce6196c..c2d28b15c246 2023-07-13 wcandillon@gmail.com matchFamilyStyle to the external definition and refine the TypefaceFontProvide type If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f3493f94877bd..f27d0cc1f121e 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '56b68ce6196c395f24f4ac17ccd18ee03111cbf8', + 'skia_revision': 'c2d28b15c246aebb499c248e09b78b9ca4a3e9a7', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0134b4a895dfb..4b60bb65c4b5b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 63efa44b47bf0eddd988a322acd5d813 +Signature: 7dac9cf7f074b6043da97ce673122c59 ==================================================================================================== LIBRARY: etc1 From f1ab32e03627eb5048641af6c72d0226f7d3d267 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 12:48:59 -0400 Subject: [PATCH 026/211] Roll Fuchsia Linux SDK from xBJq6PsO5ebblODMe... to -csWUV7Dv3hETOoDw... (#43639) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f27d0cc1f121e..349abd8476c1a 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'xBJq6PsO5ebblODMegtfmB5Q-Kaghtn_K0m3pR3dU60C' + 'version': '-csWUV7Dv3hETOoDwiBHVjB-2sa36bEnpFP8NDjE7ucC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 44a296c90be71..5eb7195df912e 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: ad98b304d04164e717245b5c284794fb +Signature: 660a1de2243347309a4f8f3d537edf94 ==================================================================================================== LIBRARY: fuchsia_sdk From ef4f936b151349487ff32e233d27db24f4696c77 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 12:56:52 -0400 Subject: [PATCH 027/211] Roll Skia from c2d28b15c246 to 743ad92f5de2 (4 revisions) (#43640) https://skia.googlesource.com/skia.git/+log/c2d28b15c246..743ad92f5de2 2023-07-13 herb@google.com Use the correct signatures for functions 2023-07-13 kjlubick@google.com Add staging gni filegroup for files which need SKSL from core 2023-07-13 robertphillips@google.com Add label output to GrGpuResource::dumpMemoryStatisticsPriv 2023-07-13 johnstiles@google.com Revert "Disable render-task reordering on Iris Xe on OpenGL." If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 349abd8476c1a..8b78b6033a02e 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'c2d28b15c246aebb499c248e09b78b9ca4a3e9a7', + 'skia_revision': '743ad92f5de235112036e0ca62f2dd3684973afe', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4b60bb65c4b5b..5a5af27added7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7dac9cf7f074b6043da97ce673122c59 +Signature: 6a27c1ef6a099c4f45596ae68d7a0dfb ==================================================================================================== LIBRARY: etc1 From 0f8f3fcb8e9dd49c65dfcbf91de1c16a03c80148 Mon Sep 17 00:00:00 2001 From: John McCutchan Date: Thu, 13 Jul 2023 10:21:52 -0700 Subject: [PATCH 028/211] Improve Stencil Playground test (#43641) - Add UI to select front and back face comparision functions. - Fix back face. --- impeller/renderer/renderer_unittests.cc | 72 +++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/impeller/renderer/renderer_unittests.cc b/impeller/renderer/renderer_unittests.cc index 358612a49c8a2..d41ca97f82cc4 100644 --- a/impeller/renderer/renderer_unittests.cc +++ b/impeller/renderer/renderer_unittests.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "flutter/fml/logging.h" #include "flutter/testing/testing.h" #include "impeller/base/strings.h" #include "impeller/core/device_buffer_descriptor.h" @@ -1046,6 +1047,54 @@ TEST_P(RendererTest, VertexBufferBuilder) { ASSERT_EQ(vertex_builder.GetVertexCount(), 4u); } +class CompareFunctionUIData { + public: + CompareFunctionUIData() { + labels_.push_back("Never"); + functions_.push_back(CompareFunction::kNever); + labels_.push_back("Always"); + functions_.push_back(CompareFunction::kAlways); + labels_.push_back("Less"); + functions_.push_back(CompareFunction::kLess); + labels_.push_back("Equal"); + functions_.push_back(CompareFunction::kEqual); + labels_.push_back("LessEqual"); + functions_.push_back(CompareFunction::kLessEqual); + labels_.push_back("Greater"); + functions_.push_back(CompareFunction::kGreater); + labels_.push_back("NotEqual"); + functions_.push_back(CompareFunction::kNotEqual); + labels_.push_back("GreaterEqual"); + functions_.push_back(CompareFunction::kGreaterEqual); + assert(labels_.size() == functions_.size()); + } + + const char* const* labels() const { return &labels_[0]; } + + int size() const { return labels_.size(); } + + int IndexOf(CompareFunction func) const { + for (size_t i = 0; i < functions_.size(); i++) { + if (functions_[i] == func) { + return i; + } + } + FML_UNREACHABLE(); + return -1; + } + + CompareFunction FunctionOf(int index) const { return functions_[index]; } + + private: + std::vector labels_; + std::vector functions_; +}; + +static const CompareFunctionUIData& CompareFunctionUI() { + static CompareFunctionUIData data; + return data; +} + TEST_P(RendererTest, StencilMask) { using VS = BoxFadeVertexShader; using FS = BoxFadeFragmentShader; @@ -1083,6 +1132,10 @@ TEST_P(RendererTest, StencilMask) { static int stencil_reference_read = 0x1; std::vector stencil_contents; static int last_stencil_contents_reference_value = 0; + static int current_front_compare = + CompareFunctionUI().IndexOf(CompareFunction::kLessEqual); + static int current_back_compare = + CompareFunctionUI().IndexOf(CompareFunction::kLessEqual); Renderer::RenderCallback callback = [&](RenderTarget& render_target) { auto buffer = context->CreateCommandBuffer(); if (!buffer) { @@ -1133,11 +1186,20 @@ TEST_P(RendererTest, StencilMask) { 0xFF); ImGui::SliderInt("Stencil Compare Value", &stencil_reference_read, 0, 0xFF); - ImGui::Checkbox("Mirror", &mirror); + ImGui::Checkbox("Back face mode", &mirror); + ImGui::ListBox("Front face compare function", ¤t_front_compare, + CompareFunctionUI().labels(), CompareFunctionUI().size()); + ImGui::ListBox("Back face compare function", ¤t_back_compare, + CompareFunctionUI().labels(), CompareFunctionUI().size()); ImGui::End(); - StencilAttachmentDescriptor front_and_back; - front_and_back.stencil_compare = CompareFunction::kLessEqual; - desc->SetStencilAttachmentDescriptors(front_and_back); + + StencilAttachmentDescriptor front; + front.stencil_compare = + CompareFunctionUI().FunctionOf(current_front_compare); + StencilAttachmentDescriptor back; + back.stencil_compare = + CompareFunctionUI().FunctionOf(current_back_compare); + desc->SetStencilAttachmentDescriptors(front, back); auto pipeline = context->GetPipelineLibrary()->GetPipeline(desc).Get(); assert(pipeline && pipeline->IsValid()); @@ -1153,7 +1215,7 @@ TEST_P(RendererTest, StencilMask) { uniforms.mvp = Matrix::MakeOrthographic(pass->GetRenderTargetSize()) * Matrix::MakeScale(GetContentScale()); if (mirror) { - uniforms.mvp = Matrix::MakeScale(Vector2(-1, -1)) * uniforms.mvp; + uniforms.mvp = Matrix::MakeScale(Vector2(-1, 1)) * uniforms.mvp; } VS::BindUniformBuffer( cmd, pass->GetTransientsBuffer().EmplaceUniform(uniforms)); From dda57943c27c6bc5053aa282cc8a9ebc7b25bb0c Mon Sep 17 00:00:00 2001 From: chunhtai <47866232+chunhtai@users.noreply.github.com> Date: Thu, 13 Jul 2023 10:43:53 -0700 Subject: [PATCH 029/211] [web] TextField a11y focus should call didGain/didLose a11y focus action (#43279) fixes https://github.com/flutter/flutter/issues/128709 requires https://github.com/flutter/flutter/pull/129652 The issue is that when textfield focus in framework and web engine a11y are out of sync, the framework keep sending update with textfield focus = true and causes web engine to keep refocusing the textfield. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- .../lib/src/engine/semantics/text_field.dart | 11 +++++- .../test/engine/semantics/semantics_test.dart | 6 ++-- .../engine/semantics/text_field_test.dart | 34 +++++++++++-------- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/lib/web_ui/lib/src/engine/semantics/text_field.dart b/lib/web_ui/lib/src/engine/semantics/text_field.dart index 5f89f88f2f217..9d6a88a9ccb46 100644 --- a/lib/web_ui/lib/src/engine/semantics/text_field.dart +++ b/lib/web_ui/lib/src/engine/semantics/text_field.dart @@ -301,7 +301,16 @@ class TextField extends PrimaryRoleManager { } EnginePlatformDispatcher.instance.invokeOnSemanticsAction( - semanticsObject.id, ui.SemanticsAction.tap, null); + semanticsObject.id, ui.SemanticsAction.didGainAccessibilityFocus, null); + })); + activeEditableElement.addEventListener('blur', + createDomEventListener((DomEvent event) { + if (semanticsObject.owner.gestureMode != GestureMode.browserGestures) { + return; + } + + EnginePlatformDispatcher.instance.invokeOnSemanticsAction( + semanticsObject.id, ui.SemanticsAction.didLoseAccessibilityFocus, null); })); } diff --git a/lib/web_ui/test/engine/semantics/semantics_test.dart b/lib/web_ui/test/engine/semantics/semantics_test.dart index 5013ff3decc28..03a030358a74c 100644 --- a/lib/web_ui/test/engine/semantics/semantics_test.dart +++ b/lib/web_ui/test/engine/semantics/semantics_test.dart @@ -1517,7 +1517,7 @@ void _testTextField() { // TODO(yjbanov): this test will need to be adjusted for Safari when we add // Safari testing. - test('sends a tap action when text field is activated', () async { + test('sends a focus action when text field is activated', () async { final SemanticsActionLogger logger = SemanticsActionLogger(); semantics() ..debugOverrideTimestampFunction(() => _testTime) @@ -1526,7 +1526,7 @@ void _testTextField() { final ui.SemanticsUpdateBuilder builder = ui.SemanticsUpdateBuilder(); updateNode( builder, - actions: 0 | ui.SemanticsAction.tap.index, + actions: 0 | ui.SemanticsAction.didGainAccessibilityFocus.index, flags: 0 | ui.SemanticsFlag.isTextField.index, value: 'hello', transform: Matrix4.identity().toFloat64(), @@ -1544,7 +1544,7 @@ void _testTextField() { expect(appHostNode.ownerDocument?.activeElement, textField); expect(await logger.idLog.first, 0); - expect(await logger.actionLog.first, ui.SemanticsAction.tap); + expect(await logger.actionLog.first, ui.SemanticsAction.didGainAccessibilityFocus); semantics().semanticsEnabled = false; }, // TODO(yjbanov): https://github.com/flutter/flutter/issues/46638 diff --git a/lib/web_ui/test/engine/semantics/text_field_test.dart b/lib/web_ui/test/engine/semantics/text_field_test.dart index 503f1cdd11bd9..197e2fe50644d 100644 --- a/lib/web_ui/test/engine/semantics/text_field_test.dart +++ b/lib/web_ui/test/engine/semantics/text_field_test.dart @@ -92,25 +92,31 @@ void testMain() { '''); }); - // TODO(yjbanov): this test will need to be adjusted for Safari when we add - // Safari testing. - test('sends a tap action when browser requests focus', () async { - final SemanticsActionLogger logger = SemanticsActionLogger(); - createTextFieldSemantics(value: 'hello'); + // TODO(yjbanov): this test will need to be adjusted for Safari when we add + // Safari testing. + test('sends a didGainAccessibilityFocus/didLoseAccessibilityFocus action when browser requests focus/blur', () async { + final SemanticsActionLogger logger = SemanticsActionLogger(); + createTextFieldSemantics(value: 'hello'); - final DomElement textField = appHostNode - .querySelector('input[data-semantics-role="text-field"]')!; + final DomElement textField = appHostNode + .querySelector('input[data-semantics-role="text-field"]')!; - expect(appHostNode.ownerDocument?.activeElement, isNot(textField)); + expect(appHostNode.ownerDocument?.activeElement, isNot(textField)); - textField.focus(); + textField.focus(); - expect(appHostNode.ownerDocument?.activeElement, textField); - expect(await logger.idLog.first, 0); - expect(await logger.actionLog.first, ui.SemanticsAction.tap); + expect(appHostNode.ownerDocument?.activeElement, textField); + expect(await logger.idLog.first, 0); + expect(await logger.actionLog.first, ui.SemanticsAction.didGainAccessibilityFocus); + + textField.blur(); + + expect(appHostNode.ownerDocument?.activeElement, isNot(textField)); + expect(await logger.idLog.first, 0); + expect(await logger.actionLog.first, ui.SemanticsAction.didLoseAccessibilityFocus); }, // TODO(yjbanov): https://github.com/flutter/flutter/issues/46638 - // TODO(yjbanov): https://github.com/flutter/flutter/issues/50590 - skip: browserEngine != BrowserEngine.blink); + // TODO(yjbanov): https://github.com/flutter/flutter/issues/50590 + skip: browserEngine != BrowserEngine.blink); test('Syncs semantic state from framework', () { expect(appHostNode.ownerDocument?.activeElement, domDocument.body); From 15e2f021432cdbac6cf9f3e54f44880af2267112 Mon Sep 17 00:00:00 2001 From: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Thu, 13 Jul 2023 10:54:33 -0700 Subject: [PATCH 030/211] Revert "Add a flag to `ParagraphBuilder` for rounding hack migration" (#43642) Reverts flutter/engine#43118 The incorrect default value (`true` instead of `false`) was used in the PR and that caused internal test failures. I'll add a test before trying to reland. --- lib/ui/dart_ui.cc | 2 +- lib/ui/text.dart | 32 +++---------------- lib/ui/text/paragraph_builder.cc | 9 ++---- lib/ui/text/paragraph_builder.h | 6 ++-- .../src/engine/canvaskit/canvaskit_api.dart | 2 -- .../lib/src/engine/canvaskit/renderer.dart | 1 - lib/web_ui/lib/src/engine/canvaskit/text.dart | 4 --- lib/web_ui/lib/text.dart | 13 -------- lib/web_ui/test/canvaskit/text_test.dart | 24 +------------- testing/dart/paragraph_test.dart | 21 ------------ .../txt/src/skia/paragraph_builder_skia.cc | 1 - third_party/txt/src/txt/paragraph_style.h | 8 ----- 12 files changed, 11 insertions(+), 112 deletions(-) diff --git a/lib/ui/dart_ui.cc b/lib/ui/dart_ui.cc index efb5af0a30a69..77b126d797346 100644 --- a/lib/ui/dart_ui.cc +++ b/lib/ui/dart_ui.cc @@ -78,7 +78,7 @@ typedef CanvasPath Path; V(Gradient::Create, 1) \ V(ImageFilter::Create, 1) \ V(ImageShader::Create, 1) \ - V(ParagraphBuilder::Create, 10) \ + V(ParagraphBuilder::Create, 9) \ V(PathMeasure::Create, 3) \ V(Path::Create, 1) \ V(PictureRecorder::Create, 1) \ diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 2d40e63722668..313630e98017b 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -2798,7 +2798,7 @@ abstract class Paragraph { /// This only returns a valid value if asserts are enabled, and must not be /// used otherwise. bool get debugDisposed; -} + } @pragma('vm:entry-point') base class _NativeParagraph extends NativeFieldWrapperClass1 implements Paragraph { @@ -3015,28 +3015,6 @@ abstract class ParagraphBuilder { /// [Paragraph]. factory ParagraphBuilder(ParagraphStyle style) = _NativeParagraphBuilder; - /// Whether the rounding hack enabled by default in SkParagraph and TextPainter - /// is disabled. - /// - /// Do not rely on this getter as it exists for migration purposes only and - /// will soon be removed. - static bool get shouldDisableRoundingHack { - return const bool.hasEnvironment('SKPARAGRAPH_REMOVE_ROUNDING_HACK') - || _roundingHackDisabledInDebugMode; - } - static bool _roundingHackDisabledInDebugMode = true; - - /// Only works in debug mode. Do not call this method as it is for migration - /// purposes only and will soon be removed. - static void setDisableRoundingHack(bool disableRoundingHack) { - // bool.hasEnvironment does not work in internal tests so an additional flag - // is needed for tests. - assert(() { - _roundingHackDisabledInDebugMode = disableRoundingHack; - return true; - }()); - } - /// The number of placeholders currently in the paragraph. int get placeholderCount; @@ -3154,12 +3132,11 @@ base class _NativeParagraphBuilder extends NativeFieldWrapperClass1 implements P style._fontSize ?? 0, style._height ?? 0, style._ellipsis ?? '', - _encodeLocale(style._locale), - !ParagraphBuilder.shouldDisableRoundingHack, + _encodeLocale(style._locale) ); } - @Native(symbol: 'ParagraphBuilder::Create') + @Native(symbol: 'ParagraphBuilder::Create') external void _constructor( Int32List encoded, ByteData? strutData, @@ -3168,8 +3145,7 @@ base class _NativeParagraphBuilder extends NativeFieldWrapperClass1 implements P double fontSize, double height, String ellipsis, - String locale, - bool applyRoundingHack); + String locale); @override int get placeholderCount => _placeholderCount; diff --git a/lib/ui/text/paragraph_builder.cc b/lib/ui/text/paragraph_builder.cc index eb01511772d49..3857a10572d62 100644 --- a/lib/ui/text/paragraph_builder.cc +++ b/lib/ui/text/paragraph_builder.cc @@ -151,12 +151,11 @@ void ParagraphBuilder::Create(Dart_Handle wrapper, double fontSize, double height, const std::u16string& ellipsis, - const std::string& locale, - bool applyRoundingHack) { + const std::string& locale) { UIDartState::ThrowIfUIOperationsProhibited(); auto res = fml::MakeRefCounted( encoded_handle, strutData, fontFamily, strutFontFamilies, fontSize, - height, ellipsis, locale, applyRoundingHack); + height, ellipsis, locale); res->AssociateWithDartWrapper(wrapper); } @@ -231,8 +230,7 @@ ParagraphBuilder::ParagraphBuilder( double fontSize, double height, const std::u16string& ellipsis, - const std::string& locale, - bool applyRoundingHack) { + const std::string& locale) { int32_t mask = 0; txt::ParagraphStyle style; { @@ -293,7 +291,6 @@ ParagraphBuilder::ParagraphBuilder( if (mask & kPSLocaleMask) { style.locale = locale; } - style.apply_rounding_hack = applyRoundingHack; FontCollection& font_collection = UIDartState::Current() ->platform_configuration() diff --git a/lib/ui/text/paragraph_builder.h b/lib/ui/text/paragraph_builder.h index 6fc7c58ad97aa..0018f969da68f 100644 --- a/lib/ui/text/paragraph_builder.h +++ b/lib/ui/text/paragraph_builder.h @@ -30,8 +30,7 @@ class ParagraphBuilder : public RefCountedDartWrappable { double fontSize, double height, const std::u16string& ellipsis, - const std::string& locale, - bool applyRoundingHack); + const std::string& locale); ~ParagraphBuilder() override; @@ -77,8 +76,7 @@ class ParagraphBuilder : public RefCountedDartWrappable { double fontSize, double height, const std::u16string& ellipsis, - const std::string& locale, - bool applyRoundingHack); + const std::string& locale); std::unique_ptr m_paragraphBuilder; }; diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart index 0e1ef282513d9..6508d12141898 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -2732,8 +2732,6 @@ extension SkParagraphStylePropertiesExtension on SkParagraphStyleProperties { @JS('replaceTabCharacters') external set _replaceTabCharacters(JSBoolean? bool); set replaceTabCharacters(bool? bool) => _replaceTabCharacters = bool?.toJS; - - external set applyRoundingHack(bool applyRoundingHack); } @JS() diff --git a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart index 96da491f69af4..834446ef26d82 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart @@ -328,7 +328,6 @@ class CanvasKitRenderer implements Renderer { strutStyle: strutStyle, ellipsis: ellipsis, locale: locale, - applyRoundingHack: !ui.ParagraphBuilder.shouldDisableRoundingHack, ); @override diff --git a/lib/web_ui/lib/src/engine/canvaskit/text.dart b/lib/web_ui/lib/src/engine/canvaskit/text.dart index 0948916b5d799..6fe5a29a48db3 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/text.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/text.dart @@ -33,7 +33,6 @@ class CkParagraphStyle implements ui.ParagraphStyle { ui.StrutStyle? strutStyle, String? ellipsis, ui.Locale? locale, - bool applyRoundingHack = true, }) : skParagraphStyle = toSkParagraphStyle( textAlign, textDirection, @@ -47,7 +46,6 @@ class CkParagraphStyle implements ui.ParagraphStyle { strutStyle, ellipsis, locale, - applyRoundingHack, ), _fontFamily = _effectiveFontFamily(fontFamily), _fontSize = fontSize, @@ -147,7 +145,6 @@ class CkParagraphStyle implements ui.ParagraphStyle { ui.StrutStyle? strutStyle, String? ellipsis, ui.Locale? locale, - bool applyRoundingHack, ) { final SkParagraphStyleProperties properties = SkParagraphStyleProperties(); @@ -184,7 +181,6 @@ class CkParagraphStyle implements ui.ParagraphStyle { properties.replaceTabCharacters = true; properties.textStyle = toSkTextStyleProperties( fontFamily, fontSize, height, fontWeight, fontStyle); - properties.applyRoundingHack = applyRoundingHack; return canvasKit.ParagraphStyle(properties); } diff --git a/lib/web_ui/lib/text.dart b/lib/web_ui/lib/text.dart index dea0c720db9ec..491966a0f88c2 100644 --- a/lib/web_ui/lib/text.dart +++ b/lib/web_ui/lib/text.dart @@ -685,19 +685,6 @@ abstract class Paragraph { abstract class ParagraphBuilder { factory ParagraphBuilder(ParagraphStyle style) => engine.renderer.createParagraphBuilder(style); - - static bool get shouldDisableRoundingHack { - return const bool.hasEnvironment('SKPARAGRAPH_REMOVE_ROUNDING_HACK') - || _roundingHackDisabledInDebugMode; - } - static bool _roundingHackDisabledInDebugMode = true; - static void setDisableRoundingHack(bool disableRoundingHack) { - assert(() { - _roundingHackDisabledInDebugMode = disableRoundingHack; - return true; - }()); - } - void pushStyle(TextStyle style); void pop(); void addText(String text); diff --git a/lib/web_ui/test/canvaskit/text_test.dart b/lib/web_ui/test/canvaskit/text_test.dart index d906cabc33167..8d4af676480fe 100644 --- a/lib/web_ui/test/canvaskit/text_test.dart +++ b/lib/web_ui/test/canvaskit/text_test.dart @@ -123,29 +123,7 @@ void testMain() { } }); }); - - test('applyRoundingHack works', () { - const double fontSize = 1.25; - const String text = '12345'; - assert((fontSize * text.length).truncate() != fontSize * text.length); - final bool roundingHackWasDisabled = ui.ParagraphBuilder.shouldDisableRoundingHack; - ui.ParagraphBuilder.setDisableRoundingHack(true); - final ui.ParagraphBuilder builder = ui.ParagraphBuilder( - ui.ParagraphStyle(fontSize: fontSize, fontFamily: 'FlutterTest'), - ); - builder.addText(text); - final ui.Paragraph paragraph = builder.build() - ..layout(const ui.ParagraphConstraints(width: text.length * fontSize)); - - expect(paragraph.maxIntrinsicWidth, text.length * fontSize); - switch (paragraph.computeLineMetrics()) { - case [ui.LineMetrics(width: final double width)]: - expect(width, text.length * fontSize); - case final List metrics: - expect(metrics, hasLength(1)); - } - ui.ParagraphBuilder.setDisableRoundingHack(roundingHackWasDisabled); - }); // TODO(hterkelsen): https://github.com/flutter/flutter/issues/71520 }, skip: isSafari || isFirefox); + } diff --git a/testing/dart/paragraph_test.dart b/testing/dart/paragraph_test.dart index 075bfa2993c4f..8c8e865770c59 100644 --- a/testing/dart/paragraph_test.dart +++ b/testing/dart/paragraph_test.dart @@ -233,25 +233,4 @@ void main() { expect(callback, throwsStateError); } }); - - test('disableRoundingHack works', () { - const double fontSize = 1.25; - const String text = '12345'; - assert((fontSize * text.length).truncate() != fontSize * text.length); - final bool roundingHackWasDisabled = ParagraphBuilder.shouldDisableRoundingHack; - ParagraphBuilder.setDisableRoundingHack(true); - final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle(fontSize: fontSize)); - builder.addText(text); - final Paragraph paragraph = builder.build() - ..layout(const ParagraphConstraints(width: text.length * fontSize)); - - expect(paragraph.maxIntrinsicWidth, text.length * fontSize); - switch (paragraph.computeLineMetrics()) { - case [LineMetrics(width: final double width)]: - expect(width, text.length * fontSize); - case final List metrics: - expect(metrics, hasLength(1)); - } - ParagraphBuilder.setDisableRoundingHack(roundingHackWasDisabled); - }); } diff --git a/third_party/txt/src/skia/paragraph_builder_skia.cc b/third_party/txt/src/skia/paragraph_builder_skia.cc index 641725ec6ccfb..96d98f3f4c29f 100644 --- a/third_party/txt/src/skia/paragraph_builder_skia.cc +++ b/third_party/txt/src/skia/paragraph_builder_skia.cc @@ -138,7 +138,6 @@ skt::ParagraphStyle ParagraphBuilderSkia::TxtToSkia(const ParagraphStyle& txt) { skia.turnHintingOff(); skia.setReplaceTabCharacters(true); - skia.setApplyRoundingHack(txt.apply_rounding_hack); return skia; } diff --git a/third_party/txt/src/txt/paragraph_style.h b/third_party/txt/src/txt/paragraph_style.h index e1915323a0bd3..7c3043b8ad899 100644 --- a/third_party/txt/src/txt/paragraph_style.h +++ b/third_party/txt/src/txt/paragraph_style.h @@ -95,14 +95,6 @@ class ParagraphStyle { std::u16string ellipsis; std::string locale; - // Temporary flag that indicates whether the Paragraph should report its - // metrics with rounding hacks applied. - // - // This flag currently defaults to true and will be flipped to false once the - // migration is complete. - // TODO(LongCatIsLooong): https://github.com/flutter/flutter/issues/31707 - bool apply_rounding_hack = true; - TextStyle GetTextStyle() const; bool unlimited_lines() const; From 740e09f98039e9c7fdc42ef039f6800534b13428 Mon Sep 17 00:00:00 2001 From: Victoria Ashworth <15619084+vashworth@users.noreply.github.com> Date: Thu, 13 Jul 2023 12:55:48 -0500 Subject: [PATCH 031/211] Add logs to debug VM Service Publication (#43616) Adding logs to help debug why VM Service is being published when it shouldn't (https://github.com/flutter/flutter/issues/129987 and https://github.com/flutter/flutter/issues/129836). [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- .../ios/framework/Source/FlutterDartVMServicePublisher.mm | 2 ++ shell/platform/darwin/ios/framework/Source/FlutterEngine.mm | 2 ++ 2 files changed, 4 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartVMServicePublisher.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartVMServicePublisher.mm index c8083366af5ab..e59bed6c0c255 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartVMServicePublisher.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartVMServicePublisher.mm @@ -80,6 +80,8 @@ - (void)stopService { } - (void)publishServiceProtocolPort:(NSURL*)url { + // TODO(vashworth): Remove once done debugging https://github.com/flutter/flutter/issues/129836 + FML_LOG(INFO) << "Publish Service Protocol Port"; DNSServiceFlags flags = kDNSServiceFlagsDefault; #if TARGET_IPHONE_SIMULATOR // Simulator needs to use local loopback explicitly to work. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 1130dcccf7efe..8f67ec1b8b1db 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -871,6 +871,8 @@ - (BOOL)createShell:(NSString*)entrypoint FML_LOG(ERROR) << "Could not start a shell FlutterEngine with entrypoint: " << entrypoint.UTF8String; } else { + // TODO(vashworth): Remove once done debugging https://github.com/flutter/flutter/issues/129836 + FML_LOG(INFO) << "Enabled VM Service Publication: " << settings.enable_vm_service_publication; [self setupShell:std::move(shell) withVMServicePublication:settings.enable_vm_service_publication]; if ([FlutterEngine isProfilerEnabled]) { From 8f39d5e90922909a835640828efc39a6ab85bf05 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 13 Jul 2023 11:13:03 -0700 Subject: [PATCH 032/211] [Impeller] Switch back to using explicit flush for device buffers. (#43644) Not all devices support the host_coherent + host_visible + device_local combo (though most do). I believe this change was associated with a slight regression in performance, so back it out and go back to flush to see if that improves things. https://flutter-flutter-perf.skia.org/e/?begin=1687535096&end=1689267073&queries=device_type%3DSM-G973U1%26test%3Dnew_gallery_impeller__transition_perf&requestType=0&selected=commit%3D35596%26name%3D%252Carch%253Dintel%252Cbranch%253Dmaster%252Cconfig%253Ddefault%252Cdevice_type%253DSM-G973U1%252Cdevice_version%253Dnone%252Chost_type%253Dlinux%252Csub_result%253D99th_percentile_frame_rasterizer_time_millis%252Ctest%253Dnew_gallery_impeller__transition_perf%252C Specifically: ![image](https://github.com/flutter/engine/assets/8975114/fedabc18-9091-45c0-b7b3-ee9945c2239c) --- .../renderer/backend/vulkan/allocator_vk.cc | 23 +++++-------------- .../backend/vulkan/device_buffer_vk.cc | 3 +++ 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/impeller/renderer/backend/vulkan/allocator_vk.cc b/impeller/renderer/backend/vulkan/allocator_vk.cc index 345a37bddd9a9..3adce1b42452a 100644 --- a/impeller/renderer/backend/vulkan/allocator_vk.cc +++ b/impeller/renderer/backend/vulkan/allocator_vk.cc @@ -251,8 +251,7 @@ ToVKTextureMemoryPropertyFlags(StorageMode mode, switch (mode) { case StorageMode::kHostVisible: return vk::MemoryPropertyFlagBits::eHostVisible | - vk::MemoryPropertyFlagBits::eDeviceLocal | - vk::MemoryPropertyFlagBits::eHostCoherent; + vk::MemoryPropertyFlagBits::eDeviceLocal; case StorageMode::kDevicePrivate: return vk::MemoryPropertyFlagBits::eDeviceLocal; case StorageMode::kDeviceTransient: @@ -266,25 +265,16 @@ ToVKTextureMemoryPropertyFlags(StorageMode mode, } static VmaAllocationCreateFlags ToVmaAllocationCreateFlags(StorageMode mode, - bool is_texture, size_t size) { VmaAllocationCreateFlags flags = 0; switch (mode) { case StorageMode::kHostVisible: - if (is_texture) { - if (size >= kImageSizeThresholdForDedicatedMemoryAllocation) { - flags |= VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; - } else { - flags |= {}; - } - } else { - flags |= VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT; - flags |= VMA_ALLOCATION_CREATE_MAPPED_BIT; + if (size >= kImageSizeThresholdForDedicatedMemoryAllocation) { + flags |= VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; } return flags; case StorageMode::kDevicePrivate: - if (is_texture && - size >= kImageSizeThresholdForDedicatedMemoryAllocation) { + if (size >= kImageSizeThresholdForDedicatedMemoryAllocation) { flags |= VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; } return flags; @@ -328,9 +318,8 @@ class AllocatedTextureSourceVK final : public TextureSourceVK { alloc_nfo.preferredFlags = static_cast(ToVKTextureMemoryPropertyFlags( desc.storage_mode, supports_memoryless_textures)); - alloc_nfo.flags = - ToVmaAllocationCreateFlags(desc.storage_mode, /*is_texture=*/true, - desc.GetByteSizeOfBaseMipLevel()); + alloc_nfo.flags = ToVmaAllocationCreateFlags( + desc.storage_mode, desc.GetByteSizeOfBaseMipLevel()); auto create_info_native = static_cast(image_info); diff --git a/impeller/renderer/backend/vulkan/device_buffer_vk.cc b/impeller/renderer/backend/vulkan/device_buffer_vk.cc index 5386ae3c037e8..02dc00d21686a 100644 --- a/impeller/renderer/backend/vulkan/device_buffer_vk.cc +++ b/impeller/renderer/backend/vulkan/device_buffer_vk.cc @@ -40,6 +40,9 @@ bool DeviceBufferVK::OnCopyHostBuffer(const uint8_t* source, if (source) { ::memmove(dest + offset, source + source_range.offset, source_range.length); } + ::vmaFlushAllocation(resource_->buffer.get().allocator, + resource_->buffer.get().allocation, offset, + source_range.length); return true; } From 323d66401fe67a6c3894b52572cfcd493aa04e91 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 14:41:54 -0400 Subject: [PATCH 033/211] Roll Dart SDK from 16ddfe8d08e0 to 9506d0c9f5ef (1 revision) (#43646) https://dart.googlesource.com/sdk.git/+log/16ddfe8d08e0..9506d0c9f5ef 2023-07-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-308.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 8b78b6033a02e..d91815d0c1f11 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '16ddfe8d08e09eb529112bc78ac4dcae7e1fdfd3', + 'dart_revision': '9506d0c9f5ef12ed2f161006165290c5e86d19cc', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 8f2c82fc34ab7cc3433f6e8c1038d9f0ebc2f8c8 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 13 Jul 2023 13:13:55 -0700 Subject: [PATCH 034/211] Fix a Fuchsia formatter type mismatch flagged by the pending Clang roll (#43651) --- shell/platform/fuchsia/runtime/dart/utils/vmo.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shell/platform/fuchsia/runtime/dart/utils/vmo.cc b/shell/platform/fuchsia/runtime/dart/utils/vmo.cc index ecc29e22db1dd..043b46f1ee6ab 100644 --- a/shell/platform/fuchsia/runtime/dart/utils/vmo.cc +++ b/shell/platform/fuchsia/runtime/dart/utils/vmo.cc @@ -69,7 +69,8 @@ bool VmoFromFilename(const std::string& filename, fdio_open_fd(filename.c_str(), static_cast(flags), &fd); if (status != ZX_OK) { FX_LOGF(ERROR, LOG_TAG, "fdio_open_fd(\"%s\", %08x) failed: %s", - filename.c_str(), flags, zx_status_get_string(status)); + filename.c_str(), static_cast(flags), + zx_status_get_string(status)); return false; } bool result = VmoFromFd(fd, executable, buffer); @@ -91,7 +92,8 @@ bool VmoFromFilenameAt(int dirfd, static_cast(flags), &fd); if (status != ZX_OK) { FX_LOGF(ERROR, LOG_TAG, "fdio_open_fd_at(%d, \"%s\", %08x) failed: %s", - dirfd, filename.c_str(), flags, zx_status_get_string(status)); + dirfd, filename.c_str(), static_cast(flags), + zx_status_get_string(status)); return false; } bool result = VmoFromFd(fd, executable, buffer); From 9d551156174ca08c4cd37b4056b2ab0c2776ad2f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 18:05:37 -0400 Subject: [PATCH 035/211] Roll Skia from 743ad92f5de2 to 52613fcc0780 (9 revisions) (#43655) https://skia.googlesource.com/skia.git/+log/743ad92f5de2..52613fcc0780 2023-07-13 lovisolo@google.com [bazel] //gm/BazelGMRunner.cpp: Add support for GL/Ganesh. 2023-07-13 lovisolo@google.com [bazel] //gm/BazelGMRunner.cpp: Add support for specifying a config via --config. 2023-07-13 johnstiles@google.com Fix swizzled compound assignment with lvalue side-effects in Metal. 2023-07-13 johnstiles@google.com Ensure index-substitution expressions are initialized before use. 2023-07-13 brianosman@google.com Remove SkOpts_skx.cpp completely 2023-07-13 ayzhao@google.com Fix some missing C++ standard library includes 2023-07-13 robertphillips@google.com Merge Ganesh and Graphite TiledTextureUtils::DrawImageRect implementations 2023-07-13 robertphillips@google.com Switch DrawImageRect_Ganesh to work at the SkCanvas level 2023-07-13 johnstiles@google.com Add unit test for lvalue side-effects in swizzled compound assignment. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/excluded_files | 1 + ci/licenses_golden/licenses_skia | 16 +++++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/DEPS b/DEPS index d91815d0c1f11..6b581a9d3afee 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '743ad92f5de235112036e0ca62f2dd3684973afe', + 'skia_revision': '52613fcc0780a8f9478fb50f7c8629cd0b48930d', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index 844ae7972e8b1..923a35020a2e6 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -2608,6 +2608,7 @@ ../../../third_party/skia/fuzz/README.md ../../../third_party/skia/gm/BUILD.bazel ../../../third_party/skia/gm/android_gm_test.bzl +../../../third_party/skia/gm/surface_manager/BUILD.bazel ../../../third_party/skia/gn/BUILD.bazel ../../../third_party/skia/gn/__init__.py ../../../third_party/skia/gn/bazel_build.py diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5a5af27added7..69228c99263a6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6a27c1ef6a099c4f45596ae68d7a0dfb +Signature: cc39f05a3ca19757f1e5a0fbb07cbaf2 ==================================================================================================== LIBRARY: etc1 @@ -6618,7 +6618,6 @@ ORIGIN: ../../../third_party/skia/src/gpu/ganesh/ops/SmallPathShapeData.h + ../. ORIGIN: ../../../third_party/skia/src/gpu/tessellate/MiddleOutPolygonTriangulator.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/tessellate/StrokeIterator.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/tessellate/WangsFormula.h + ../../../third_party/skia/LICENSE -ORIGIN: ../../../third_party/skia/src/opts/SkOpts_skx.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/ports/SkScalerContext_mac_ct.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/ports/SkTypeface_mac_ct.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/text/gpu/SDFTControl.cpp + ../../../third_party/skia/LICENSE @@ -6753,7 +6752,6 @@ FILE: ../../../third_party/skia/src/gpu/ganesh/ops/SmallPathShapeData.h FILE: ../../../third_party/skia/src/gpu/tessellate/MiddleOutPolygonTriangulator.h FILE: ../../../third_party/skia/src/gpu/tessellate/StrokeIterator.h FILE: ../../../third_party/skia/src/gpu/tessellate/WangsFormula.h -FILE: ../../../third_party/skia/src/opts/SkOpts_skx.cpp FILE: ../../../third_party/skia/src/ports/SkScalerContext_mac_ct.h FILE: ../../../third_party/skia/src/ports/SkTypeface_mac_ct.h FILE: ../../../third_party/skia/src/text/gpu/SDFTControl.cpp @@ -8754,6 +8752,7 @@ LIBRARY: skia ORIGIN: ../../../third_party/skia/gm/coordclampshader.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/fontations.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/imagefiltersunpremul.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/gm/surface_manager/SurfaceManager.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/ports/SkFontMgr_data.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/ports/SkTypeface_fontations.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/private/SkGainmapInfo.h + ../../../third_party/skia/LICENSE @@ -8793,6 +8792,7 @@ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/gm/coordclampshader.cpp FILE: ../../../third_party/skia/gm/fontations.cpp FILE: ../../../third_party/skia/gm/imagefiltersunpremul.cpp +FILE: ../../../third_party/skia/gm/surface_manager/SurfaceManager.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_data.h FILE: ../../../third_party/skia/include/ports/SkTypeface_fontations.h FILE: ../../../third_party/skia/include/private/SkGainmapInfo.h @@ -8870,6 +8870,9 @@ ORIGIN: ../../../third_party/skia/gm/BazelGMRunner.cpp + ../../../third_party/sk ORIGIN: ../../../third_party/skia/gm/BazelNoopRunner.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/graphite_replay.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/scaledrects.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/gm/surface_manager/GaneshGLSurfaceManager.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/gm/surface_manager/GaneshVulkanSurfaceManager.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/gm/surface_manager/RasterSurfaceManager.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/android/SkCanvasAndroid.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/android/SkHeifDecoder.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/android/SkImageAndroid.h + ../../../third_party/skia/LICENSE @@ -8966,7 +8969,6 @@ ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListRecorder.c ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrPromiseImageTexture.cpp + ../../../third_party/skia/LICENSE -ORIGIN: ../../../third_party/skia/src/gpu/ganesh/TiledTextureUtils_Ganesh.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrPerlinNoise2Effect.cpp + ../../../third_party/skia/LICENSE @@ -8994,7 +8996,6 @@ ORIGIN: ../../../third_party/skia/src/gpu/graphite/PathAtlas.h + ../../../third_ ORIGIN: ../../../third_party/skia/src/gpu/graphite/ProxyCache.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/ProxyCache.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/ReadSwizzle.h + ../../../third_party/skia/LICENSE -ORIGIN: ../../../third_party/skia/src/gpu/graphite/TiledTextureUtils_Graphite.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/YUVABackendTextures.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/YUVATextureProxies.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/YUVATextureProxies.h + ../../../third_party/skia/LICENSE @@ -9070,6 +9071,9 @@ FILE: ../../../third_party/skia/gm/BazelGMRunner.cpp FILE: ../../../third_party/skia/gm/BazelNoopRunner.cpp FILE: ../../../third_party/skia/gm/graphite_replay.cpp FILE: ../../../third_party/skia/gm/scaledrects.cpp +FILE: ../../../third_party/skia/gm/surface_manager/GaneshGLSurfaceManager.cpp +FILE: ../../../third_party/skia/gm/surface_manager/GaneshVulkanSurfaceManager.cpp +FILE: ../../../third_party/skia/gm/surface_manager/RasterSurfaceManager.cpp FILE: ../../../third_party/skia/include/android/SkCanvasAndroid.h FILE: ../../../third_party/skia/include/android/SkHeifDecoder.h FILE: ../../../third_party/skia/include/android/SkImageAndroid.h @@ -9166,7 +9170,6 @@ FILE: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListRecorder.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.h FILE: ../../../third_party/skia/src/gpu/ganesh/GrPromiseImageTexture.cpp -FILE: ../../../third_party/skia/src/gpu/ganesh/TiledTextureUtils_Ganesh.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.h FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrPerlinNoise2Effect.cpp @@ -9194,7 +9197,6 @@ FILE: ../../../third_party/skia/src/gpu/graphite/PathAtlas.h FILE: ../../../third_party/skia/src/gpu/graphite/ProxyCache.cpp FILE: ../../../third_party/skia/src/gpu/graphite/ProxyCache.h FILE: ../../../third_party/skia/src/gpu/graphite/ReadSwizzle.h -FILE: ../../../third_party/skia/src/gpu/graphite/TiledTextureUtils_Graphite.cpp FILE: ../../../third_party/skia/src/gpu/graphite/YUVABackendTextures.cpp FILE: ../../../third_party/skia/src/gpu/graphite/YUVATextureProxies.cpp FILE: ../../../third_party/skia/src/gpu/graphite/YUVATextureProxies.h From eb552dd1494c40ede5c3e876692f5d6d03c21319 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 13 Jul 2023 15:13:45 -0700 Subject: [PATCH 036/211] Revert https://github.com/flutter/engine/pull/43533 (#43654) Reverts https://github.com/flutter/engine/pull/43533 Cause of https://github.com/flutter/flutter/issues/130476 I was trying to add a test for this but it's taking me a while to get a working test so here's the revert. --- impeller/aiks/aiks_unittests.cc | 29 ------ impeller/aiks/canvas.cc | 5 + impeller/aiks/canvas.h | 1 + impeller/display_list/dl_dispatcher.cc | 3 +- .../contents/color_source_text_contents.cc | 7 -- .../contents/color_source_text_contents.h | 5 - impeller/entity/contents/content_context.h | 10 -- impeller/entity/contents/contents.h | 6 -- impeller/entity/contents/text_contents.cc | 99 ++++++++++--------- impeller/entity/contents/text_contents.h | 11 +-- impeller/entity/entity.cc | 4 - impeller/entity/entity.h | 2 - impeller/entity/entity_pass.cc | 35 ------- impeller/entity/entity_pass.h | 6 -- impeller/entity/entity_unittests.cc | 2 +- .../backends/skia/text_frame_skia.cc | 7 +- .../backends/skia/text_frame_skia.h | 3 +- .../backends/skia/text_render_context_skia.cc | 59 +++++++---- .../backends/skia/text_render_context_skia.h | 2 +- impeller/typographer/font.h | 12 ++- impeller/typographer/font_glyph_pair.h | 11 +-- impeller/typographer/lazy_glyph_atlas.cc | 20 +++- impeller/typographer/lazy_glyph_atlas.h | 6 +- impeller/typographer/text_frame.cc | 11 --- impeller/typographer/text_frame.h | 2 - impeller/typographer/text_render_context.cc | 15 +++ impeller/typographer/text_render_context.h | 9 +- impeller/typographer/typographer_unittests.cc | 65 ++++++------ 28 files changed, 199 insertions(+), 248 deletions(-) diff --git a/impeller/aiks/aiks_unittests.cc b/impeller/aiks/aiks_unittests.cc index 7fe1b6bcaab8d..b8a5c7dc73357 100644 --- a/impeller/aiks/aiks_unittests.cc +++ b/impeller/aiks/aiks_unittests.cc @@ -2877,35 +2877,6 @@ TEST_P(AiksTest, CanCanvasDrawPicture) { ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); } -TEST_P(AiksTest, DrawPictureWithText) { - Canvas subcanvas; - ASSERT_TRUE(RenderTextInCanvas( - GetContext(), subcanvas, - "the quick brown fox jumped over the lazy dog!.?", "Roboto-Regular.ttf")); - subcanvas.Translate({0, 10}); - subcanvas.Scale(Vector2(3, 3)); - ASSERT_TRUE(RenderTextInCanvas( - GetContext(), subcanvas, - "the quick brown fox jumped over the very big lazy dog!.?", - "Roboto-Regular.ttf")); - auto picture = subcanvas.EndRecordingAsPicture(); - - Canvas canvas; - canvas.Scale(Vector2(.2, .2)); - canvas.Save(); - canvas.Translate({200, 200}); - canvas.Scale(Vector2(3.5, 3.5)); // The text must not be blurry after this. - canvas.DrawPicture(picture); - canvas.Restore(); - - canvas.Scale(Vector2(1.5, 1.5)); - ASSERT_TRUE(RenderTextInCanvas( - GetContext(), canvas, - "the quick brown fox jumped over the smaller lazy dog!.?", - "Roboto-Regular.ttf")); - ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); -} - TEST_P(AiksTest, MatrixBackdropFilter) { Canvas canvas; canvas.SaveLayer({}, std::nullopt, diff --git a/impeller/aiks/canvas.cc b/impeller/aiks/canvas.cc index 9e9b89e25a041..82424b2c86d59 100644 --- a/impeller/aiks/canvas.cc +++ b/impeller/aiks/canvas.cc @@ -42,6 +42,7 @@ void Canvas::Initialize(std::optional cull_rect) { base_pass_ = std::make_unique(); current_pass_ = base_pass_.get(); xformation_stack_.emplace_back(CanvasStackEntry{.cull_rect = cull_rect}); + lazy_glyph_atlas_ = std::make_shared(); FML_DCHECK(GetSaveCount() == 1u); FML_DCHECK(base_pass_->GetSubpassesDepth() == 1u); } @@ -50,6 +51,7 @@ void Canvas::Reset() { base_pass_ = nullptr; current_pass_ = nullptr; xformation_stack_ = {}; + lazy_glyph_atlas_ = nullptr; } void Canvas::Save() { @@ -514,12 +516,15 @@ void Canvas::SaveLayer(const Paint& paint, void Canvas::DrawTextFrame(const TextFrame& text_frame, Point position, const Paint& paint) { + lazy_glyph_atlas_->AddTextFrame(text_frame); + Entity entity; entity.SetStencilDepth(GetStencilDepth()); entity.SetBlendMode(paint.blend_mode); auto text_contents = std::make_shared(); text_contents->SetTextFrame(text_frame); + text_contents->SetGlyphAtlas(lazy_glyph_atlas_); if (paint.color_source.GetType() != ColorSource::Type::kColor) { auto color_text_contents = std::make_shared(); diff --git a/impeller/aiks/canvas.h b/impeller/aiks/canvas.h index 84f1c486bc30f..aa3da9f0681a2 100644 --- a/impeller/aiks/canvas.h +++ b/impeller/aiks/canvas.h @@ -162,6 +162,7 @@ class Canvas { std::unique_ptr base_pass_; EntityPass* current_pass_ = nullptr; std::deque xformation_stack_; + std::shared_ptr lazy_glyph_atlas_; std::optional initial_cull_rect_; void Initialize(std::optional cull_rect); diff --git a/impeller/display_list/dl_dispatcher.cc b/impeller/display_list/dl_dispatcher.cc index 9964e9e71eaf9..51ba0ea924782 100644 --- a/impeller/display_list/dl_dispatcher.cc +++ b/impeller/display_list/dl_dispatcher.cc @@ -1104,7 +1104,8 @@ void DlDispatcher::drawDisplayList( void DlDispatcher::drawTextBlob(const sk_sp blob, SkScalar x, SkScalar y) { - const auto text_frame = TextFrameFromTextBlob(blob); + Scalar scale = canvas_.GetCurrentTransformation().GetMaxBasisLengthXY(); + const auto text_frame = TextFrameFromTextBlob(blob, scale); if (paint_.style == Paint::Style::kStroke) { auto path = skia_conversions::PathDataFromTextBlob(blob); auto bounds = text_frame.GetBounds(); diff --git a/impeller/entity/contents/color_source_text_contents.cc b/impeller/entity/contents/color_source_text_contents.cc index a09e44c8dcb35..16407e0bb2da0 100644 --- a/impeller/entity/contents/color_source_text_contents.cc +++ b/impeller/entity/contents/color_source_text_contents.cc @@ -4,7 +4,6 @@ #include "impeller/entity/contents/color_source_text_contents.h" -#include "color_source_text_contents.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/texture_contents.h" #include "impeller/renderer/render_pass.h" @@ -34,12 +33,6 @@ void ColorSourceTextContents::SetTextPosition(Point position) { position_ = position; } -void ColorSourceTextContents::PopulateGlyphAtlas( - const std::shared_ptr& lazy_glyph_atlas, - Scalar scale) const { - text_contents_->PopulateGlyphAtlas(lazy_glyph_atlas, scale); -} - bool ColorSourceTextContents::Render(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const { diff --git a/impeller/entity/contents/color_source_text_contents.h b/impeller/entity/contents/color_source_text_contents.h index d66a7ea313458..e93738c8f3760 100644 --- a/impeller/entity/contents/color_source_text_contents.h +++ b/impeller/entity/contents/color_source_text_contents.h @@ -32,11 +32,6 @@ class ColorSourceTextContents final : public Contents { // |Contents| std::optional GetCoverage(const Entity& entity) const override; - // |Contents| - void PopulateGlyphAtlas( - const std::shared_ptr& lazy_glyph_atlas, - Scalar scale) const override; - // |Contents| bool Render(const ContentContext& renderer, const Entity& entity, diff --git a/impeller/entity/contents/content_context.h b/impeller/entity/contents/content_context.h index 7693dfd3622f7..d2e1a16c8f92c 100644 --- a/impeller/entity/contents/content_context.h +++ b/impeller/entity/contents/content_context.h @@ -696,18 +696,8 @@ class ContentContext { const SubpassCallback& subpass_callback, bool msaa_enabled = true) const; - void SetLazyGlyphAtlas( - const std::shared_ptr& lazy_glyph_atlas) { - lazy_glyph_atlas_ = lazy_glyph_atlas; - } - - std::shared_ptr GetLazyGlyphAtlas() const { - return lazy_glyph_atlas_; - } - private: std::shared_ptr context_; - std::shared_ptr lazy_glyph_atlas_; template using Variants = std::unordered_map& lazy_glyph_atlas, - Scalar scale) const {} - virtual bool Render(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const = 0; diff --git a/impeller/entity/contents/text_contents.cc b/impeller/entity/contents/text_contents.cc index 5428cf830feba..a4e46641b2e14 100644 --- a/impeller/entity/contents/text_contents.cc +++ b/impeller/entity/contents/text_contents.cc @@ -29,15 +29,18 @@ void TextContents::SetTextFrame(const TextFrame& frame) { frame_ = frame; } +void TextContents::SetGlyphAtlas(std::shared_ptr atlas) { + lazy_atlas_ = std::move(atlas); +} + std::shared_ptr TextContents::ResolveAtlas( GlyphAtlas::Type type, - const std::shared_ptr& lazy_atlas, std::shared_ptr atlas_context, std::shared_ptr context) const { - FML_DCHECK(lazy_atlas); - if (lazy_atlas) { - return lazy_atlas->CreateOrGetGlyphAtlas(type, std::move(atlas_context), - std::move(context)); + FML_DCHECK(lazy_atlas_); + if (lazy_atlas_) { + return lazy_atlas_->CreateOrGetGlyphAtlas(type, std::move(atlas_context), + std::move(context)); } return nullptr; @@ -75,43 +78,14 @@ std::optional TextContents::GetCoverage(const Entity& entity) const { return bounds->TransformBounds(entity.GetTransformation()); } -void TextContents::PopulateGlyphAtlas( - const std::shared_ptr& lazy_glyph_atlas, - Scalar scale) const { - lazy_glyph_atlas->AddTextFrame(frame_, scale); -} - -bool TextContents::Render(const ContentContext& renderer, - const Entity& entity, - RenderPass& pass) const { - auto color = GetColor(); - if (color.IsTransparent()) { - return true; - } - - auto type = frame_.GetAtlasType(); - auto scale = entity.DeriveTextScale(); - auto atlas = - ResolveAtlas(type, renderer.GetLazyGlyphAtlas(), - renderer.GetGlyphAtlasContext(type), renderer.GetContext()); - - if (!atlas || !atlas->IsValid()) { - VALIDATION_LOG << "Cannot render glyphs without prepared atlas."; - return false; - } - - // Information shared by all glyph draw calls. - Command cmd; - cmd.label = "TextFrame"; - auto opts = OptionsFromPassAndEntity(pass, entity); - opts.primitive_type = PrimitiveType::kTriangle; - if (type == GlyphAtlas::Type::kAlphaBitmap) { - cmd.pipeline = renderer.GetGlyphAtlasPipeline(opts); - } else { - cmd.pipeline = renderer.GetGlyphAtlasColorPipeline(opts); - } - cmd.stencil_reference = entity.GetStencilDepth(); - +static bool CommonRender(const ContentContext& renderer, + const Entity& entity, + RenderPass& pass, + const Color& color, + const TextFrame& frame, + Vector2 offset, + const std::shared_ptr& atlas, + Command& cmd) { using VS = GlyphAtlasPipeline::VertexShader; using FS = GlyphAtlasPipeline::FragmentShader; @@ -121,7 +95,7 @@ bool TextContents::Render(const ContentContext& renderer, frame_info.atlas_size = Vector2{static_cast(atlas->GetTexture()->GetSize().width), static_cast(atlas->GetTexture()->GetSize().height)}; - frame_info.offset = offset_; + frame_info.offset = offset; frame_info.is_translation_scale = entity.GetTransformation().IsTranslationScaleOnly(); frame_info.entity_transform = entity.GetTransformation(); @@ -167,7 +141,7 @@ bool TextContents::Render(const ContentContext& renderer, auto& host_buffer = pass.GetTransientsBuffer(); size_t vertex_count = 0; - for (const auto& run : frame_.GetRuns()) { + for (const auto& run : frame.GetRuns()) { vertex_count += run.GetGlyphPositions().size(); } vertex_count *= 6; @@ -177,10 +151,10 @@ bool TextContents::Render(const ContentContext& renderer, [&](uint8_t* contents) { VS::PerVertexData vtx; size_t vertex_offset = 0; - for (const auto& run : frame_.GetRuns()) { + for (const auto& run : frame.GetRuns()) { const Font& font = run.GetFont(); for (const auto& glyph_position : run.GetGlyphPositions()) { - FontGlyphPair font_glyph_pair{font, glyph_position.glyph, scale}; + FontGlyphPair font_glyph_pair{font, glyph_position.glyph}; auto maybe_atlas_glyph_bounds = atlas->FindFontGlyphBounds(font_glyph_pair); if (!maybe_atlas_glyph_bounds.has_value()) { @@ -217,4 +191,37 @@ bool TextContents::Render(const ContentContext& renderer, return pass.AddCommand(cmd); } +bool TextContents::Render(const ContentContext& renderer, + const Entity& entity, + RenderPass& pass) const { + auto color = GetColor(); + if (color.IsTransparent()) { + return true; + } + + auto type = frame_.GetAtlasType(); + auto atlas = ResolveAtlas(type, renderer.GetGlyphAtlasContext(type), + renderer.GetContext()); + + if (!atlas || !atlas->IsValid()) { + VALIDATION_LOG << "Cannot render glyphs without prepared atlas."; + return false; + } + + // Information shared by all glyph draw calls. + Command cmd; + cmd.label = "TextFrame"; + auto opts = OptionsFromPassAndEntity(pass, entity); + opts.primitive_type = PrimitiveType::kTriangle; + if (type == GlyphAtlas::Type::kAlphaBitmap) { + cmd.pipeline = renderer.GetGlyphAtlasPipeline(opts); + } else { + cmd.pipeline = renderer.GetGlyphAtlasColorPipeline(opts); + } + cmd.stencil_reference = entity.GetStencilDepth(); + + return CommonRender(renderer, entity, pass, color, frame_, offset_, atlas, + cmd); +} + } // namespace impeller diff --git a/impeller/entity/contents/text_contents.h b/impeller/entity/contents/text_contents.h index fe89068ae2a14..14bd354086e72 100644 --- a/impeller/entity/contents/text_contents.h +++ b/impeller/entity/contents/text_contents.h @@ -28,14 +28,14 @@ class TextContents final : public Contents { void SetTextFrame(const TextFrame& frame); + void SetGlyphAtlas(std::shared_ptr atlas); + void SetColor(Color color); Color GetColor() const; - // |Contents| bool CanInheritOpacity(const Entity& entity) const override; - // |Contents| void SetInheritedOpacity(Scalar opacity) override; void SetOffset(Vector2 offset); @@ -45,11 +45,6 @@ class TextContents final : public Contents { // |Contents| std::optional GetCoverage(const Entity& entity) const override; - // |Contents| - void PopulateGlyphAtlas( - const std::shared_ptr& lazy_glyph_atlas, - Scalar scale) const override; - // |Contents| bool Render(const ContentContext& renderer, const Entity& entity, @@ -59,11 +54,11 @@ class TextContents final : public Contents { TextFrame frame_; Color color_; Scalar inherited_opacity_ = 1.0; + mutable std::shared_ptr lazy_atlas_; Vector2 offset_; std::shared_ptr ResolveAtlas( GlyphAtlas::Type type, - const std::shared_ptr& lazy_atlas, std::shared_ptr atlas_context, std::shared_ptr context) const; diff --git a/impeller/entity/entity.cc b/impeller/entity/entity.cc index ad6a6842d68ba..d0b2226735fc5 100644 --- a/impeller/entity/entity.cc +++ b/impeller/entity/entity.cc @@ -166,8 +166,4 @@ bool Entity::Render(const ContentContext& renderer, return contents_->Render(renderer, *this, parent_pass); } -Scalar Entity::DeriveTextScale() const { - return GetTransformation().GetMaxBasisLengthXY(); -} - } // namespace impeller diff --git a/impeller/entity/entity.h b/impeller/entity/entity.h index 271f9a0db8248..2063213b18072 100644 --- a/impeller/entity/entity.h +++ b/impeller/entity/entity.h @@ -94,8 +94,6 @@ class Entity { std::optional AsBackgroundColor(ISize target_size) const; - Scalar DeriveTextScale() const; - private: Matrix transformation_; std::shared_ptr contents_; diff --git a/impeller/entity/entity_pass.cc b/impeller/entity/entity_pass.cc index af074caebd278..19b1a2efd1a33 100644 --- a/impeller/entity/entity_pass.cc +++ b/impeller/entity/entity_pass.cc @@ -8,7 +8,6 @@ #include #include -#include "flutter/fml/closure.h" #include "flutter/fml/logging.h" #include "flutter/fml/macros.h" #include "flutter/fml/trace_event.h" @@ -253,18 +252,6 @@ bool EntityPass::Render(ContentContext& renderer, return false; } - renderer.SetLazyGlyphAtlas(std::make_shared()); - fml::ScopedCleanupClosure reset_lazy_glyph_atlas( - [&renderer]() { renderer.SetLazyGlyphAtlas(nullptr); }); - - IterateAllEntities([lazy_glyph_atlas = - renderer.GetLazyGlyphAtlas()](const Entity& entity) { - if (auto contents = entity.GetContents()) { - contents->PopulateGlyphAtlas(lazy_glyph_atlas, entity.DeriveTextScale()); - } - return true; - }); - StencilCoverageStack stencil_coverage_stack = {StencilCoverageLayer{ .coverage = Rect::MakeSize(root_render_target.GetRenderTargetSize()), .stencil_depth = 0}}; @@ -891,28 +878,6 @@ void EntityPass::IterateAllEntities( } } -void EntityPass::IterateAllEntities( - const std::function& iterator) const { - if (!iterator) { - return; - } - - for (const auto& element : elements_) { - if (auto entity = std::get_if(&element)) { - if (!iterator(*entity)) { - return; - } - continue; - } - if (auto subpass = std::get_if>(&element)) { - const EntityPass* entity_pass = subpass->get(); - entity_pass->IterateAllEntities(iterator); - continue; - } - FML_UNREACHABLE(); - } -} - bool EntityPass::IterateUntilSubpass( const std::function& iterator) { if (!iterator) { diff --git a/impeller/entity/entity_pass.h b/impeller/entity/entity_pass.h index d90abfb99e568..e3dbada3d7eed 100644 --- a/impeller/entity/entity_pass.h +++ b/impeller/entity/entity_pass.h @@ -79,12 +79,6 @@ class EntityPass { /// of child passes. The iteration order is depth-first. void IterateAllEntities(const std::function& iterator); - /// @brief Iterate all entities in this pass, recursively including entities - /// of child passes. The iteration order is depth-first and does not - /// allow modification of the entities. - void IterateAllEntities( - const std::function& iterator) const; - /// @brief Iterate entities in this pass up until the first subpass is found. /// This is useful for limiting look-ahead optimizations. /// diff --git a/impeller/entity/entity_unittests.cc b/impeller/entity/entity_unittests.cc index 05818e84270f7..28bc4d8d11493 100644 --- a/impeller/entity/entity_unittests.cc +++ b/impeller/entity/entity_unittests.cc @@ -2184,7 +2184,7 @@ TEST_P(EntityTest, InheritOpacityTest) { auto blob = SkTextBlob::MakeFromString("A", font); auto frame = TextFrameFromTextBlob(blob); auto lazy_glyph_atlas = std::make_shared(); - lazy_glyph_atlas->AddTextFrame(frame, 1.0f); + lazy_glyph_atlas->AddTextFrame(frame); auto text_contents = std::make_shared(); text_contents->SetTextFrame(frame); diff --git a/impeller/typographer/backends/skia/text_frame_skia.cc b/impeller/typographer/backends/skia/text_frame_skia.cc index cac02a80968b6..e451695dc8b6d 100644 --- a/impeller/typographer/backends/skia/text_frame_skia.cc +++ b/impeller/typographer/backends/skia/text_frame_skia.cc @@ -17,7 +17,7 @@ namespace impeller { -static Font ToFont(const SkTextBlobRunIterator& run) { +static Font ToFont(const SkTextBlobRunIterator& run, Scalar scale) { auto& font = run.font(); auto typeface = std::make_shared(font.refTypefaceOrDefault()); @@ -25,6 +25,7 @@ static Font ToFont(const SkTextBlobRunIterator& run) { font.getMetrics(&sk_metrics); Font::Metrics metrics; + metrics.scale = scale; metrics.point_size = font.getSize(); metrics.embolden = font.isEmbolden(); metrics.skewX = font.getSkewX(); @@ -37,7 +38,7 @@ static Rect ToRect(const SkRect& rect) { return Rect::MakeLTRB(rect.fLeft, rect.fTop, rect.fRight, rect.fBottom); } -TextFrame TextFrameFromTextBlob(const sk_sp& blob) { +TextFrame TextFrameFromTextBlob(const sk_sp& blob, Scalar scale) { if (!blob) { return {}; } @@ -45,7 +46,7 @@ TextFrame TextFrameFromTextBlob(const sk_sp& blob) { TextFrame frame; for (SkTextBlobRunIterator run(blob.get()); !run.done(); run.next()) { - TextRun text_run(ToFont(run)); + TextRun text_run(ToFont(run, scale)); // TODO(jonahwilliams): ask Skia for a public API to look this up. // https://github.com/flutter/flutter/issues/112005 diff --git a/impeller/typographer/backends/skia/text_frame_skia.h b/impeller/typographer/backends/skia/text_frame_skia.h index a12b0f5ec60fa..80d6c33921fa3 100644 --- a/impeller/typographer/backends/skia/text_frame_skia.h +++ b/impeller/typographer/backends/skia/text_frame_skia.h @@ -10,6 +10,7 @@ namespace impeller { -TextFrame TextFrameFromTextBlob(const sk_sp& blob); +TextFrame TextFrameFromTextBlob(const sk_sp& blob, + Scalar scale = 1.0f); } // namespace impeller diff --git a/impeller/typographer/backends/skia/text_render_context_skia.cc b/impeller/typographer/backends/skia/text_render_context_skia.cc index 8553ce87a7ed4..9028a5cba0cc3 100644 --- a/impeller/typographer/backends/skia/text_render_context_skia.cc +++ b/impeller/typographer/backends/skia/text_render_context_skia.cc @@ -40,6 +40,23 @@ TextRenderContextSkia::TextRenderContextSkia(std::shared_ptr context) TextRenderContextSkia::~TextRenderContextSkia() = default; +static FontGlyphPair::Set CollectUniqueFontGlyphPairs( + GlyphAtlas::Type type, + const TextRenderContext::FrameIterator& frame_iterator) { + TRACE_EVENT0("impeller", __FUNCTION__); + FontGlyphPair::Set set; + while (const TextFrame* frame = frame_iterator()) { + for (const TextRun& run : frame->GetRuns()) { + const Font& font = run.GetFont(); + for (const TextRun::GlyphPosition& glyph_position : + run.GetGlyphPositions()) { + set.insert({font, glyph_position.glyph}); + } + } + } + return set; +} + static size_t PairsFitInAtlasOfSize( const FontGlyphPair::Set& pairs, const ISize& atlas_size, @@ -56,7 +73,8 @@ static size_t PairsFitInAtlasOfSize( for (auto it = pairs.begin(); it != pairs.end(); ++i, ++it) { const auto& pair = *it; - const auto glyph_size = ISize::Ceil((pair.glyph.bounds * pair.scale).size); + const auto glyph_size = + ISize::Ceil((pair.glyph.bounds * pair.font.GetMetrics().scale).size); IPoint16 location_in_atlas; if (!rect_packer->addRect(glyph_size.width + kPadding, // glyph_size.height + kPadding, // @@ -93,7 +111,8 @@ static bool CanAppendToExistingAtlas( for (size_t i = 0; i < extra_pairs.size(); i++) { const FontGlyphPair& pair = extra_pairs[i]; - const auto glyph_size = ISize::Ceil((pair.glyph.bounds * pair.scale).size); + const auto glyph_size = + ISize::Ceil((pair.glyph.bounds * pair.font.GetMetrics().scale).size); IPoint16 location_in_atlas; if (!rect_packer->addRect(glyph_size.width + kPadding, // glyph_size.height + kPadding, // @@ -157,8 +176,8 @@ static void DrawGlyph(SkCanvas* canvas, const Rect& location, bool has_color) { const auto& metrics = font_glyph.font.GetMetrics(); - const auto position = SkPoint::Make(location.origin.x / font_glyph.scale, - location.origin.y / font_glyph.scale); + const auto position = SkPoint::Make(location.origin.x / metrics.scale, + location.origin.y / metrics.scale); SkGlyphID glyph_id = font_glyph.glyph.index; SkFont sk_font( @@ -173,7 +192,7 @@ static void DrawGlyph(SkCanvas* canvas, SkPaint glyph_paint; glyph_paint.setColor(glyph_color); canvas->resetMatrix(); - canvas->scale(font_glyph.scale, font_glyph.scale); + canvas->scale(metrics.scale, metrics.scale); canvas->drawGlyphs( 1u, // count &glyph_id, // glyphs @@ -312,19 +331,25 @@ static std::shared_ptr UploadGlyphTextureAtlas( std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( GlyphAtlas::Type type, std::shared_ptr atlas_context, - const FontGlyphPair::Set& font_glyph_pairs) const { + FrameIterator frame_iterator) const { TRACE_EVENT0("impeller", __FUNCTION__); if (!IsValid()) { return nullptr; } std::shared_ptr last_atlas = atlas_context->GetGlyphAtlas(); + // --------------------------------------------------------------------------- + // Step 1: Collect unique font-glyph pairs in the frame. + // --------------------------------------------------------------------------- + + FontGlyphPair::Set font_glyph_pairs = + CollectUniqueFontGlyphPairs(type, frame_iterator); if (font_glyph_pairs.empty()) { return last_atlas; } // --------------------------------------------------------------------------- - // Step 1: Determine if the atlas type and font glyph pairs are compatible + // Step 2: Determine if the atlas type and font glyph pairs are compatible // with the current atlas and reuse if possible. // --------------------------------------------------------------------------- FontGlyphPairRefVector new_glyphs; @@ -338,7 +363,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 2: Determine if the additional missing glyphs can be appended to the + // Step 3: Determine if the additional missing glyphs can be appended to the // existing bitmap without recreating the atlas. This requires that // the type is identical. // --------------------------------------------------------------------------- @@ -351,7 +376,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( // added. // --------------------------------------------------------------------------- - // Step 3a: Record the positions in the glyph atlas of the newly added + // Step 4: Record the positions in the glyph atlas of the newly added // glyphs. // --------------------------------------------------------------------------- for (size_t i = 0, count = glyph_positions.size(); i < count; i++) { @@ -359,7 +384,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 4a: Draw new font-glyph pairs into the existing bitmap. + // Step 5: Draw new font-glyph pairs into the existing bitmap. // --------------------------------------------------------------------------- auto bitmap = atlas_context->GetBitmap(); if (!UpdateAtlasBitmap(*last_atlas, bitmap, new_glyphs)) { @@ -367,7 +392,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 5a: Update the existing texture with the updated bitmap. + // Step 6: Update the existing texture with the updated bitmap. // --------------------------------------------------------------------------- if (!UpdateGlyphTextureAtlas(bitmap, last_atlas->GetTexture())) { return nullptr; @@ -377,7 +402,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( // A new glyph atlas must be created. // --------------------------------------------------------------------------- - // Step 3b: Get the optimum size of the texture atlas. + // Step 4: Get the optimum size of the texture atlas. // --------------------------------------------------------------------------- auto glyph_atlas = std::make_shared(type); auto atlas_size = OptimumAtlasSizeForFontGlyphPairs( @@ -388,7 +413,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( return nullptr; } // --------------------------------------------------------------------------- - // Step 4b: Find location of font-glyph pairs in the atlas. We have this from + // Step 5: Find location of font-glyph pairs in the atlas. We have this from // the last step. So no need to do create another rect packer. But just do a // sanity check of counts. This could also be just an assertion as only a // construction issue would cause such a failure. @@ -398,7 +423,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 5b: Record the positions in the glyph atlas. + // Step 6: Record the positions in the glyph atlas. // --------------------------------------------------------------------------- { size_t i = 0; @@ -409,7 +434,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 6b: Draw font-glyph pairs in the correct spot in the atlas. + // Step 7: Draw font-glyph pairs in the correct spot in the atlas. // --------------------------------------------------------------------------- auto bitmap = CreateAtlasBitmap(*glyph_atlas, atlas_size); if (!bitmap) { @@ -418,7 +443,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( atlas_context->UpdateBitmap(bitmap); // --------------------------------------------------------------------------- - // Step 7b: Upload the atlas as a texture. + // Step 8: Upload the atlas as a texture. // --------------------------------------------------------------------------- PixelFormat format; switch (type) { @@ -436,7 +461,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 8b: Record the texture in the glyph atlas. + // Step 9: Record the texture in the glyph atlas. // --------------------------------------------------------------------------- glyph_atlas->SetTexture(std::move(texture)); diff --git a/impeller/typographer/backends/skia/text_render_context_skia.h b/impeller/typographer/backends/skia/text_render_context_skia.h index 2e2e6ad97cf8b..0c97a8716e7ad 100644 --- a/impeller/typographer/backends/skia/text_render_context_skia.h +++ b/impeller/typographer/backends/skia/text_render_context_skia.h @@ -19,7 +19,7 @@ class TextRenderContextSkia : public TextRenderContext { std::shared_ptr CreateGlyphAtlas( GlyphAtlas::Type type, std::shared_ptr atlas_context, - const FontGlyphPair::Set& font_glyph_pairs) const override; + FrameIterator iterator) const override; private: FML_DISALLOW_COPY_AND_ASSIGN(TextRenderContextSkia); diff --git a/impeller/typographer/font.h b/impeller/typographer/font.h index bbfc569860b72..de80478ccbaf6 100644 --- a/impeller/typographer/font.h +++ b/impeller/typographer/font.h @@ -28,6 +28,12 @@ class Font : public Comparable { /// the baseline with an upper-left-origin coordinate system. /// struct Metrics { + //-------------------------------------------------------------------------- + /// The scaling factor that should be used when rendering this font to an + /// atlas. This should normally be set in accordance with the transformation + /// matrix that will be used to position glyph geometry. + /// + Scalar scale = 1.0f; //-------------------------------------------------------------------------- /// The point size of the font. /// @@ -37,8 +43,8 @@ class Font : public Comparable { Scalar scaleX = 1.0f; constexpr bool operator==(const Metrics& o) const { - return point_size == o.point_size && embolden == o.embolden && - skewX == o.skewX && scaleX == o.scaleX; + return scale == o.scale && point_size == o.point_size && + embolden == o.embolden && skewX == o.skewX && scaleX == o.scaleX; } }; @@ -74,6 +80,6 @@ class Font : public Comparable { template <> struct std::hash { constexpr std::size_t operator()(const impeller::Font::Metrics& m) const { - return fml::HashCombine(m.point_size, m.skewX, m.scaleX); + return fml::HashCombine(m.scale, m.point_size); } }; diff --git a/impeller/typographer/font_glyph_pair.h b/impeller/typographer/font_glyph_pair.h index 0b89c803af88e..ed455095356dd 100644 --- a/impeller/typographer/font_glyph_pair.h +++ b/impeller/typographer/font_glyph_pair.h @@ -16,29 +16,28 @@ namespace impeller { //------------------------------------------------------------------------------ -/// @brief A font along with a glyph in that font rendered at a particular -/// scale. Used in glyph atlases as keys. +/// @brief A font along with a glyph in that font. Used in glyph atlases as +/// keys. /// struct FontGlyphPair { struct Hash; struct Equal; using Set = std::unordered_set; + using Vector = std::vector; Font font; Glyph glyph; - Scalar scale; struct Hash { std::size_t operator()(const FontGlyphPair& p) const { - return fml::HashCombine(p.font.GetHash(), p.glyph.index, p.glyph.type, - p.scale); + return fml::HashCombine(p.font.GetHash(), p.glyph.index, p.glyph.type); } }; struct Equal { bool operator()(const FontGlyphPair& lhs, const FontGlyphPair& rhs) const { return lhs.font.IsEqual(rhs.font) && lhs.glyph.index == rhs.glyph.index && - lhs.glyph.type == rhs.glyph.type && lhs.scale == rhs.scale; + lhs.glyph.type == rhs.glyph.type; } }; }; diff --git a/impeller/typographer/lazy_glyph_atlas.cc b/impeller/typographer/lazy_glyph_atlas.cc index 94c738e37b798..799b56a35877f 100644 --- a/impeller/typographer/lazy_glyph_atlas.cc +++ b/impeller/typographer/lazy_glyph_atlas.cc @@ -15,12 +15,12 @@ LazyGlyphAtlas::LazyGlyphAtlas() = default; LazyGlyphAtlas::~LazyGlyphAtlas() = default; -void LazyGlyphAtlas::AddTextFrame(const TextFrame& frame, Scalar scale) { +void LazyGlyphAtlas::AddTextFrame(const TextFrame& frame) { FML_DCHECK(atlas_map_.empty()); if (frame.GetAtlasType() == GlyphAtlas::Type::kAlphaBitmap) { - frame.CollectUniqueFontGlyphPairs(alpha_set_, scale); + alpha_frames_.emplace_back(frame); } else { - frame.CollectUniqueFontGlyphPairs(color_set_, scale); + color_frames_.emplace_back(frame); } } @@ -39,9 +39,19 @@ std::shared_ptr LazyGlyphAtlas::CreateOrGetGlyphAtlas( if (!text_context || !text_context->IsValid()) { return nullptr; } - auto& set = type == GlyphAtlas::Type::kAlphaBitmap ? alpha_set_ : color_set_; + size_t i = 0; + auto frames = + type == GlyphAtlas::Type::kAlphaBitmap ? alpha_frames_ : color_frames_; + TextRenderContext::FrameIterator iterator = [&]() -> const TextFrame* { + if (i >= frames.size()) { + return nullptr; + } + const auto& result = frames[i]; + i++; + return &result; + }; auto atlas = - text_context->CreateGlyphAtlas(type, std::move(atlas_context), set); + text_context->CreateGlyphAtlas(type, std::move(atlas_context), iterator); if (!atlas || !atlas->IsValid()) { VALIDATION_LOG << "Could not create valid atlas."; return nullptr; diff --git a/impeller/typographer/lazy_glyph_atlas.h b/impeller/typographer/lazy_glyph_atlas.h index f79b46db9d383..067601e65e64f 100644 --- a/impeller/typographer/lazy_glyph_atlas.h +++ b/impeller/typographer/lazy_glyph_atlas.h @@ -19,7 +19,7 @@ class LazyGlyphAtlas { ~LazyGlyphAtlas(); - void AddTextFrame(const TextFrame& frame, Scalar scale); + void AddTextFrame(const TextFrame& frame); std::shared_ptr CreateOrGetGlyphAtlas( GlyphAtlas::Type type, @@ -27,8 +27,8 @@ class LazyGlyphAtlas { std::shared_ptr context) const; private: - FontGlyphPair::Set alpha_set_; - FontGlyphPair::Set color_set_; + std::vector alpha_frames_; + std::vector color_frames_; mutable std::unordered_map> atlas_map_; diff --git a/impeller/typographer/text_frame.cc b/impeller/typographer/text_frame.cc index 4191446f05462..ed3c97cc82b3e 100644 --- a/impeller/typographer/text_frame.cc +++ b/impeller/typographer/text_frame.cc @@ -79,15 +79,4 @@ bool TextFrame::MaybeHasOverlapping() const { return false; } -void TextFrame::CollectUniqueFontGlyphPairs(FontGlyphPair::Set& set, - Scalar scale) const { - for (const TextRun& run : GetRuns()) { - const Font& font = run.GetFont(); - for (const TextRun::GlyphPosition& glyph_position : - run.GetGlyphPositions()) { - set.insert({font, glyph_position.glyph, scale}); - } - } -} - } // namespace impeller diff --git a/impeller/typographer/text_frame.h b/impeller/typographer/text_frame.h index 512f7b705e3e3..a47e4c0e2252a 100644 --- a/impeller/typographer/text_frame.h +++ b/impeller/typographer/text_frame.h @@ -22,8 +22,6 @@ class TextFrame { ~TextFrame(); - void CollectUniqueFontGlyphPairs(FontGlyphPair::Set& set, Scalar scale) const; - //---------------------------------------------------------------------------- /// @brief The conservative bounding box for this text frame. /// diff --git a/impeller/typographer/text_render_context.cc b/impeller/typographer/text_render_context.cc index 1b7aba10a7b74..8cc8dbf00a02e 100644 --- a/impeller/typographer/text_render_context.cc +++ b/impeller/typographer/text_render_context.cc @@ -26,4 +26,19 @@ const std::shared_ptr& TextRenderContext::GetContext() const { return context_; } +std::shared_ptr TextRenderContext::CreateGlyphAtlas( + GlyphAtlas::Type type, + std::shared_ptr atlas_context, + const TextFrame& frame) const { + size_t count = 0; + FrameIterator iterator = [&]() -> const TextFrame* { + count++; + if (count == 1) { + return &frame; + } + return nullptr; + }; + return CreateGlyphAtlas(type, std::move(atlas_context), iterator); +} + } // namespace impeller diff --git a/impeller/typographer/text_render_context.h b/impeller/typographer/text_render_context.h index d909388105f93..c63ac912a1fa8 100644 --- a/impeller/typographer/text_render_context.h +++ b/impeller/typographer/text_render_context.h @@ -37,13 +37,20 @@ class TextRenderContext { /// const std::shared_ptr& GetContext() const; + using FrameIterator = std::function; + // TODO(dnfield): Callers should not need to know which type of atlas to // create. https://github.com/flutter/flutter/issues/111640 virtual std::shared_ptr CreateGlyphAtlas( GlyphAtlas::Type type, std::shared_ptr atlas_context, - const FontGlyphPair::Set& font_glyph_pairs) const = 0; + FrameIterator iterator) const = 0; + + std::shared_ptr CreateGlyphAtlas( + GlyphAtlas::Type type, + std::shared_ptr atlas_context, + const TextFrame& frame) const; protected: //---------------------------------------------------------------------------- diff --git a/impeller/typographer/typographer_unittests.cc b/impeller/typographer/typographer_unittests.cc index e800ea258b44e..e807ac8a26d74 100644 --- a/impeller/typographer/typographer_unittests.cc +++ b/impeller/typographer/typographer_unittests.cc @@ -23,17 +23,6 @@ namespace testing { using TypographerTest = PlaygroundTest; INSTANTIATE_PLAYGROUND_SUITE(TypographerTest); -static std::shared_ptr CreateGlyphAtlas( - const TextRenderContext* context, - GlyphAtlas::Type type, - Scalar scale, - const std::shared_ptr& atlas_context, - const TextFrame& frame) { - FontGlyphPair::Set set; - frame.CollectUniqueFontGlyphPairs(set, scale); - return context->CreateGlyphAtlas(type, atlas_context, set); -} - TEST_P(TypographerTest, CanConvertTextBlob) { SkFont font; auto blob = SkTextBlob::MakeFromString( @@ -60,8 +49,8 @@ TEST_P(TypographerTest, CanCreateGlyphAtlas) { auto blob = SkTextBlob::MakeFromString("hello", sk_font); ASSERT_TRUE(blob); auto atlas = - CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, - atlas_context, TextFrameFromTextBlob(blob)); + context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, + TextFrameFromTextBlob(blob)); ASSERT_NE(atlas, nullptr); ASSERT_NE(atlas->GetTexture(), nullptr); ASSERT_EQ(atlas->GetType(), GlyphAtlas::Type::kAlphaBitmap); @@ -113,13 +102,13 @@ TEST_P(TypographerTest, LazyAtlasTracksColor) { LazyGlyphAtlas lazy_atlas; - lazy_atlas.AddTextFrame(frame, 1.0f); + lazy_atlas.AddTextFrame(frame); frame = TextFrameFromTextBlob(SkTextBlob::MakeFromString("😀 ", emoji_font)); ASSERT_TRUE(frame.GetAtlasType() == GlyphAtlas::Type::kColorBitmap); - lazy_atlas.AddTextFrame(frame, 1.0f); + lazy_atlas.AddTextFrame(frame); // Creates different atlases for color and alpha bitmap. auto color_context = std::make_shared(); @@ -141,8 +130,8 @@ TEST_P(TypographerTest, GlyphAtlasWithOddUniqueGlyphSize) { auto blob = SkTextBlob::MakeFromString("AGH", sk_font); ASSERT_TRUE(blob); auto atlas = - CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, - atlas_context, TextFrameFromTextBlob(blob)); + context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, + TextFrameFromTextBlob(blob)); ASSERT_NE(atlas, nullptr); ASSERT_NE(atlas->GetTexture(), nullptr); @@ -158,8 +147,8 @@ TEST_P(TypographerTest, GlyphAtlasIsRecycledIfUnchanged) { auto blob = SkTextBlob::MakeFromString("spooky skellingtons", sk_font); ASSERT_TRUE(blob); auto atlas = - CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, - atlas_context, TextFrameFromTextBlob(blob)); + context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, + TextFrameFromTextBlob(blob)); ASSERT_NE(atlas, nullptr); ASSERT_NE(atlas->GetTexture(), nullptr); ASSERT_EQ(atlas, atlas_context->GetGlyphAtlas()); @@ -167,8 +156,8 @@ TEST_P(TypographerTest, GlyphAtlasIsRecycledIfUnchanged) { // now attempt to re-create an atlas with the same text blob. auto next_atlas = - CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, - atlas_context, TextFrameFromTextBlob(blob)); + context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, + TextFrameFromTextBlob(blob)); ASSERT_EQ(atlas, next_atlas); ASSERT_EQ(atlas_context->GetGlyphAtlas(), atlas); } @@ -177,6 +166,7 @@ TEST_P(TypographerTest, GlyphAtlasWithLotsOfdUniqueGlyphSize) { auto context = TextRenderContext::Create(GetContext()); auto atlas_context = std::make_shared(); ASSERT_TRUE(context && context->IsValid()); + SkFont sk_font; const char* test_string = "QWERTYUIOPASDFGHJKLZXCVBNMqewrtyuiopasdfghjklzxcvbnm,.<>[]{};':" @@ -184,17 +174,22 @@ TEST_P(TypographerTest, GlyphAtlasWithLotsOfdUniqueGlyphSize) { "œ∑´®†¥¨ˆøπ““‘‘åß∂ƒ©˙∆˚¬…æ≈ç√∫˜µ≤≥≥≥≥÷¡™£¢∞§¶•ªº–≠⁄€‹›fifl‡°·‚—±Œ„´‰Á¨Ø∏”’/" "* Í˝ */¸˛Ç◊ı˜Â¯˘¿"; - SkFont sk_font; auto blob = SkTextBlob::MakeFromString(test_string, sk_font); ASSERT_TRUE(blob); - FontGlyphPair::Set set; - size_t size_count = 8; - for (size_t index = 0; index < size_count; index += 1) { - TextFrameFromTextBlob(blob).CollectUniqueFontGlyphPairs(set, 0.6 * index); + TextFrame frame; + size_t count = 0; + const int size_count = 8; + TextRenderContext::FrameIterator iterator = [&]() -> const TextFrame* { + if (count < size_count) { + count++; + frame = TextFrameFromTextBlob(blob, 0.6 * count); + return &frame; + } + return nullptr; }; auto atlas = context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, - std::move(atlas_context), set); + atlas_context, iterator); ASSERT_NE(atlas, nullptr); ASSERT_NE(atlas->GetTexture(), nullptr); @@ -222,8 +217,8 @@ TEST_P(TypographerTest, GlyphAtlasTextureIsRecycledIfUnchanged) { auto blob = SkTextBlob::MakeFromString("spooky 1", sk_font); ASSERT_TRUE(blob); auto atlas = - CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, - atlas_context, TextFrameFromTextBlob(blob)); + context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, + TextFrameFromTextBlob(blob)); auto old_packer = atlas_context->GetRectPacker(); ASSERT_NE(atlas, nullptr); @@ -236,8 +231,8 @@ TEST_P(TypographerTest, GlyphAtlasTextureIsRecycledIfUnchanged) { auto blob2 = SkTextBlob::MakeFromString("spooky 2", sk_font); auto next_atlas = - CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, - atlas_context, TextFrameFromTextBlob(blob2)); + context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, + TextFrameFromTextBlob(blob2)); ASSERT_EQ(atlas, next_atlas); auto* second_texture = next_atlas->GetTexture().get(); @@ -255,8 +250,8 @@ TEST_P(TypographerTest, GlyphAtlasTextureIsRecreatedIfTypeChanges) { auto blob = SkTextBlob::MakeFromString("spooky 1", sk_font); ASSERT_TRUE(blob); auto atlas = - CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, - atlas_context, TextFrameFromTextBlob(blob)); + context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, + TextFrameFromTextBlob(blob)); auto old_packer = atlas_context->GetRectPacker(); ASSERT_NE(atlas, nullptr); @@ -270,8 +265,8 @@ TEST_P(TypographerTest, GlyphAtlasTextureIsRecreatedIfTypeChanges) { auto blob2 = SkTextBlob::MakeFromString("spooky 1", sk_font); auto next_atlas = - CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kColorBitmap, 1.0f, - atlas_context, TextFrameFromTextBlob(blob2)); + context->CreateGlyphAtlas(GlyphAtlas::Type::kColorBitmap, atlas_context, + TextFrameFromTextBlob(blob2)); ASSERT_NE(atlas, next_atlas); auto* second_texture = next_atlas->GetTexture().get(); From b2e5d1eef2f4ae6fc11c32c84353f958c09fd091 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Thu, 13 Jul 2023 15:17:21 -0700 Subject: [PATCH 037/211] Unmerge threads if the current merger is the only one that's merged. (#43652) `UnMergeNowIfLastOne` is called during shell destruction. When there are other shells with threads unmerged and the current destroying shell with thread merged. `UnMergeNowIfLastOne` should unmerge the threads. This PR Make `UnMergeNowIfLastOne` not only unmerge if the current merger is the last merger, but also unmerge if the current merger is the last merger that is merged. Fixes https://github.com/flutter/flutter/issues/127168 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- fml/raster_thread_merger.h | 8 +++--- fml/raster_thread_merger_unittests.cc | 36 +++++++++++++++++++++++++++ fml/shared_thread_merger.cc | 6 ++--- 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/fml/raster_thread_merger.h b/fml/raster_thread_merger.h index 3ad4a4e27da0c..2fd0bc22e3ab5 100644 --- a/fml/raster_thread_merger.h +++ b/fml/raster_thread_merger.h @@ -53,10 +53,10 @@ class RasterThreadMerger TaskQueueId platform_id, TaskQueueId raster_id); - // Un-merges the threads now if current caller is the last merge caller, - // and it resets the lease term to 0, otherwise it will remove the caller - // record and return. The multiple caller records were recorded after - // |MergeWithLease| or |ExtendLeaseTo| method. + // Un-merges the threads now if current caller is the last merged caller, + // and it resets the lease term to 0, otherwise it will remove + // the caller record and return. The multiple caller records were recorded + // after |MergeWithLease| or |ExtendLeaseTo| method. // // Must be executed on the raster task runner. // diff --git a/fml/raster_thread_merger_unittests.cc b/fml/raster_thread_merger_unittests.cc index 43beb63947e1f..b4b9621d23196 100644 --- a/fml/raster_thread_merger_unittests.cc +++ b/fml/raster_thread_merger_unittests.cc @@ -594,6 +594,42 @@ TEST(RasterThreadMerger, TheLastCallerOfMultipleMergersCanUnmergeNow) { ASSERT_FALSE(raster_thread_merger2->IsMerged()); } +TEST(RasterThreadMerger, TheLastMergedCallerOfMultipleMergersCanUnmergeNow) { + TaskQueueWrapper queue1; + TaskQueueWrapper queue2; + fml::TaskQueueId qid1 = queue1.GetTaskQueueId(); + fml::TaskQueueId qid2 = queue2.GetTaskQueueId(); + // Two mergers will share one same inner merger + const auto raster_thread_merger1 = + fml::RasterThreadMerger::CreateOrShareThreadMerger(nullptr, qid1, qid2); + + const size_t kNumFramesMerged = 1; + ASSERT_FALSE(raster_thread_merger1->IsMerged()); + + // Merge using the mergers + raster_thread_merger1->MergeWithLease(kNumFramesMerged); + ASSERT_TRUE(raster_thread_merger1->IsMerged()); + + for (size_t i = 0; i < kNumFramesMerged; i++) { + // Un-merge thread merger 1. + raster_thread_merger1->DecrementLease(); + } + ASSERT_FALSE(raster_thread_merger1->IsMerged()); + + const auto raster_thread_merger2 = + fml::RasterThreadMerger::CreateOrShareThreadMerger(raster_thread_merger1, + qid1, qid2); + ASSERT_FALSE(raster_thread_merger2->IsMerged()); + raster_thread_merger2->MergeWithLease(kNumFramesMerged); + ASSERT_TRUE(raster_thread_merger2->IsMerged()); + + // One caller state becomes no callers left. + raster_thread_merger2->UnMergeNowIfLastOne(); + // Check if unmerged + ASSERT_FALSE(raster_thread_merger1->IsMerged()); + ASSERT_FALSE(raster_thread_merger2->IsMerged()); +} + /// This case tests multiple standalone engines using independent merger to /// merge two different raster threads into the same platform thread. TEST(RasterThreadMerger, diff --git a/fml/shared_thread_merger.cc b/fml/shared_thread_merger.cc index 15fac3e2fa0c2..0b56b229d4834 100644 --- a/fml/shared_thread_merger.cc +++ b/fml/shared_thread_merger.cc @@ -44,10 +44,10 @@ bool SharedThreadMerger::UnMergeNowUnSafe() { bool SharedThreadMerger::UnMergeNowIfLastOne(RasterThreadMergerId caller) { std::scoped_lock lock(mutex_); lease_term_by_caller_.erase(caller); - if (!lease_term_by_caller_.empty()) { - return true; + if (lease_term_by_caller_.empty() || IsAllLeaseTermsZeroUnSafe()) { + return UnMergeNowUnSafe(); } - return UnMergeNowUnSafe(); + return true; } bool SharedThreadMerger::DecrementLease(RasterThreadMergerId caller) { From 9d1ae0f0a064df031e11dd84d365e6ce7a9f5f35 Mon Sep 17 00:00:00 2001 From: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Thu, 13 Jul 2023 15:30:32 -0700 Subject: [PATCH 038/211] Reland #43118 "Add a flag to ParagraphBuilder for rounding hack migration" (#43647) real diff: https://github.com/flutter/engine/commit/aedc37a3e007cbfa1d949a412f8f8ba33594d077 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- lib/ui/dart_ui.cc | 2 +- lib/ui/text.dart | 32 +++++++++++-- lib/ui/text/paragraph_builder.cc | 9 ++-- lib/ui/text/paragraph_builder.h | 6 ++- .../src/engine/canvaskit/canvaskit_api.dart | 2 + .../lib/src/engine/canvaskit/renderer.dart | 1 + lib/web_ui/lib/src/engine/canvaskit/text.dart | 4 ++ lib/web_ui/lib/text.dart | 13 ++++++ lib/web_ui/test/canvaskit/text_test.dart | 46 ++++++++++++++++++- testing/dart/paragraph_test.dart | 41 +++++++++++++++++ .../txt/src/skia/paragraph_builder_skia.cc | 1 + third_party/txt/src/txt/paragraph_style.h | 8 ++++ 12 files changed, 154 insertions(+), 11 deletions(-) diff --git a/lib/ui/dart_ui.cc b/lib/ui/dart_ui.cc index 77b126d797346..efb5af0a30a69 100644 --- a/lib/ui/dart_ui.cc +++ b/lib/ui/dart_ui.cc @@ -78,7 +78,7 @@ typedef CanvasPath Path; V(Gradient::Create, 1) \ V(ImageFilter::Create, 1) \ V(ImageShader::Create, 1) \ - V(ParagraphBuilder::Create, 9) \ + V(ParagraphBuilder::Create, 10) \ V(PathMeasure::Create, 3) \ V(Path::Create, 1) \ V(PictureRecorder::Create, 1) \ diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 313630e98017b..89b3be4662fed 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -2798,7 +2798,7 @@ abstract class Paragraph { /// This only returns a valid value if asserts are enabled, and must not be /// used otherwise. bool get debugDisposed; - } +} @pragma('vm:entry-point') base class _NativeParagraph extends NativeFieldWrapperClass1 implements Paragraph { @@ -3015,6 +3015,28 @@ abstract class ParagraphBuilder { /// [Paragraph]. factory ParagraphBuilder(ParagraphStyle style) = _NativeParagraphBuilder; + /// Whether the rounding hack enabled by default in SkParagraph and TextPainter + /// is disabled. + /// + /// Do not rely on this getter as it exists for migration purposes only and + /// will soon be removed. + static bool get shouldDisableRoundingHack { + return const bool.hasEnvironment('SKPARAGRAPH_REMOVE_ROUNDING_HACK') + || _roundingHackDisabledInDebugMode; + } + static bool _roundingHackDisabledInDebugMode = false; + + /// Only works in debug mode. Do not call this method as it is for migration + /// purposes only and will soon be removed. + static void setDisableRoundingHack(bool disableRoundingHack) { + // bool.hasEnvironment does not work in internal tests so an additional flag + // is needed for tests. + assert(() { + _roundingHackDisabledInDebugMode = disableRoundingHack; + return true; + }()); + } + /// The number of placeholders currently in the paragraph. int get placeholderCount; @@ -3132,11 +3154,12 @@ base class _NativeParagraphBuilder extends NativeFieldWrapperClass1 implements P style._fontSize ?? 0, style._height ?? 0, style._ellipsis ?? '', - _encodeLocale(style._locale) + _encodeLocale(style._locale), + !ParagraphBuilder.shouldDisableRoundingHack, ); } - @Native(symbol: 'ParagraphBuilder::Create') + @Native(symbol: 'ParagraphBuilder::Create') external void _constructor( Int32List encoded, ByteData? strutData, @@ -3145,7 +3168,8 @@ base class _NativeParagraphBuilder extends NativeFieldWrapperClass1 implements P double fontSize, double height, String ellipsis, - String locale); + String locale, + bool applyRoundingHack); @override int get placeholderCount => _placeholderCount; diff --git a/lib/ui/text/paragraph_builder.cc b/lib/ui/text/paragraph_builder.cc index 3857a10572d62..eb01511772d49 100644 --- a/lib/ui/text/paragraph_builder.cc +++ b/lib/ui/text/paragraph_builder.cc @@ -151,11 +151,12 @@ void ParagraphBuilder::Create(Dart_Handle wrapper, double fontSize, double height, const std::u16string& ellipsis, - const std::string& locale) { + const std::string& locale, + bool applyRoundingHack) { UIDartState::ThrowIfUIOperationsProhibited(); auto res = fml::MakeRefCounted( encoded_handle, strutData, fontFamily, strutFontFamilies, fontSize, - height, ellipsis, locale); + height, ellipsis, locale, applyRoundingHack); res->AssociateWithDartWrapper(wrapper); } @@ -230,7 +231,8 @@ ParagraphBuilder::ParagraphBuilder( double fontSize, double height, const std::u16string& ellipsis, - const std::string& locale) { + const std::string& locale, + bool applyRoundingHack) { int32_t mask = 0; txt::ParagraphStyle style; { @@ -291,6 +293,7 @@ ParagraphBuilder::ParagraphBuilder( if (mask & kPSLocaleMask) { style.locale = locale; } + style.apply_rounding_hack = applyRoundingHack; FontCollection& font_collection = UIDartState::Current() ->platform_configuration() diff --git a/lib/ui/text/paragraph_builder.h b/lib/ui/text/paragraph_builder.h index 0018f969da68f..6fc7c58ad97aa 100644 --- a/lib/ui/text/paragraph_builder.h +++ b/lib/ui/text/paragraph_builder.h @@ -30,7 +30,8 @@ class ParagraphBuilder : public RefCountedDartWrappable { double fontSize, double height, const std::u16string& ellipsis, - const std::string& locale); + const std::string& locale, + bool applyRoundingHack); ~ParagraphBuilder() override; @@ -76,7 +77,8 @@ class ParagraphBuilder : public RefCountedDartWrappable { double fontSize, double height, const std::u16string& ellipsis, - const std::string& locale); + const std::string& locale, + bool applyRoundingHack); std::unique_ptr m_paragraphBuilder; }; diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart index 6508d12141898..0e1ef282513d9 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -2732,6 +2732,8 @@ extension SkParagraphStylePropertiesExtension on SkParagraphStyleProperties { @JS('replaceTabCharacters') external set _replaceTabCharacters(JSBoolean? bool); set replaceTabCharacters(bool? bool) => _replaceTabCharacters = bool?.toJS; + + external set applyRoundingHack(bool applyRoundingHack); } @JS() diff --git a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart index 834446ef26d82..96da491f69af4 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart @@ -328,6 +328,7 @@ class CanvasKitRenderer implements Renderer { strutStyle: strutStyle, ellipsis: ellipsis, locale: locale, + applyRoundingHack: !ui.ParagraphBuilder.shouldDisableRoundingHack, ); @override diff --git a/lib/web_ui/lib/src/engine/canvaskit/text.dart b/lib/web_ui/lib/src/engine/canvaskit/text.dart index 6fe5a29a48db3..0948916b5d799 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/text.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/text.dart @@ -33,6 +33,7 @@ class CkParagraphStyle implements ui.ParagraphStyle { ui.StrutStyle? strutStyle, String? ellipsis, ui.Locale? locale, + bool applyRoundingHack = true, }) : skParagraphStyle = toSkParagraphStyle( textAlign, textDirection, @@ -46,6 +47,7 @@ class CkParagraphStyle implements ui.ParagraphStyle { strutStyle, ellipsis, locale, + applyRoundingHack, ), _fontFamily = _effectiveFontFamily(fontFamily), _fontSize = fontSize, @@ -145,6 +147,7 @@ class CkParagraphStyle implements ui.ParagraphStyle { ui.StrutStyle? strutStyle, String? ellipsis, ui.Locale? locale, + bool applyRoundingHack, ) { final SkParagraphStyleProperties properties = SkParagraphStyleProperties(); @@ -181,6 +184,7 @@ class CkParagraphStyle implements ui.ParagraphStyle { properties.replaceTabCharacters = true; properties.textStyle = toSkTextStyleProperties( fontFamily, fontSize, height, fontWeight, fontStyle); + properties.applyRoundingHack = applyRoundingHack; return canvasKit.ParagraphStyle(properties); } diff --git a/lib/web_ui/lib/text.dart b/lib/web_ui/lib/text.dart index 491966a0f88c2..0835cb9e2ced9 100644 --- a/lib/web_ui/lib/text.dart +++ b/lib/web_ui/lib/text.dart @@ -685,6 +685,19 @@ abstract class Paragraph { abstract class ParagraphBuilder { factory ParagraphBuilder(ParagraphStyle style) => engine.renderer.createParagraphBuilder(style); + + static bool get shouldDisableRoundingHack { + return const bool.hasEnvironment('SKPARAGRAPH_REMOVE_ROUNDING_HACK') + || _roundingHackDisabledInDebugMode; + } + static bool _roundingHackDisabledInDebugMode = false; + static void setDisableRoundingHack(bool disableRoundingHack) { + assert(() { + _roundingHackDisabledInDebugMode = disableRoundingHack; + return true; + }()); + } + void pushStyle(TextStyle style); void pop(); void addText(String text); diff --git a/lib/web_ui/test/canvaskit/text_test.dart b/lib/web_ui/test/canvaskit/text_test.dart index 8d4af676480fe..547155df75ac7 100644 --- a/lib/web_ui/test/canvaskit/text_test.dart +++ b/lib/web_ui/test/canvaskit/text_test.dart @@ -123,7 +123,51 @@ void testMain() { } }); }); + + test('applyRoundingHack works', () { + bool assertsEnabled = false; + assert(() { + assertsEnabled = true; + return true; + }()); + if (!assertsEnabled){ + return; + } + + const double fontSize = 1.25; + const String text = '12345'; + assert((fontSize * text.length).truncate() != fontSize * text.length); + final bool roundingHackWasDisabled = ui.ParagraphBuilder.shouldDisableRoundingHack; + ui.ParagraphBuilder.setDisableRoundingHack(true); + final ui.ParagraphBuilder builder = ui.ParagraphBuilder( + ui.ParagraphStyle(fontSize: fontSize, fontFamily: 'FlutterTest'), + ); + builder.addText(text); + final ui.Paragraph paragraph = builder.build() + ..layout(const ui.ParagraphConstraints(width: text.length * fontSize)); + + expect(paragraph.maxIntrinsicWidth, text.length * fontSize); + switch (paragraph.computeLineMetrics()) { + case [ui.LineMetrics(width: final double width)]: + expect(width, text.length * fontSize); + case final List metrics: + expect(metrics, hasLength(1)); + } + ui.ParagraphBuilder.setDisableRoundingHack(roundingHackWasDisabled); + }); + + test('rounding hack applied by default', () { + const double fontSize = 1.25; + const String text = '12345'; + assert((fontSize * text.length).truncate() != fontSize * text.length); + expect(ui.ParagraphBuilder.shouldDisableRoundingHack, isFalse); + final ui.ParagraphBuilder builder = ui.ParagraphBuilder(ui.ParagraphStyle(fontSize: fontSize, fontFamily: 'FlutterTest')); + builder.addText(text); + final ui.Paragraph paragraph = builder.build() + ..layout(const ui.ParagraphConstraints(width: text.length * fontSize)); + expect(paragraph.computeLineMetrics().length, greaterThan(1)); + }); + // TODO(hterkelsen): https://github.com/flutter/flutter/issues/71520 }, skip: isSafari || isFirefox); - } diff --git a/testing/dart/paragraph_test.dart b/testing/dart/paragraph_test.dart index 8c8e865770c59..eec1c571360c5 100644 --- a/testing/dart/paragraph_test.dart +++ b/testing/dart/paragraph_test.dart @@ -233,4 +233,45 @@ void main() { expect(callback, throwsStateError); } }); + + test('disableRoundingHack works in tests', () { + bool assertsEnabled = false; + assert(() { + assertsEnabled = true; + return true; + }()); + if (!assertsEnabled){ + return; + } + const double fontSize = 1.25; + const String text = '12345'; + assert((fontSize * text.length).truncate() != fontSize * text.length); + final bool roundingHackWasDisabled = ParagraphBuilder.shouldDisableRoundingHack; + ParagraphBuilder.setDisableRoundingHack(true); + final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle(fontSize: fontSize)); + builder.addText(text); + final Paragraph paragraph = builder.build() + ..layout(const ParagraphConstraints(width: text.length * fontSize)); + + expect(paragraph.maxIntrinsicWidth, text.length * fontSize); + switch (paragraph.computeLineMetrics()) { + case [LineMetrics(width: final double width)]: + expect(width, text.length * fontSize); + case final List metrics: + expect(metrics, hasLength(1)); + } + ParagraphBuilder.setDisableRoundingHack(roundingHackWasDisabled); + }); + + test('rounding hack applied by default', () { + const double fontSize = 1.25; + const String text = '12345'; + assert((fontSize * text.length).truncate() != fontSize * text.length); + expect(ParagraphBuilder.shouldDisableRoundingHack, isFalse); + final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle(fontSize: fontSize)); + builder.addText(text); + final Paragraph paragraph = builder.build() + ..layout(const ParagraphConstraints(width: text.length * fontSize)); + expect(paragraph.computeLineMetrics().length, greaterThan(1)); + }); } diff --git a/third_party/txt/src/skia/paragraph_builder_skia.cc b/third_party/txt/src/skia/paragraph_builder_skia.cc index 96d98f3f4c29f..641725ec6ccfb 100644 --- a/third_party/txt/src/skia/paragraph_builder_skia.cc +++ b/third_party/txt/src/skia/paragraph_builder_skia.cc @@ -138,6 +138,7 @@ skt::ParagraphStyle ParagraphBuilderSkia::TxtToSkia(const ParagraphStyle& txt) { skia.turnHintingOff(); skia.setReplaceTabCharacters(true); + skia.setApplyRoundingHack(txt.apply_rounding_hack); return skia; } diff --git a/third_party/txt/src/txt/paragraph_style.h b/third_party/txt/src/txt/paragraph_style.h index 7c3043b8ad899..e1915323a0bd3 100644 --- a/third_party/txt/src/txt/paragraph_style.h +++ b/third_party/txt/src/txt/paragraph_style.h @@ -95,6 +95,14 @@ class ParagraphStyle { std::u16string ellipsis; std::string locale; + // Temporary flag that indicates whether the Paragraph should report its + // metrics with rounding hacks applied. + // + // This flag currently defaults to true and will be flipped to false once the + // migration is complete. + // TODO(LongCatIsLooong): https://github.com/flutter/flutter/issues/31707 + bool apply_rounding_hack = true; + TextStyle GetTextStyle() const; bool unlimited_lines() const; From d45d39bfd1a6364fc7431ffd227acb87041bb65a Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 13 Jul 2023 15:43:16 -0700 Subject: [PATCH 039/211] [Impeller] no-op fragment program on Android until it works. (#43657) The framework has switched into mat3 by default, which means the fragment program ink sparkle has replaced the default ink splash. Since this is not implemented, all of the impeller benchmarks are crashign. No-op this so we at least get benchmark numbers until its implemented. --- impeller/entity/contents/runtime_effect_contents.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/impeller/entity/contents/runtime_effect_contents.cc b/impeller/entity/contents/runtime_effect_contents.cc index c3798abdb0ae8..ba2dff69c4e43 100644 --- a/impeller/entity/contents/runtime_effect_contents.cc +++ b/impeller/entity/contents/runtime_effect_contents.cc @@ -44,6 +44,13 @@ bool RuntimeEffectContents::CanInheritOpacity(const Entity& entity) const { bool RuntimeEffectContents::Render(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const { +// TODO(jonahwilliams): FragmentProgram API is not fully wired up on Android. +// Disable until this is complete so that integration tests and benchmarks can +// run m3 applications. +#ifdef FML_OS_ANDROID + return true; +#endif + auto context = renderer.GetContext(); auto library = context->GetShaderLibrary(); From 1a9f10e28a83fcfe54edee7663191ed0631a78f8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 18:53:48 -0400 Subject: [PATCH 040/211] Roll Skia from 52613fcc0780 to 9e4f5cc3aeb4 (1 revision) (#43659) https://skia.googlesource.com/skia.git/+log/52613fcc0780..9e4f5cc3aeb4 2023-07-13 johnstiles@google.com Fix WGSL codegen for compound assignment with swizzles. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6b581a9d3afee..75bcf8a967324 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '52613fcc0780a8f9478fb50f7c8629cd0b48930d', + 'skia_revision': '9e4f5cc3aeb485fe4b656962f6490f21682d8ede', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 69228c99263a6..a332d88b60094 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cc39f05a3ca19757f1e5a0fbb07cbaf2 +Signature: e83929b0e618966969fcd625c0f8b7d8 ==================================================================================================== LIBRARY: etc1 From 89332e529e61bdfea9feb5be4f272b4e86ebbc37 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 13 Jul 2023 16:09:26 -0700 Subject: [PATCH 041/211] Fix a clang-tidy warning about a potentially nil value in the editingState dictionary (#43660) --- .../darwin/macos/framework/Source/FlutterTextInputPlugin.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm b/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm index e249cd5601be6..f6460f2309f37 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm +++ b/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm @@ -536,7 +536,7 @@ - (NSDictionary*)editingState { kSelectionIsDirectionalKey : @NO, kComposingBaseKey : @(composingBase), kComposingExtentKey : @(composingExtent), - kTextKey : [NSString stringWithUTF8String:_activeModel->GetText().c_str()] + kTextKey : [NSString stringWithUTF8String:_activeModel->GetText().c_str()] ?: [NSNull null], }; } From 6e1f997004294d51deed737a8ce707ee5b74f678 Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Thu, 13 Jul 2023 17:34:12 -0700 Subject: [PATCH 042/211] Remove unimplemented API call saveCompilationTrace (#43656) Fixes https://github.com/flutter/flutter/issues/59205 --- lib/ui/natives.dart | 23 ----------------------- lib/web_ui/lib/natives.dart | 7 ------- 2 files changed, 30 deletions(-) diff --git a/lib/ui/natives.dart b/lib/ui/natives.dart index ed32d16668b12..44ab3e6092e0f 100644 --- a/lib/ui/natives.dart +++ b/lib/ui/natives.dart @@ -85,29 +85,6 @@ Future _getImpellerEnabled( const bool _kReleaseMode = bool.fromEnvironment('dart.vm.product'); -/// Returns runtime Dart compilation trace as a UTF-8 encoded memory buffer. -/// -/// The buffer contains a list of symbols compiled by the Dart JIT at runtime up -/// to the point when this function was called. This list can be saved to a text -/// file and passed to tools such as `flutter build` or Dart `gen_snapshot` in -/// order to pre-compile this code offline. -/// -/// The list has one symbol per line of the following format: -/// `,,\n`. -/// -/// Here are some examples: -/// -/// ```csv -/// dart:core,Duration,get:inMilliseconds -/// package:flutter/src/widgets/binding.dart,::,runApp -/// file:///.../my_app.dart,::,main -/// ``` -/// -/// This function is only effective in debug and dynamic modes, and will throw in AOT mode. -List saveCompilationTrace() { - throw UnimplementedError(); -} - @Native(symbol: 'DartRuntimeHooks::ScheduleMicrotask') external void _scheduleMicrotask(void Function() callback); diff --git a/lib/web_ui/lib/natives.dart b/lib/web_ui/lib/natives.dart index 6cbde5e0080b5..37ba2b7efcae9 100644 --- a/lib/web_ui/lib/natives.dart +++ b/lib/web_ui/lib/natives.dart @@ -16,10 +16,3 @@ class DartPluginRegistrant { '`ensureInitialized` is not implemented on the web.'); } } - -List saveCompilationTrace() { - assert( - throw UnimplementedError('saveCompilationTrace is not implemented on the web.'), - ); - throw UnimplementedError(); -} From 7234763d680f6331ab27513ffd089b540c659f3f Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Thu, 13 Jul 2023 17:34:14 -0700 Subject: [PATCH 043/211] Add more points to [MediaQuery]. (#43649) See https://github.com/flutter/flutter/issues/11697 --- lib/ui/window.dart | 50 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 689ebdd8f5c38..321e1a792aa9f 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -126,7 +126,12 @@ class FlutterView { /// The Flutter framework operates in logical pixels, so it is rarely /// necessary to directly deal with this property. /// - /// When this changes, [PlatformDispatcher.onMetricsChanged] is called. + /// When this changes, [PlatformDispatcher.onMetricsChanged] is called. When + /// using the Flutter framework, using [MediaQuery.of] to obtain the device + /// pixel ratio (via [MediaQueryData.devicePixelRatio]), instead of directly + /// obtaining the [devicePixelRatio] from a [FlutterView], will automatically + /// cause any widgets dependent on this value to rebuild when it changes, + /// without having to listen to [PlatformDispatcher.onMetricsChanged]. /// /// See also: /// @@ -158,7 +163,12 @@ class FlutterView { /// The dimensions of the rectangle into which the scene rendered in this view /// will be drawn on the screen, in physical pixels. /// - /// When this changes, [PlatformDispatcher.onMetricsChanged] is called. + /// When this changes, [PlatformDispatcher.onMetricsChanged] is called. When + /// using the Flutter framework, using [MediaQuery.of] to obtain the size (via + /// [MediaQueryData.size]), instead of directly obtaining the [physicalSize] + /// from a [FlutterView], will automatically cause any widgets dependent on the + /// size to rebuild when the size changes, without having to listen to + /// [PlatformDispatcher.onMetricsChanged]. /// /// At startup, the size of the view may not be known before Dart code runs. /// If this value is observed early in the application lifecycle, it may @@ -182,7 +192,12 @@ class FlutterView { /// which the view can render, but over which the operating system will likely /// place system UI, such as the keyboard, that fully obscures any content. /// - /// When this property changes, [PlatformDispatcher.onMetricsChanged] is called. + /// When this property changes, [PlatformDispatcher.onMetricsChanged] is + /// called. When using the Flutter framework, using [MediaQuery.of] to obtain + /// the insets (via [MediaQueryData.viewInsets]), instead of directly + /// obtaining the [viewInsets] from a [FlutterView], will automatically cause + /// any widgets dependent on the insets to rebuild when they change, without + /// having to listen to [PlatformDispatcher.onMetricsChanged]. /// /// The relationship between this [viewInsets], /// [viewPadding], and [padding] are described in @@ -208,7 +223,12 @@ class FlutterView { /// change in response to the soft keyboard being visible or hidden, whereas /// [padding] will. /// - /// When this property changes, [PlatformDispatcher.onMetricsChanged] is called. + /// When this property changes, [PlatformDispatcher.onMetricsChanged] is + /// called. When using the Flutter framework, using [MediaQuery.of] to obtain + /// the padding (via [MediaQueryData.viewPadding]), instead of directly + /// obtaining the [viewPadding] from a [FlutterView], will automatically cause + /// any widgets dependent on the padding to rebuild when it changes, without + /// having to listen to [PlatformDispatcher.onMetricsChanged]. /// /// The relationship between this [viewInsets], /// [viewPadding], and [padding] are described in @@ -254,7 +274,12 @@ class FlutterView { /// not drawn (to account for the bottom soft button area), but will be `0.0` /// when the soft keyboard is visible. /// - /// When this changes, [PlatformDispatcher.onMetricsChanged] is called. + /// When this changes, [PlatformDispatcher.onMetricsChanged] is called. When + /// using the Flutter framework, using [MediaQuery.of] to obtain the padding + /// (via [MediaQueryData.padding]), instead of directly obtaining the + /// [padding] from a [FlutterView], will automatically cause any widgets + /// dependent on the padding to rebuild when it changes, without having to + /// listen to [PlatformDispatcher.onMetricsChanged]. /// /// The relationship between this [viewInsets], [viewPadding], and [padding] /// are described in more detail in the documentation for [FlutterView]. @@ -389,6 +414,11 @@ class SingletonFlutterWindow extends FlutterView { /// /// {@macro dart.ui.window.accessorForwardWarning} /// + /// When using the Flutter framework, the [MediaQuery] widget exposes much of + /// these metrics. Using [MediaQuery.of] to obtain them allows the framework + /// to automatically rebuild widgets that depend on them, without having to + /// manage the [onMetricsChanged] callback. + /// /// See [PlatformDispatcher.onMetricsChanged] for more information. VoidCallback? get onMetricsChanged => platformDispatcher.onMetricsChanged; set onMetricsChanged(VoidCallback? callback) { @@ -400,11 +430,11 @@ class SingletonFlutterWindow extends FlutterView { /// {@template dart.ui.window.accessorForwardWarning} /// Accessing this value returns the value contained in the /// [PlatformDispatcher] singleton, so instead of getting it from here, you - /// should consider getting it from `WidgetsBinding.instance.platformDispatcher` instead - /// (or, when `WidgetsBinding` isn't available, from - /// [PlatformDispatcher.instance]). The reason this value forwards to the - /// [PlatformDispatcher] is to provide convenience for applications that only - /// use a single main window. + /// should consider getting it from + /// `WidgetsBinding.instance.platformDispatcher` instead (or, when + /// `WidgetsBinding` isn't available, from [PlatformDispatcher.instance]). The + /// reason this value forwards to the [PlatformDispatcher] is to provide + /// convenience for applications that only use a single main window. /// {@endtemplate} /// /// This establishes the language and formatting conventions that window From b5516abd1e40ecc37a6e522fa25bf92ab3bc5475 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 22:10:51 -0400 Subject: [PATCH 044/211] Roll Dart SDK from 9506d0c9f5ef to 8f49edfb6989 (1 revision) (#43665) https://dart.googlesource.com/sdk.git/+log/9506d0c9f5ef..8f49edfb6989 2023-07-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-309.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 75bcf8a967324..a37e874a6a9fc 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '9506d0c9f5ef12ed2f161006165290c5e86d19cc', + 'dart_revision': '8f49edfb69898373949135d7f317217ab1acb336', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 2f1d8b22812d9..0b7af36e0e432 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 28f3d38d110f51b67e3777c18492d67f +Signature: 92da6c802dde52d98bba3a59e106b667 ==================================================================================================== LIBRARY: angle From 9f929a5167447d344fe23c236d61764730dfe722 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 23:15:01 -0400 Subject: [PATCH 045/211] Roll Skia from 9e4f5cc3aeb4 to ffed127e8974 (1 revision) (#43666) https://skia.googlesource.com/skia.git/+log/9e4f5cc3aeb4..ffed127e8974 2023-07-14 johnstiles@google.com Revert "Fix swizzled compound assignment with lvalue side-effects in Metal." If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a37e874a6a9fc..9b27c92076e53 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '9e4f5cc3aeb485fe4b656962f6490f21682d8ede', + 'skia_revision': 'ffed127e89749f53e940124e4b41f6aa36561f48', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a332d88b60094..37a4e893bd7f1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e83929b0e618966969fcd625c0f8b7d8 +Signature: cc241225321b08aa19a3e79b7819d2c0 ==================================================================================================== LIBRARY: etc1 From 8646935beb1c90ed5a0fe07eb31137014863e989 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Jul 2023 23:21:49 -0400 Subject: [PATCH 046/211] Roll Fuchsia Mac SDK from rRUd41Mv9NI0n3Iyc... to J0oxaSt651gKgDreU... (#43667) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 9b27c92076e53..82c84521d4e0e 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'rRUd41Mv9NI0n3IycuJXEbDEmYYuE1P9aTHCcu_c0NkC' + 'version': 'J0oxaSt651gKgDreUUVzse6-xsrejysSrYuIslJ3BZ0C' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From a44d919cedfa985668aa656f2e0f3363ac004084 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 01:37:22 -0400 Subject: [PATCH 047/211] Roll Fuchsia Linux SDK from -csWUV7Dv3hETOoDw... to LZPMbHnVPFdbXndcX... (#43669) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 82c84521d4e0e..2ecd72ba21f1f 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '-csWUV7Dv3hETOoDwiBHVjB-2sa36bEnpFP8NDjE7ucC' + 'version': 'LZPMbHnVPFdbXndcXVTMyrYiv-0ooqPmxW2FSTAilQgC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 5eb7195df912e..5f20edcec319b 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 660a1de2243347309a4f8f3d537edf94 +Signature: ff095b3584d7acc96c14cbb91697f3aa ==================================================================================================== LIBRARY: fuchsia_sdk From 14f5bc892c10f7317fd3840ac9bb7c47b3da4c8b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 01:41:04 -0400 Subject: [PATCH 048/211] Roll Skia from ffed127e8974 to 2848267f631d (3 revisions) (#43670) https://skia.googlesource.com/skia.git/+log/ffed127e8974..2848267f631d 2023-07-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn from 7a6604d0564b to eb355bb3edcf (21 revisions) 2023-07-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from c7cba4b06eab to 845e8105edb3 (8 revisions) 2023-07-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from ad8a66bf7d69 to e1b8f324086e (6 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2ecd72ba21f1f..6136a50955c42 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'ffed127e89749f53e940124e4b41f6aa36561f48', + 'skia_revision': '2848267f631d56a354d9460884eb4cc87a5216bf', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 37a4e893bd7f1..a6429582e9e52 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cc241225321b08aa19a3e79b7819d2c0 +Signature: af939d0fdca22e8a636d6adc43245eb9 ==================================================================================================== LIBRARY: etc1 From 62f732f42aa21c00804f31972226009183882446 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 01:49:04 -0400 Subject: [PATCH 049/211] Roll Dart SDK from 8f49edfb6989 to 8e4eac435b49 (1 revision) (#43671) https://dart.googlesource.com/sdk.git/+log/8f49edfb6989..8e4eac435b49 2023-07-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-310.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 6136a50955c42..1bdf0163f1067 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '8f49edfb69898373949135d7f317217ab1acb336', + 'dart_revision': '8e4eac435b49533699fc7530f7151d48039abc7a', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 76dd542380eea45b9f1c1f6043a8646f35a60526 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 02:20:02 -0400 Subject: [PATCH 050/211] Roll Skia from 2848267f631d to 8192de1efc1b (1 revision) (#43672) https://skia.googlesource.com/skia.git/+log/2848267f631d..8192de1efc1b 2023-07-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 8ae9f28d7af2 to 6ffd0d20684d (22 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 1bdf0163f1067..0c861b2f7eed7 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '2848267f631d56a354d9460884eb4cc87a5216bf', + 'skia_revision': '8192de1efc1b2c58d43e36e3e9878011738cee29', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From b96e95d2c65fb197c92c44b2dbe153df5ac5e44f Mon Sep 17 00:00:00 2001 From: Martin Kustermann Date: Fri, 14 Jul 2023 13:44:54 +0200 Subject: [PATCH 051/211] Use utf8.encode() instead of longer const Utf8Encoder.convert() (#43675) The change in [0] has propagated now everywhere, so we can use `utf8.encode()` instead of the longer `const Utf8Encoder.convert()`. Also it cleans up code like ``` Uint8List bytes; bytes.buffer.asByteData(); ``` as that is not guaranteed to be correct, the correct version would be ``` Uint8List bytes; bytes.buffer.asByteData(bytes.offsetInBytes, bytes.length); ``` a shorter hand for that is: ``` Uint8List bytes; ByteData.sublistView(bytes); ``` [0] https://github.com/dart-lang/sdk/issues/52801 --- lib/ui/text.dart | 2 +- .../lib/src/engine/platform_dispatcher.dart | 2 +- .../src/engine/services/message_codecs.dart | 4 +-- .../skwasm/skwasm_impl/raw/raw_memory.dart | 3 +-- .../lib/ui_web/src/ui_web/asset_manager.dart | 2 +- .../test/canvaskit/fragment_program_test.dart | 2 +- .../test/common/fake_asset_manager.dart | 2 +- .../test/engine/channel_buffers_test.dart | 2 +- lib/web_ui/test/ui/fragment_shader_test.dart | 2 +- lib/web_ui/test/ui/image_golden_test.dart | 2 +- shell/common/fixtures/shell_test.dart | 4 +-- .../dart-pkg/zircon/test/zircon_tests.dart | 2 +- .../embedder/parent-view/lib/parent_view.dart | 12 ++++----- .../lib/mouse-input-view.dart | 25 ++++++++----------- .../text-input-view/lib/text_input_view.dart | 2 +- .../lib/embedding-flutter-view.dart | 4 +-- .../lib/touch-input-view.dart | 2 +- shell/platform/windows/fixtures/main.dart | 8 +++--- testing/dart/assets_test.dart | 2 +- testing/dart/channel_buffers_test.dart | 2 +- testing/scenario_app/lib/main.dart | 2 +- .../scenario_app/lib/src/channel_util.dart | 2 +- 22 files changed, 41 insertions(+), 49 deletions(-) diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 89b3be4662fed..95095a4d881dd 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -3338,7 +3338,7 @@ Future loadFontFromList(Uint8List list, {String? fontFamily}) { ).then((_) => _sendFontChangeMessage()); } -final ByteData _fontChangeMessage = utf8.encoder.convert( +final ByteData _fontChangeMessage = utf8.encode( json.encode({'type': 'fontsChange'}) ).buffer.asByteData(); diff --git a/lib/web_ui/lib/src/engine/platform_dispatcher.dart b/lib/web_ui/lib/src/engine/platform_dispatcher.dart index 4a42c98838709..71e56b69ecdf9 100644 --- a/lib/web_ui/lib/src/engine/platform_dispatcher.dart +++ b/lib/web_ui/lib/src/engine/platform_dispatcher.dart @@ -1001,7 +1001,7 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher { void _setAppLifecycleState(ui.AppLifecycleState state) { sendPlatformMessage( 'flutter/lifecycle', - Uint8List.fromList(utf8.encode(state.toString())).buffer.asByteData(), + ByteData.sublistView(utf8.encode(state.toString())), null, ); } diff --git a/lib/web_ui/lib/src/engine/services/message_codecs.dart b/lib/web_ui/lib/src/engine/services/message_codecs.dart index 9773c6ee3c2dc..26c01c141e3d0 100644 --- a/lib/web_ui/lib/src/engine/services/message_codecs.dart +++ b/lib/web_ui/lib/src/engine/services/message_codecs.dart @@ -39,7 +39,7 @@ class StringCodec implements MessageCodec { @override ByteData encodeMessage(String message) { - final Uint8List encoded = utf8.encoder.convert(message); + final Uint8List encoded = utf8.encode(message); return encoded.buffer.asByteData(); } } @@ -320,7 +320,7 @@ class StandardMessageCodec implements MessageCodec { } } else if (value is String) { buffer.putUint8(_valueString); - final List bytes = utf8.encoder.convert(value); + final List bytes = utf8.encode(value); writeSize(buffer, bytes.length); buffer.putUint8List(bytes as Uint8List); } else if (value is Uint8List) { diff --git a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/raw/raw_memory.dart b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/raw/raw_memory.dart index 0396c2ea9846e..90ff2b43ed4d0 100644 --- a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/raw/raw_memory.dart +++ b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/raw/raw_memory.dart @@ -26,8 +26,7 @@ external void stackRestore(StackPointer pointer); class StackScope { Pointer convertStringToNative(String string) { - final Utf8Encoder utf8Encoder = utf8.encoder; - final Uint8List encoded = utf8Encoder.convert(string); + final Uint8List encoded = utf8.encode(string); final Pointer pointer = allocInt8Array(encoded.length + 1); for (int i = 0; i < encoded.length; i++) { pointer[i] = encoded[i]; diff --git a/lib/web_ui/lib/ui_web/src/ui_web/asset_manager.dart b/lib/web_ui/lib/ui_web/src/ui_web/asset_manager.dart index de8574c94e936..53788bdd368be 100644 --- a/lib/web_ui/lib/ui_web/src/ui_web/asset_manager.dart +++ b/lib/web_ui/lib/ui_web/src/ui_web/asset_manager.dart @@ -92,7 +92,7 @@ class AssetManager { if (response.status == 404 && asset == 'AssetManifest.json') { printWarning('Asset manifest does not exist at `$url` - ignoring.'); - return Uint8List.fromList(utf8.encode('{}')).buffer.asByteData(); + return ByteData.sublistView(utf8.encode('{}')); } return (await response.payload.asByteBuffer()).asByteData(); diff --git a/lib/web_ui/test/canvaskit/fragment_program_test.dart b/lib/web_ui/test/canvaskit/fragment_program_test.dart index 1907093f5a75c..f9c00901e98a1 100644 --- a/lib/web_ui/test/canvaskit/fragment_program_test.dart +++ b/lib/web_ui/test/canvaskit/fragment_program_test.dart @@ -186,7 +186,7 @@ void testMain() { }); test('FragmentProgram can be created from JSON IPLR bundle', () { - final Uint8List data = const Utf8Encoder().convert(kJsonIPLR); + final Uint8List data = utf8.encode(kJsonIPLR); final CkFragmentProgram program = CkFragmentProgram.fromBytes('test', data); expect(program.effect, isNotNull); diff --git a/lib/web_ui/test/common/fake_asset_manager.dart b/lib/web_ui/test/common/fake_asset_manager.dart index a1099fb58aaff..d87b071da59b1 100644 --- a/lib/web_ui/test/common/fake_asset_manager.dart +++ b/lib/web_ui/test/common/fake_asset_manager.dart @@ -90,7 +90,7 @@ class FakeAssetScope { FakeAssetManager fakeAssetManager = FakeAssetManager(); ByteData stringAsUtf8Data(String string) { - return ByteData.view(Uint8List.fromList(utf8.encode(string)).buffer); + return ByteData.sublistView(utf8.encode(string)); } const String ahemFontFamily = 'Ahem'; diff --git a/lib/web_ui/test/engine/channel_buffers_test.dart b/lib/web_ui/test/engine/channel_buffers_test.dart index 2cd8cd2baa7d4..7bc79d3397957 100644 --- a/lib/web_ui/test/engine/channel_buffers_test.dart +++ b/lib/web_ui/test/engine/channel_buffers_test.dart @@ -23,7 +23,7 @@ void main() { } ByteData _makeByteData(String str) { - final Uint8List list = const Utf8Encoder().convert(str); + final Uint8List list = utf8.encode(str); final ByteBuffer buffer = list.buffer; return ByteData.view(buffer); } diff --git a/lib/web_ui/test/ui/fragment_shader_test.dart b/lib/web_ui/test/ui/fragment_shader_test.dart index fc456dc68a794..e7c7f0bda34a5 100644 --- a/lib/web_ui/test/ui/fragment_shader_test.dart +++ b/lib/web_ui/test/ui/fragment_shader_test.dart @@ -53,7 +53,7 @@ Future testMain() async { assetScope = fakeAssetManager.pushAssetScope(); assetScope.setAsset( 'voronoi_shader', - Uint8List.fromList(utf8.encode(kVoronoiShaderSksl)).buffer.asByteData() + ByteData.sublistView(utf8.encode(kVoronoiShaderSksl)) ); }); diff --git a/lib/web_ui/test/ui/image_golden_test.dart b/lib/web_ui/test/ui/image_golden_test.dart index df299250af8ba..aa877b97b654e 100644 --- a/lib/web_ui/test/ui/image_golden_test.dart +++ b/lib/web_ui/test/ui/image_golden_test.dart @@ -69,7 +69,7 @@ Future testMain() async { assetScope = fakeAssetManager.pushAssetScope(); assetScope.setAsset( 'glitch_shader', - Uint8List.fromList(utf8.encode(kGlitchShaderSksl)).buffer.asByteData() + ByteData.sublistView(utf8.encode(kGlitchShaderSksl)) ); }); diff --git a/shell/common/fixtures/shell_test.dart b/shell/common/fixtures/shell_test.dart index ffb42c35d7adf..ea7361915d7c7 100644 --- a/shell/common/fixtures/shell_test.dart +++ b/shell/common/fixtures/shell_test.dart @@ -167,7 +167,7 @@ void testSkiaResourceCacheSendsResponse() { }'''; PlatformDispatcher.instance.sendPlatformMessage( 'flutter/skia', - Uint8List.fromList(utf8.encode(jsonRequest)).buffer.asByteData(), + ByteData.sublistView(utf8.encode(jsonRequest)), callback, ); } @@ -294,7 +294,7 @@ void canAccessResourceFromAssetDir() async { notifySetAssetBundlePath(); window.sendPlatformMessage( 'flutter/assets', - Uint8List.fromList(utf8.encode('kernel_blob.bin')).buffer.asByteData(), + ByteData.sublistView(utf8.encode('kernel_blob.bin')), (ByteData? byteData) { notifyCanAccessResource(byteData != null); }, diff --git a/shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart b/shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart index b4314f6910619..a3760a20ccb75 100644 --- a/shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart +++ b/shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart @@ -13,7 +13,7 @@ import 'package:litetest/litetest.dart'; /// Helper method to turn a [String] into a [ByteData] containing the /// text of the string encoded as UTF-8. ByteData utf8Bytes(final String text) { - return ByteData.view(Uint8List.fromList(utf8.encode(text)).buffer); + return ByteData.sublistView(utf8.encode(text)); } // Take from zircon constants in zircon/errors.h, zircon/rights.h, zircon/types.h diff --git a/shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart b/shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart index 240748755999d..e94bab84a2243 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart +++ b/shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart @@ -169,13 +169,11 @@ class ChildView { ], }; - final ByteData createViewMessage = utf8.encoder - .convert(json.encode({ - 'method': 'View.create', - 'args': args, - })) - .buffer - .asByteData(); + final ByteData createViewMessage = + ByteData.sublistView(utf8.encode(json.encode({ + 'method': 'View.create', + 'args': args, + }))); final platformViewsChannel = 'flutter/platform_views'; diff --git a/shell/platform/fuchsia/flutter/tests/integration/mouse-input/mouse-input-view/lib/mouse-input-view.dart b/shell/platform/fuchsia/flutter/tests/integration/mouse-input/mouse-input-view/lib/mouse-input-view.dart index ff63cee4a65f0..9e990890ee6af 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/mouse-input/mouse-input-view/lib/mouse-input-view.dart +++ b/shell/platform/fuchsia/flutter/tests/integration/mouse-input/mouse-input-view/lib/mouse-input-view.dart @@ -108,20 +108,17 @@ class MyApp { double wheelXPhysicalPixel, double wheelYPhysicalPixel}) { print('mouse-input-view reporting mouse input to MouseInputListener'); - final message = utf8.encoder - .convert(json.encode({ - 'method': 'MouseInputListener.ReportMouseInput', - 'local_x': localX, - 'local_y': localY, - 'time_received': timeReceived, - 'component_name': 'touch-input-view', - 'buttons': buttons, - 'phase': 'asdf', - 'wheel_x_physical_pixel': wheelXPhysicalPixel, - 'wheel_y_physical_pixel': wheelYPhysicalPixel, - })) - .buffer - .asByteData(); + final message = ByteData.sublistView(utf8.encode(json.encode({ + 'method': 'MouseInputListener.ReportMouseInput', + 'local_x': localX, + 'local_y': localY, + 'time_received': timeReceived, + 'component_name': 'touch-input-view', + 'buttons': buttons, + 'phase': 'asdf', + 'wheel_x_physical_pixel': wheelXPhysicalPixel, + 'wheel_y_physical_pixel': wheelYPhysicalPixel, + }))); PlatformDispatcher.instance .sendPlatformMessage('fuchsia/input_test', message, null); } diff --git a/shell/platform/fuchsia/flutter/tests/integration/text-input/text-input-view/lib/text_input_view.dart b/shell/platform/fuchsia/flutter/tests/integration/text-input/text-input-view/lib/text_input_view.dart index 32aa2b77c93a3..a1e5c3226123c 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/text-input/text-input-view/lib/text_input_view.dart +++ b/shell/platform/fuchsia/flutter/tests/integration/text-input/text-input-view/lib/text_input_view.dart @@ -91,7 +91,7 @@ class TestApp { void _reportTextInput(String text) { print('text-input-view reporting keyboard input to KeyboardInputListener'); - final message = utf8.encoder.convert(json.encode({ + final message = utf8.encode(json.encode({ 'method': 'KeyboardInputListener.ReportTextInput', 'text': text, })).buffer.asByteData(); diff --git a/shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart b/shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart index f9ba724693b01..732e422421c33 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart +++ b/shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart @@ -168,7 +168,7 @@ class TestApp { void _reportTouchInput({double localX, double localY, int timeReceived}) { print('embedding-flutter-view reporting touch input to TouchInputListener'); - final message = utf8.encoder.convert(json.encode({ + final message = utf8.encode(json.encode({ 'method': 'TouchInputListener.ReportTouchInput', 'local_x': localX, 'local_y': localY, @@ -204,7 +204,7 @@ class ChildView { ], }; - final ByteData createViewMessage = utf8.encoder.convert( + final ByteData createViewMessage = utf8.encode( json.encode({ 'method': 'View.create', 'args': args, diff --git a/shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-view/lib/touch-input-view.dart b/shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-view/lib/touch-input-view.dart index 1b16ad5ba4297..b8cb1c98c985a 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-view/lib/touch-input-view.dart +++ b/shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-view/lib/touch-input-view.dart @@ -82,7 +82,7 @@ class TestApp { void _reportTouchInput({double localX, double localY, int timeReceived}) { print('touch-input-view reporting touch input to TouchInputListener'); - final message = utf8.encoder.convert(json.encode({ + final message = utf8.encode(json.encode({ 'method': 'TouchInputListener.ReportTouchInput', 'local_x': localX, 'local_y': localY, diff --git a/shell/platform/windows/fixtures/main.dart b/shell/platform/windows/fixtures/main.dart index dd88b7eab2f3a..b6f8934536a05 100644 --- a/shell/platform/windows/fixtures/main.dart +++ b/shell/platform/windows/fixtures/main.dart @@ -92,7 +92,7 @@ void exitTestExit() async { final Completer closed = Completer(); ui.channelBuffers.setListener('flutter/platform', (ByteData? data, ui.PlatformMessageResponseCallback callback) async { final String jsonString = json.encode(>[{'response': 'exit'}]); - final ByteData responseData = ByteData.sublistView(Uint8List.fromList(utf8.encode(jsonString))); + final ByteData responseData = ByteData.sublistView(utf8.encode(jsonString)); callback(responseData); closed.complete(data); }); @@ -104,7 +104,7 @@ void exitTestCancel() async { final Completer closed = Completer(); ui.channelBuffers.setListener('flutter/platform', (ByteData? data, ui.PlatformMessageResponseCallback callback) async { final String jsonString = json.encode(>[{'response': 'cancel'}]); - final ByteData responseData = ByteData.sublistView(Uint8List.fromList(utf8.encode(jsonString))); + final ByteData responseData = ByteData.sublistView(utf8.encode(jsonString)); callback(responseData); closed.complete(data); }); @@ -120,9 +120,7 @@ void exitTestCancel() async { }); ui.PlatformDispatcher.instance.sendPlatformMessage( 'flutter/platform', - ByteData.sublistView( - Uint8List.fromList(utf8.encode(jsonString)) - ), + ByteData.sublistView(utf8.encode(jsonString)), (ByteData? reply) { exited.complete(reply); }); diff --git a/testing/dart/assets_test.dart b/testing/dart/assets_test.dart index 21e0c7635a685..84a5d307fa86e 100644 --- a/testing/dart/assets_test.dart +++ b/testing/dart/assets_test.dart @@ -68,7 +68,7 @@ void main() { test('Tester can still load through dart:ui', () async { /// Manually load font asset through dart. - final Uint8List encoded = utf8.encoder.convert(Uri(path: Uri.encodeFull('Roboto-Medium.ttf')).path); + final Uint8List encoded = utf8.encode(Uri(path: Uri.encodeFull('Roboto-Medium.ttf')).path); final Completer result = Completer(); PlatformDispatcher.instance.sendPlatformMessage('flutter/assets', encoded.buffer.asByteData(), (ByteData? data) { result.complete(data!.buffer.asUint8List()); diff --git a/testing/dart/channel_buffers_test.dart b/testing/dart/channel_buffers_test.dart index 906c3c57b1127..500d805f753d1 100644 --- a/testing/dart/channel_buffers_test.dart +++ b/testing/dart/channel_buffers_test.dart @@ -12,7 +12,7 @@ import 'dart:ui' as ui; import 'package:litetest/litetest.dart'; ByteData _makeByteData(String str) { - final Uint8List list = const Utf8Encoder().convert(str); + final Uint8List list = utf8.encode(str); final ByteBuffer buffer = list.buffer; return ByteData.view(buffer); } diff --git a/testing/scenario_app/lib/main.dart b/testing/scenario_app/lib/main.dart index b7e69ad119292..5e76f1d7306bf 100644 --- a/testing/scenario_app/lib/main.dart +++ b/testing/scenario_app/lib/main.dart @@ -56,7 +56,7 @@ void _handleDriverMessage(ByteData? data, PlatformMessageResponseCallback? callb Future _handleWriteTimelineMessage(ByteData? data, PlatformMessageResponseCallback? callback) async { final String timelineData = await _getTimelineData(); - callback!(Uint8List.fromList(utf8.encode(timelineData)).buffer.asByteData()); + callback!(ByteData.sublistView(utf8.encode(timelineData))); } Future _getTimelineData() async { diff --git a/testing/scenario_app/lib/src/channel_util.dart b/testing/scenario_app/lib/src/channel_util.dart index bc906f3129b73..ee2cfda304e13 100644 --- a/testing/scenario_app/lib/src/channel_util.dart +++ b/testing/scenario_app/lib/src/channel_util.dart @@ -35,7 +35,7 @@ void sendJsonMessage({ channel, // This recreates a combination of OptionalMethodChannel, JSONMethodCodec, // and _DefaultBinaryMessenger in the framework. - utf8.encoder.convert( + utf8.encode( const JsonCodec().encode(json) ).buffer.asByteData(), callback, From 5e7194a085aa29ccd616d06a0b3b6a023a522887 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 08:31:31 -0400 Subject: [PATCH 052/211] Roll Skia from 8192de1efc1b to 7990401d716a (1 revision) (#43678) https://skia.googlesource.com/skia.git/+log/8192de1efc1b..7990401d716a 2023-07-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from 845e8105edb3 to e8bb3adbe077 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 0c861b2f7eed7..a51ec506a6c61 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '8192de1efc1b2c58d43e36e3e9878011738cee29', + 'skia_revision': '7990401d716ad7217f2cfc4f3bb0afba0df33a7e', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 9017ec1c7d083c35a0d8bcbbbee78596cd2a20e2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 10:20:07 -0400 Subject: [PATCH 053/211] Roll Dart SDK from 8e4eac435b49 to 3701605e0abf (1 revision) (#43679) https://dart.googlesource.com/sdk.git/+log/8e4eac435b49..3701605e0abf 2023-07-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-311.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 24 ++++++++++++------------ ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/DEPS b/DEPS index a51ec506a6c61..5734cc36bda0e 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '8e4eac435b49533699fc7530f7151d48039abc7a', + 'dart_revision': '3701605e0abfa190b4d5d0993d984a53e2c2dbdb', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -67,10 +67,10 @@ vars = { 'dart_libprotobuf_rev': '24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb', 'dart_perfetto_rev': 'b8da07095979310818f0efde2ef3c69ea70d62c5', 'dart_protobuf_gn_rev': 'ca669f79945418f6229e4fef89b666b2a88cbb10', - 'dart_protobuf_rev': 'a912f76df9e00d789baccf25b12fcb5d19ac14be', + 'dart_protobuf_rev': 'd9e8a31d0e4124130fc494b6bdb66e19dbd4770d', 'dart_pub_rev': '42819a1e10f803eb7f6296692c5a976e1c647360', 'dart_root_certificates_rev': '692f6d6488af68e0121317a9c2c9eb393eb0ee50', - 'dart_tools_rev': 'af38b2bd26b45353a4ef624ccfd8adfcd6d0f983', + 'dart_tools_rev': '765701d65ee530782f9ed69a9c5885c921d7e232', 'dart_watcher_rev': '7457413060ed7403b90b01533a61bd959932122e', 'dart_webdev_rev': '5081dff0952eb7163f98a508d7b2d976c1573c55', 'dart_webkit_inspection_protocol_rev': '39a3c297ff573635e7936b015ce4f3466e4739d6', @@ -371,7 +371,7 @@ deps = { Var('dart_git') + '/dart_style.git@2956b1a705953f880a5dae9d3a0969df0fc45e99', 'src/third_party/dart/third_party/pkg/dartdoc': - Var('dart_git') + '/dartdoc.git@2522559623bdbaf471d09b3c9d77bd378d70d6d2', + Var('dart_git') + '/dartdoc.git@d716fa363b36d4ae54fe236501dc2d6689193223', 'src/third_party/dart/third_party/pkg/ffi': Var('dart_git') + '/ffi.git@f01dfca0b3c9a63155bfb86aae12be982571a860', @@ -389,7 +389,7 @@ deps = { Var('dart_git') + '/html.git@4060496b0443451c38f8b789db2e44c0d7966171', 'src/third_party/dart/third_party/pkg/http': - Var('dart_git') + '/http.git@c148a3acbef72a4a507be46c0e62894c616e8702', + Var('dart_git') + '/http.git@b2067710f88980fc0fee43ec3380bce089f001db', 'src/third_party/dart/third_party/pkg/http_multi_server': Var('dart_git') + '/http_multi_server.git@aa128cfaf6ef1c9c1ace962ca2dcf6e5dddad441', @@ -404,16 +404,16 @@ deps = { Var('dart_git') + '/json_rpc_2.git@509f71eef90ec5afb5486b69dab7fed97b9f1eef', 'src/third_party/dart/third_party/pkg/leak_tracker': - Var('dart_git') + '/leak_tracker.git@85bd7fb23bfdfdcc66390e8d6ae81aafd65fe51e', + Var('dart_git') + '/leak_tracker.git@56752316847e0ddd023650d35a9c7a5da1581d96', 'src/third_party/dart/third_party/pkg/linter': - Var('dart_git') + '/linter.git@655de5d0dc30cdd1df9ce4cd16bd7489106d987f', + Var('dart_git') + '/linter.git@aed089e45c35221ce2b82f3757132031f0344b8b', 'src/third_party/dart/third_party/pkg/logging': Var('dart_git') + '/logging.git@521498757ed3eeae151c2d4796404e8947baa04c', 'src/third_party/dart/third_party/pkg/markdown': - Var('dart_git') + '/markdown.git@b4bdde2eb7de89d94e69f3bad37faba5ba95aaad', + Var('dart_git') + '/markdown.git@ee4e1b36f21a6815385b157f8fff12af28bdcf9a', 'src/third_party/dart/third_party/pkg/matcher': Var('dart_git') + '/matcher.git@ce8f40934c90e12992071172795b3bca29fac295', @@ -422,10 +422,10 @@ deps = { Var('dart_git') + '/mime.git@bdb66bdd354156280bddc30e2d322a4ad355f671', 'src/third_party/dart/third_party/pkg/mockito': - Var('dart_git') + '/mockito.git@451f756fe12a32d2a943db80124b522ecbd557af', + Var('dart_git') + '/mockito.git@ffbbb4ce8057fc5f793cc3e2fd635f0903fee3a3', 'src/third_party/dart/third_party/pkg/native': - Var('dart_git') + '/native.git@1e89ed99e344fde0226ff472d290dd9fd0998d16', + Var('dart_git') + '/native.git@acad39612a2575ecc46c80ffad52157d7b8baae4', 'src/third_party/dart/third_party/pkg/package_config': Var('dart_git') + '/package_config.git@be0c4411cb7607abe3fd531c9653b0ba53c87c0f', @@ -473,7 +473,7 @@ deps = { Var('dart_git') + '/term_glyph.git@423700a3c019dc67f93d2bd6578016a1402506f7', 'src/third_party/dart/third_party/pkg/test': - Var('dart_git') + '/test.git@3429712b44b9c6222437312601044c44dc6f5e4e', + Var('dart_git') + '/test.git@a92b5bb3ffea95ad1d1f77f6d5a07c3ef4ee2139', 'src/third_party/dart/third_party/pkg/test_reflective_loader': Var('dart_git') + '/test_reflective_loader.git@0bfaad91ed308ce9da11b48395c8210d7542c16b', @@ -506,7 +506,7 @@ deps = { Var('dart_git') + '/yaml_edit.git' + '@' + Var('dart_yaml_edit_rev'), 'src/third_party/dart/tools/sdks/dart-sdk': - {'dep_type': 'cipd', 'packages': [{'package': 'dart/dart-sdk/${{platform}}', 'version': 'version:3.1.0-155.0.dev'}]}, + {'dep_type': 'cipd', 'packages': [{'package': 'dart/dart-sdk/${{platform}}', 'version': 'version:3.1.0-298.0.dev'}]}, # WARNING: end of dart dependencies list that is cleaned up automatically - see create_updated_flutter_deps.py. diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 0b7af36e0e432..3e3af2eb51d08 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 92da6c802dde52d98bba3a59e106b667 +Signature: a8f08398e316fc3484d369e3d45c6192 ==================================================================================================== LIBRARY: angle From dccfd019dc3d90a33fe015c3e62e97436b263a40 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 10:41:10 -0400 Subject: [PATCH 054/211] Roll Skia from 7990401d716a to b4b9c76206f3 (1 revision) (#43681) https://skia.googlesource.com/skia.git/+log/7990401d716a..b4b9c76206f3 2023-07-14 johnstiles@google.com Reland "Fix swizzled compound assignment with lvalue side-effects in Metal." If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5734cc36bda0e..8b8f0ebff2d27 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '7990401d716ad7217f2cfc4f3bb0afba0df33a7e', + 'skia_revision': 'b4b9c76206f34ad613f587250895c9f5fc1bd32a', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a6429582e9e52..20272fcca89e2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: af939d0fdca22e8a636d6adc43245eb9 +Signature: 44157e800c284870a4fbc98737cc0102 ==================================================================================================== LIBRARY: etc1 From 3e8f30dc3164a06b5f43e5802adc3e144bd5a398 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 12:12:18 -0400 Subject: [PATCH 055/211] Roll Fuchsia Mac SDK from J0oxaSt651gKgDreU... to Z-1lzZAOYHvVrdjQ8... (#43685) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 8b8f0ebff2d27..efecb0f670785 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'J0oxaSt651gKgDreUUVzse6-xsrejysSrYuIslJ3BZ0C' + 'version': 'Z-1lzZAOYHvVrdjQ8BvAyXjjPHDVMAdLAAxqb4caxGQC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From a7f00abe79a359353fcd6af8a5023554703dcbe4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 12:45:53 -0400 Subject: [PATCH 056/211] Roll Skia from b4b9c76206f3 to de6099518f90 (4 revisions) (#43687) https://skia.googlesource.com/skia.git/+log/b4b9c76206f3..de6099518f90 2023-07-14 robertphillips@google.com Roll Vulkan Memory Allocator to v3.0.1 2023-07-14 johnstiles@google.com Fix format specifier for backend enum. 2023-07-14 jvanverth@google.com [graphite] Add Vulkan semaphore support. 2023-07-14 kjlubick@google.com Move most of the Ganesh-specific logic out of SkSpecialImage.cpp If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index efecb0f670785..4be4954920530 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b4b9c76206f34ad613f587250895c9f5fc1bd32a', + 'skia_revision': 'de6099518f9082e0fd22f58c9e3c58c7e87d1870', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 20272fcca89e2..b65ce914751ea 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 44157e800c284870a4fbc98737cc0102 +Signature: f0f19e777256238738db52d1d9ed9787 ==================================================================================================== LIBRARY: etc1 @@ -6122,6 +6122,7 @@ ORIGIN: ../../../third_party/skia/src/gpu/ganesh/gl/GrGLAssembleGLInterfaceAutog ORIGIN: ../../../third_party/skia/src/gpu/ganesh/gl/GrGLAssembleHelpers.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/gl/GrGLAssembleWebGLInterfaceAutogen.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/gl/GrGLTypesPriv.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/src/gpu/ganesh/image/SkSpecialImage_Ganesh.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/mock/GrMockCaps.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/mock/GrMockTypes.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/utils/SkShaderUtils.cpp + ../../../third_party/skia/LICENSE @@ -6181,6 +6182,7 @@ FILE: ../../../third_party/skia/src/gpu/ganesh/gl/GrGLAssembleGLInterfaceAutogen FILE: ../../../third_party/skia/src/gpu/ganesh/gl/GrGLAssembleHelpers.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/gl/GrGLAssembleWebGLInterfaceAutogen.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/gl/GrGLTypesPriv.cpp +FILE: ../../../third_party/skia/src/gpu/ganesh/image/SkSpecialImage_Ganesh.h FILE: ../../../third_party/skia/src/gpu/ganesh/mock/GrMockCaps.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/mock/GrMockTypes.cpp FILE: ../../../third_party/skia/src/utils/SkShaderUtils.cpp @@ -8283,6 +8285,7 @@ ORIGIN: ../../../third_party/skia/src/gpu/graphite/Sampler.h + ../../../third_pa ORIGIN: ../../../third_party/skia/src/gpu/graphite/ShaderCodeDictionary.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/ShaderCodeDictionary.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/SpecialImage_Graphite.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/src/gpu/graphite/SpecialImage_Graphite.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/SynchronizeToCpuTask.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/SynchronizeToCpuTask.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/TextureProxyView.h + ../../../third_party/skia/LICENSE @@ -8503,6 +8506,7 @@ FILE: ../../../third_party/skia/src/gpu/graphite/Sampler.h FILE: ../../../third_party/skia/src/gpu/graphite/ShaderCodeDictionary.cpp FILE: ../../../third_party/skia/src/gpu/graphite/ShaderCodeDictionary.h FILE: ../../../third_party/skia/src/gpu/graphite/SpecialImage_Graphite.cpp +FILE: ../../../third_party/skia/src/gpu/graphite/SpecialImage_Graphite.h FILE: ../../../third_party/skia/src/gpu/graphite/SynchronizeToCpuTask.cpp FILE: ../../../third_party/skia/src/gpu/graphite/SynchronizeToCpuTask.h FILE: ../../../third_party/skia/src/gpu/graphite/TextureProxyView.h @@ -8981,6 +8985,7 @@ ORIGIN: ../../../third_party/skia/src/gpu/ganesh/image/SkImage_LazyTexture.cpp + ORIGIN: ../../../third_party/skia/src/gpu/ganesh/image/SkImage_LazyTexture.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/image/SkImage_RasterPinnable.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/image/SkImage_RasterPinnable.h + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/src/gpu/ganesh/image/SkSpecialImage_Ganesh.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/surface/SkSurface_AndroidFactories.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/AtlasProvider.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/graphite/AtlasProvider.h + ../../../third_party/skia/LICENSE @@ -9182,6 +9187,7 @@ FILE: ../../../third_party/skia/src/gpu/ganesh/image/SkImage_LazyTexture.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/image/SkImage_LazyTexture.h FILE: ../../../third_party/skia/src/gpu/ganesh/image/SkImage_RasterPinnable.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/image/SkImage_RasterPinnable.h +FILE: ../../../third_party/skia/src/gpu/ganesh/image/SkSpecialImage_Ganesh.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/surface/SkSurface_AndroidFactories.cpp FILE: ../../../third_party/skia/src/gpu/graphite/AtlasProvider.cpp FILE: ../../../third_party/skia/src/gpu/graphite/AtlasProvider.h From 4f6728ca19dda0a1bd3799376140132abcb6faa4 Mon Sep 17 00:00:00 2001 From: Jim Graham Date: Fri, 14 Jul 2023 10:14:15 -0700 Subject: [PATCH 057/211] Fix DisplayListMatrixClipTracker handling of diff clips (#43664) Fixes root cause for https://github.com/flutter/flutter/issues/129816 Logic for reducing the cull_rect for a diff clip had a number of errors. The new test should cover all cases. --- display_list/utils/dl_matrix_clip_tracker.cc | 27 +++-- .../utils/dl_matrix_clip_tracker_unittests.cc | 101 ++++++++++++++++++ 2 files changed, 122 insertions(+), 6 deletions(-) diff --git a/display_list/utils/dl_matrix_clip_tracker.cc b/display_list/utils/dl_matrix_clip_tracker.cc index 31ba6c8ad4e45..69164b803ef70 100644 --- a/display_list/utils/dl_matrix_clip_tracker.cc +++ b/display_list/utils/dl_matrix_clip_tracker.cc @@ -310,12 +310,12 @@ void DisplayListMatrixClipTracker::Data::clipBounds(const SkRect& clip, break; } case ClipOp::kDifference: { - if (clip.isEmpty() || !clip.intersects(cull_rect_)) { + if (clip.isEmpty()) { break; } SkRect rect; if (mapRect(clip, &rect)) { - // This technique only works if it is rect -> rect + // This technique only works if the transform is rect -> rect if (is_aa) { SkIRect rounded; rect.round(&rounded); @@ -324,13 +324,22 @@ void DisplayListMatrixClipTracker::Data::clipBounds(const SkRect& clip, } rect.set(rounded); } + if (!rect.intersects(cull_rect_)) { + break; + } if (rect.fLeft <= cull_rect_.fLeft && rect.fRight >= cull_rect_.fRight) { // bounds spans entire width of cull_rect_ // therefore we can slice off a top or bottom // edge of the cull_rect_. - SkScalar top = std::max(rect.fBottom, cull_rect_.fTop); - SkScalar btm = std::min(rect.fTop, cull_rect_.fBottom); + SkScalar top = cull_rect_.fTop; + SkScalar btm = cull_rect_.fBottom; + if (rect.fTop <= top) { + top = rect.fBottom; + } + if (rect.fBottom >= btm) { + btm = rect.fTop; + } if (top < btm) { cull_rect_.fTop = top; cull_rect_.fBottom = btm; @@ -342,8 +351,14 @@ void DisplayListMatrixClipTracker::Data::clipBounds(const SkRect& clip, // bounds spans entire height of cull_rect_ // therefore we can slice off a left or right // edge of the cull_rect_. - SkScalar lft = std::max(rect.fRight, cull_rect_.fLeft); - SkScalar rgt = std::min(rect.fLeft, cull_rect_.fRight); + SkScalar lft = cull_rect_.fLeft; + SkScalar rgt = cull_rect_.fRight; + if (rect.fLeft <= lft) { + lft = rect.fRight; + } + if (rect.fRight >= rgt) { + rgt = rect.fLeft; + } if (lft < rgt) { cull_rect_.fLeft = lft; cull_rect_.fRight = rgt; diff --git a/display_list/utils/dl_matrix_clip_tracker_unittests.cc b/display_list/utils/dl_matrix_clip_tracker_unittests.cc index 2ab3fde7ff1e1..5cfda29314816 100644 --- a/display_list/utils/dl_matrix_clip_tracker_unittests.cc +++ b/display_list/utils/dl_matrix_clip_tracker_unittests.cc @@ -323,6 +323,107 @@ TEST(DisplayListMatrixClipTracker, TransformFullPerspectiveUsing4x4Matrix) { ASSERT_EQ(tracker2.matrix_4x4(), transformed_m44); } +TEST(DisplayListMatrixClipTracker, ClipDifference) { + SkRect cull_rect = SkRect::MakeLTRB(20, 20, 40, 40); + + auto non_reducing = [&cull_rect](const SkRect& diff_rect, + const std::string& label) { + { + DisplayListMatrixClipTracker tracker(cull_rect, SkMatrix::I()); + tracker.clipRect(diff_rect, DlCanvas::ClipOp::kDifference, false); + ASSERT_EQ(tracker.device_cull_rect(), cull_rect) << label; + } + { + DisplayListMatrixClipTracker tracker(cull_rect, SkMatrix::I()); + const SkRRect diff_rrect = SkRRect::MakeRect(diff_rect); + tracker.clipRRect(diff_rrect, DlCanvas::ClipOp::kDifference, false); + ASSERT_EQ(tracker.device_cull_rect(), cull_rect) << label << " (RRect)"; + } + { + DisplayListMatrixClipTracker tracker(cull_rect, SkMatrix::I()); + const SkPath diff_path = SkPath().addRect(diff_rect); + tracker.clipPath(diff_path, DlCanvas::ClipOp::kDifference, false); + ASSERT_EQ(tracker.device_cull_rect(), cull_rect) << label << " (RRect)"; + } + }; + + auto reducing = [&cull_rect](const SkRect& diff_rect, + const SkRect& result_rect, + const std::string& label) { + ASSERT_TRUE(result_rect.isEmpty() || cull_rect.contains(result_rect)); + { + DisplayListMatrixClipTracker tracker(cull_rect, SkMatrix::I()); + tracker.clipRect(diff_rect, DlCanvas::ClipOp::kDifference, false); + ASSERT_EQ(tracker.device_cull_rect(), result_rect) << label; + } + { + DisplayListMatrixClipTracker tracker(cull_rect, SkMatrix::I()); + const SkRRect diff_rrect = SkRRect::MakeRect(diff_rect); + tracker.clipRRect(diff_rrect, DlCanvas::ClipOp::kDifference, false); + ASSERT_EQ(tracker.device_cull_rect(), result_rect) << label << " (RRect)"; + } + { + DisplayListMatrixClipTracker tracker(cull_rect, SkMatrix::I()); + const SkPath diff_path = SkPath().addRect(diff_rect); + tracker.clipPath(diff_path, DlCanvas::ClipOp::kDifference, false); + ASSERT_EQ(tracker.device_cull_rect(), result_rect) << label << " (RRect)"; + } + }; + + // Skim the corners and edge + non_reducing(SkRect::MakeLTRB(10, 10, 20, 20), "outside UL corner"); + non_reducing(SkRect::MakeLTRB(20, 10, 40, 20), "Above"); + non_reducing(SkRect::MakeLTRB(40, 10, 50, 20), "outside UR corner"); + non_reducing(SkRect::MakeLTRB(40, 20, 50, 40), "Right"); + non_reducing(SkRect::MakeLTRB(40, 40, 50, 50), "outside LR corner"); + non_reducing(SkRect::MakeLTRB(20, 40, 40, 50), "Below"); + non_reducing(SkRect::MakeLTRB(10, 40, 20, 50), "outside LR corner"); + non_reducing(SkRect::MakeLTRB(10, 20, 20, 40), "Left"); + + // Overlap corners + non_reducing(SkRect::MakeLTRB(15, 15, 25, 25), "covering UL corner"); + non_reducing(SkRect::MakeLTRB(35, 15, 45, 25), "covering UR corner"); + non_reducing(SkRect::MakeLTRB(35, 35, 45, 45), "covering LR corner"); + non_reducing(SkRect::MakeLTRB(15, 35, 25, 45), "covering LL corner"); + + // Overlap edges, but not across an entire side + non_reducing(SkRect::MakeLTRB(20, 15, 39, 25), "Top edge left-biased"); + non_reducing(SkRect::MakeLTRB(21, 15, 40, 25), "Top edge, right biased"); + non_reducing(SkRect::MakeLTRB(35, 20, 45, 39), "Right edge, top-biased"); + non_reducing(SkRect::MakeLTRB(35, 21, 45, 40), "Right edge, bottom-biased"); + non_reducing(SkRect::MakeLTRB(20, 35, 39, 45), "Bottom edge, left-biased"); + non_reducing(SkRect::MakeLTRB(21, 35, 40, 45), "Bottom edge, right-biased"); + non_reducing(SkRect::MakeLTRB(15, 20, 25, 39), "Left edge, top-biased"); + non_reducing(SkRect::MakeLTRB(15, 21, 25, 40), "Left edge, bottom-biased"); + + // Slice all the way through the middle + non_reducing(SkRect::MakeLTRB(25, 15, 35, 45), "Vertical interior slice"); + non_reducing(SkRect::MakeLTRB(15, 25, 45, 35), "Horizontal interior slice"); + + // Slice off each edge + reducing(SkRect::MakeLTRB(20, 15, 40, 25), // + SkRect::MakeLTRB(20, 25, 40, 40), // + "Slice off top"); + reducing(SkRect::MakeLTRB(35, 20, 45, 40), // + SkRect::MakeLTRB(20, 20, 35, 40), // + "Slice off right"); + reducing(SkRect::MakeLTRB(20, 35, 40, 45), // + SkRect::MakeLTRB(20, 20, 40, 35), // + "Slice off bottom"); + reducing(SkRect::MakeLTRB(15, 20, 25, 40), // + SkRect::MakeLTRB(25, 20, 40, 40), // + "Slice off left"); + + // cull rect contains diff rect + non_reducing(SkRect::MakeLTRB(21, 21, 39, 39), "Contained, non-covering"); + + // cull rect equals diff rect + reducing(cull_rect, SkRect::MakeEmpty(), "Perfectly covering"); + + // diff rect contains cull rect + reducing(SkRect::MakeLTRB(15, 15, 45, 45), SkRect::MakeEmpty(), "Smothering"); +} + TEST(DisplayListMatrixClipTracker, ClipPathWithInvertFillType) { SkRect cull_rect = SkRect::MakeLTRB(0, 0, 100.0, 100.0); DisplayListMatrixClipTracker builder(cull_rect, SkMatrix::I()); From aa612dca032af684d3ae6829a434675469779447 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 13:23:06 -0400 Subject: [PATCH 058/211] Roll Skia from de6099518f90 to c14fda1cb615 (1 revision) (#43689) https://skia.googlesource.com/skia.git/+log/de6099518f90..c14fda1cb615 2023-07-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from e1b8f324086e to fcbe6bbcf4a8 (4 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4be4954920530..0612f90e8f4f0 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'de6099518f9082e0fd22f58c9e3c58c7e87d1870', + 'skia_revision': 'c14fda1cb6159a0f928e466e85efe104f8af6e73', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From f03ebc6622822d0f2a68175db4db6304441b7462 Mon Sep 17 00:00:00 2001 From: Kevin Lubick Date: Fri, 14 Jul 2023 13:29:39 -0400 Subject: [PATCH 059/211] Add missing Skia #includes (#43680) When trying to land https://skia-review.googlesource.com/c/skia/+/721978, I ran into some issues where Flutter was transitively depending on some Skia headers. This adds those explicitly to the necessary files. I noticed a few of these were missing from dl_sk_types.h (i.e. they were referenced in dl_sk_conversions.h, but not included in dl_sk_types.h), so I added them in. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [ ] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See [testing the engine] for instructions on writing and running engine tests. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat --- display_list/display_list_unittests.cc | 1 + display_list/effects/dl_image_filter_unittests.cc | 2 ++ display_list/skia/dl_sk_canvas.cc | 2 ++ display_list/skia/dl_sk_conversions.cc | 1 + display_list/skia/dl_sk_conversions_unittests.cc | 1 + display_list/skia/dl_sk_paint_dispatcher.cc | 2 ++ display_list/skia/dl_sk_types.h | 4 ++++ 7 files changed, 13 insertions(+) diff --git a/display_list/display_list_unittests.cc b/display_list/display_list_unittests.cc index 28f3c005d488a..4c16f6e4438dc 100644 --- a/display_list/display_list_unittests.cc +++ b/display_list/display_list_unittests.cc @@ -22,6 +22,7 @@ #include "flutter/testing/testing.h" #include "third_party/skia/include/core/SkBBHFactory.h" +#include "third_party/skia/include/core/SkColorFilter.h" #include "third_party/skia/include/core/SkPictureRecorder.h" #include "third_party/skia/include/core/SkSurface.h" diff --git a/display_list/effects/dl_image_filter_unittests.cc b/display_list/effects/dl_image_filter_unittests.cc index aa5e2d220326a..422cb28dbb454 100644 --- a/display_list/effects/dl_image_filter_unittests.cc +++ b/display_list/effects/dl_image_filter_unittests.cc @@ -12,6 +12,8 @@ #include "flutter/display_list/utils/dl_comparable.h" #include "gtest/gtest.h" +#include "third_party/skia/include/core/SkBlendMode.h" +#include "third_party/skia/include/core/SkColorFilter.h" #include "third_party/skia/include/core/SkSamplingOptions.h" #include "third_party/skia/include/effects/SkImageFilters.h" diff --git a/display_list/skia/dl_sk_canvas.cc b/display_list/skia/dl_sk_canvas.cc index 7f73e0515cf6e..3a5cb3bdc7736 100644 --- a/display_list/skia/dl_sk_canvas.cc +++ b/display_list/skia/dl_sk_canvas.cc @@ -8,6 +8,8 @@ #include "flutter/display_list/skia/dl_sk_dispatcher.h" #include "flutter/fml/trace_event.h" +#include "third_party/skia/include/core/SkColorFilter.h" + namespace flutter { // clang-format off diff --git a/display_list/skia/dl_sk_conversions.cc b/display_list/skia/dl_sk_conversions.cc index 5c3a1263fe071..4a4264269fd1f 100644 --- a/display_list/skia/dl_sk_conversions.cc +++ b/display_list/skia/dl_sk_conversions.cc @@ -4,6 +4,7 @@ #include "flutter/display_list/skia/dl_sk_conversions.h" +#include "third_party/skia/include/core/SkColorFilter.h" #include "third_party/skia/include/effects/SkGradientShader.h" #include "third_party/skia/include/effects/SkImageFilters.h" diff --git a/display_list/skia/dl_sk_conversions_unittests.cc b/display_list/skia/dl_sk_conversions_unittests.cc index 4a9b56fd76b1a..dae99690c91d5 100644 --- a/display_list/skia/dl_sk_conversions_unittests.cc +++ b/display_list/skia/dl_sk_conversions_unittests.cc @@ -11,6 +11,7 @@ #include "flutter/display_list/dl_vertices.h" #include "gtest/gtest.h" #include "third_party/skia/include/core/SkSamplingOptions.h" +#include "third_party/skia/include/core/SkTileMode.h" namespace flutter { namespace testing { diff --git a/display_list/skia/dl_sk_paint_dispatcher.cc b/display_list/skia/dl_sk_paint_dispatcher.cc index 7737e3c7f9830..80970cc9ee14b 100644 --- a/display_list/skia/dl_sk_paint_dispatcher.cc +++ b/display_list/skia/dl_sk_paint_dispatcher.cc @@ -12,6 +12,8 @@ #include "flutter/display_list/skia/dl_sk_conversions.h" #include "flutter/fml/logging.h" +#include "third_party/skia/include/core/SkColorFilter.h" + namespace flutter { // clang-format off diff --git a/display_list/skia/dl_sk_types.h b/display_list/skia/dl_sk_types.h index b8737f5d1d336..bd359b64f5b34 100644 --- a/display_list/skia/dl_sk_types.h +++ b/display_list/skia/dl_sk_types.h @@ -7,8 +7,10 @@ #include "flutter/fml/macros.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "third_party/skia/include/core/SkBlendMode.h" #include "third_party/skia/include/core/SkBlurTypes.h" #include "third_party/skia/include/core/SkCanvas.h" +#include "third_party/skia/include/core/SkClipOp.h" #include "third_party/skia/include/core/SkColorFilter.h" #include "third_party/skia/include/core/SkImage.h" #include "third_party/skia/include/core/SkImageFilter.h" @@ -21,8 +23,10 @@ #include "third_party/skia/include/core/SkRRect.h" #include "third_party/skia/include/core/SkRSXform.h" #include "third_party/skia/include/core/SkRect.h" +#include "third_party/skia/include/core/SkSamplingOptions.h" #include "third_party/skia/include/core/SkShader.h" #include "third_party/skia/include/core/SkTextBlob.h" +#include "third_party/skia/include/core/SkTileMode.h" #include "third_party/skia/include/core/SkVertices.h" #include "third_party/skia/include/effects/SkCornerPathEffect.h" #include "third_party/skia/include/effects/SkDashPathEffect.h" From 749c12225f5ab2f948300549ff11623878a6dc6b Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Fri, 14 Jul 2023 10:44:52 -0700 Subject: [PATCH 060/211] More fixes for the new clang-tidy roll on iOS targets (#43688) See https://github.com/flutter/engine/pull/43661 --- .../darwin/ios/framework/Source/FlutterAppDelegate.mm | 2 +- .../platform/darwin/ios/framework/Source/FlutterEngine.mm | 2 +- .../darwin/ios/framework/Source/accessibility_bridge.mm | 3 ++- shell/platform/darwin/ios/platform_view_ios.mm | 7 +++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm index 741a0bf626cbf..9b572e9de0f10 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm @@ -153,7 +153,7 @@ - (BOOL)openURL:(NSURL*)url { [flutterViewController.engine.navigationChannel invokeMethod:@"pushRouteInformation" arguments:@{ - @"location" : url.absoluteString, + @"location" : url.absoluteString ?: [NSNull null], }]; } }]; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 8f67ec1b8b1db..e69b9157b72c8 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -683,7 +683,7 @@ - (void)setupChannels { NSString* format = [NSString stringWithUTF8String:screenshot.format.c_str()]; NSNumber* width = @(screenshot.frame_size.fWidth); NSNumber* height = @(screenshot.frame_size.fHeight); - return result(@[ width, height, format, data ]); + return result(@[ width, height, format ?: [NSNull null], data ]); }]; } diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm index 2121a2ac69586..bf19109e92d07 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm @@ -161,7 +161,8 @@ void PostAccessibilityNotification(UIAccessibilityNotifications notification, if (root) { if (!view_controller_.view.accessibilityElements) { - view_controller_.view.accessibilityElements = @[ [root accessibilityContainer] ]; + view_controller_.view.accessibilityElements = + @[ [root accessibilityContainer] ?: [NSNull null] ]; } NSMutableArray* newRoutes = [[[NSMutableArray alloc] init] autorelease]; [root collectRoutes:newRoutes]; diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index f600f6c0839db..66636fe084680 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -223,9 +223,12 @@ new PlatformMessageHandlerIos(task_runners.GetPlatformTaskRunner())) {} [NSMutableArray arrayWithCapacity:supported_locale_data.size() / localeDataLength]; for (size_t i = 0; i < supported_locale_data.size(); i += localeDataLength) { NSDictionary* dict = @{ - NSLocaleLanguageCode : [NSString stringWithUTF8String:supported_locale_data[i].c_str()], - NSLocaleCountryCode : [NSString stringWithUTF8String:supported_locale_data[i + 1].c_str()], + NSLocaleLanguageCode : [NSString stringWithUTF8String:supported_locale_data[i].c_str()] + ?: @"", + NSLocaleCountryCode : [NSString stringWithUTF8String:supported_locale_data[i + 1].c_str()] + ?: @"", NSLocaleScriptCode : [NSString stringWithUTF8String:supported_locale_data[i + 2].c_str()] + ?: @"" }; [supported_locale_identifiers addObject:[NSLocale localeIdentifierFromComponents:dict]]; } From 9d578e6aa63a900b7e71f8e0c52b8bd9958ea6de Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 14:12:05 -0400 Subject: [PATCH 061/211] Roll Dart SDK from 3701605e0abf to d1fcadf22aad (1 revision) (#43692) https://dart.googlesource.com/sdk.git/+log/3701605e0abf..d1fcadf22aad 2023-07-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-312.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 0612f90e8f4f0..aaddece4e819b 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '3701605e0abfa190b4d5d0993d984a53e2c2dbdb', + 'dart_revision': 'd1fcadf22aad99ab24ef432eada2517b4ccf9696', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 872fe34cb8690e30883ca0130f335937658d3b89 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Fri, 14 Jul 2023 11:43:02 -0700 Subject: [PATCH 062/211] [Impeller] remove requests for dedicated allocations. (#43686) This change never improved performance (in fact I think it regressed it slightly), so lets revert it and see if things change. --- impeller/renderer/backend/vulkan/allocator_vk.cc | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/impeller/renderer/backend/vulkan/allocator_vk.cc b/impeller/renderer/backend/vulkan/allocator_vk.cc index 3adce1b42452a..34191ba66bd9d 100644 --- a/impeller/renderer/backend/vulkan/allocator_vk.cc +++ b/impeller/renderer/backend/vulkan/allocator_vk.cc @@ -11,7 +11,6 @@ #include "impeller/core/formats.h" #include "impeller/renderer/backend/vulkan/device_buffer_vk.h" #include "impeller/renderer/backend/vulkan/formats_vk.h" -#include "impeller/renderer/backend/vulkan/limits_vk.h" #include "impeller/renderer/backend/vulkan/texture_vk.h" namespace impeller { @@ -264,19 +263,12 @@ ToVKTextureMemoryPropertyFlags(StorageMode mode, FML_UNREACHABLE(); } -static VmaAllocationCreateFlags ToVmaAllocationCreateFlags(StorageMode mode, - size_t size) { +static VmaAllocationCreateFlags ToVmaAllocationCreateFlags(StorageMode mode) { VmaAllocationCreateFlags flags = 0; switch (mode) { case StorageMode::kHostVisible: - if (size >= kImageSizeThresholdForDedicatedMemoryAllocation) { - flags |= VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; - } return flags; case StorageMode::kDevicePrivate: - if (size >= kImageSizeThresholdForDedicatedMemoryAllocation) { - flags |= VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; - } return flags; case StorageMode::kDeviceTransient: return flags; @@ -318,8 +310,7 @@ class AllocatedTextureSourceVK final : public TextureSourceVK { alloc_nfo.preferredFlags = static_cast(ToVKTextureMemoryPropertyFlags( desc.storage_mode, supports_memoryless_textures)); - alloc_nfo.flags = ToVmaAllocationCreateFlags( - desc.storage_mode, desc.GetByteSizeOfBaseMipLevel()); + alloc_nfo.flags = ToVmaAllocationCreateFlags(desc.storage_mode); auto create_info_native = static_cast(image_info); From cf9046ff8ac0464e1f1582c491fb1cb0d2325edf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 16:33:19 -0400 Subject: [PATCH 063/211] Roll Skia from c14fda1cb615 to 315c7f08c731 (3 revisions) (#43700) https://skia.googlesource.com/skia.git/+log/c14fda1cb615..315c7f08c731 2023-07-14 johnstiles@google.com Add RippleShader runtime shader to our test corpus. 2023-07-14 michaelludwig@google.com [graphite] Fix bounds used to order clip draws 2023-07-14 johnstiles@google.com Another fix for Clang format-specifier warning. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index aaddece4e819b..ce99429e37f73 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'c14fda1cb6159a0f928e466e85efe104f8af6e73', + 'skia_revision': '315c7f08c731f8e950e2224ac6abb4f007c45455', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b65ce914751ea..c096737516aa1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f0f19e777256238738db52d1d9ed9787 +Signature: 47a8c8a70461feb83c26bd105777d45f ==================================================================================================== LIBRARY: etc1 From 29089715233416633beccff15131247f4b80b851 Mon Sep 17 00:00:00 2001 From: Kevin Lubick Date: Fri, 14 Jul 2023 16:34:22 -0400 Subject: [PATCH 064/211] Remove calls to SkCanvas::flush() (#43684) In https://skia-review.googlesource.com/c/skia/+/716476, Skia removed calls to SkCanvas::flush(). This replaces those calls that Flutter was making with what had been going on - calling GrDirectContext::flush() if the canvas was backed by a Ganesh backend. Raster-backed canvases did not need flushing. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [ ] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See [testing the engine] for instructions on writing and running engine tests. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat --- display_list/skia/dl_sk_canvas.cc | 8 +++++++- display_list/testing/dl_rendering_unittests.cc | 1 - lib/ui/painting/image_encoding_impl.h | 5 ++++- shell/common/rasterizer_unittests.cc | 1 - shell/common/snapshot_controller_skia.cc | 5 ++++- shell/gpu/gpu_surface_gl_skia.cc | 4 ++-- shell/platform/fuchsia/flutter/canvas_spy.cc | 2 -- shell/platform/fuchsia/flutter/canvas_spy.h | 3 --- 8 files changed, 17 insertions(+), 12 deletions(-) diff --git a/display_list/skia/dl_sk_canvas.cc b/display_list/skia/dl_sk_canvas.cc index 3a5cb3bdc7736..842f4593035ba 100644 --- a/display_list/skia/dl_sk_canvas.cc +++ b/display_list/skia/dl_sk_canvas.cc @@ -9,6 +9,8 @@ #include "flutter/fml/trace_event.h" #include "third_party/skia/include/core/SkColorFilter.h" +#include "third_party/skia/include/gpu/GrDirectContext.h" +#include "third_party/skia/include/gpu/GrRecordingContext.h" namespace flutter { @@ -374,7 +376,11 @@ void DlSkCanvasAdapter::DrawShadow(const SkPath& path, } void DlSkCanvasAdapter::Flush() { - delegate_->flush(); + auto dContext = GrAsDirectContext(delegate_->recordingContext()); + + if (dContext) { + dContext->flushAndSubmit(); + } } } // namespace flutter diff --git a/display_list/testing/dl_rendering_unittests.cc b/display_list/testing/dl_rendering_unittests.cc index 7a1a95816057d..55afd24d806d6 100644 --- a/display_list/testing/dl_rendering_unittests.cc +++ b/display_list/testing/dl_rendering_unittests.cc @@ -492,7 +492,6 @@ class RenderEnvironment { renderer.Render(canvas, info); canvas->restoreToCount(restore_count); - canvas->flush(); if (GrDirectContext* dContext = GrAsDirectContext(surface->recordingContext())) { dContext->flushAndSubmit(surface, /*syncCpu=*/true); diff --git a/lib/ui/painting/image_encoding_impl.h b/lib/ui/painting/image_encoding_impl.h index d7248e87b96d2..595f8276e4c96 100644 --- a/lib/ui/painting/image_encoding_impl.h +++ b/lib/ui/painting/image_encoding_impl.h @@ -9,6 +9,7 @@ #include "third_party/skia/include/core/SkCanvas.h" #include "third_party/skia/include/core/SkImage.h" #include "third_party/skia/include/core/SkSurface.h" +#include "third_party/skia/include/gpu/GrDirectContext.h" #include "third_party/skia/include/gpu/ganesh/SkSurfaceGanesh.h" namespace flutter { @@ -41,7 +42,9 @@ sk_sp ConvertToRasterUsingResourceContext( } surface->getCanvas()->drawImage(image, 0, 0); - surface->getCanvas()->flush(); + if (resource_context) { + resource_context->flushAndSubmit(); + } auto snapshot = surface->makeImageSnapshot(); diff --git a/shell/common/rasterizer_unittests.cc b/shell/common/rasterizer_unittests.cc index daf36364851b1..92d23c82dc915 100644 --- a/shell/common/rasterizer_unittests.cc +++ b/shell/common/rasterizer_unittests.cc @@ -990,7 +990,6 @@ TEST(RasterizerTest, TeardownFreesResourceCache) { SkPaint paint; sk_surface->getCanvas()->drawPaint(paint); - sk_surface->getCanvas()->flush(); context->flushAndSubmit(true); EXPECT_EQ(context->getResourceCachePurgeableBytes(), 0ul); diff --git a/shell/common/snapshot_controller_skia.cc b/shell/common/snapshot_controller_skia.cc index d39a9003050d4..fe7897f38d178 100644 --- a/shell/common/snapshot_controller_skia.cc +++ b/shell/common/snapshot_controller_skia.cc @@ -23,7 +23,10 @@ sk_sp DrawSnapshot( } draw_callback(surface->getCanvas()); - surface->getCanvas()->flush(); + auto dContext = GrAsDirectContext(surface->recordingContext()); + if (dContext) { + dContext->flushAndSubmit(); + } sk_sp device_snapshot; { diff --git a/shell/gpu/gpu_surface_gl_skia.cc b/shell/gpu/gpu_surface_gl_skia.cc index 8285145b4efd3..9ced169f118af 100644 --- a/shell/gpu/gpu_surface_gl_skia.cc +++ b/shell/gpu/gpu_surface_gl_skia.cc @@ -268,8 +268,8 @@ bool GPUSurfaceGLSkia::PresentSurface(const SurfaceFrame& frame, delegate_->GLContextSetDamageRegion(frame.submit_info().buffer_damage); { - TRACE_EVENT0("flutter", "SkCanvas::Flush"); - onscreen_surface_->getCanvas()->flush(); + TRACE_EVENT0("flutter", "GrDirectContext::flushAndSubmit"); + context_->flushAndSubmit(); } GLPresentInfo present_info = { diff --git a/shell/platform/fuchsia/flutter/canvas_spy.cc b/shell/platform/fuchsia/flutter/canvas_spy.cc index fe45a8fdebb50..75df63a9069eb 100644 --- a/shell/platform/fuchsia/flutter/canvas_spy.cc +++ b/shell/platform/fuchsia/flutter/canvas_spy.cc @@ -267,6 +267,4 @@ void DidDrawCanvas::onDrawEdgeAAImageSet2(const ImageSetEntry set[], did_draw_ = true; } -void DidDrawCanvas::onFlush() {} - } // namespace flutter diff --git a/shell/platform/fuchsia/flutter/canvas_spy.h b/shell/platform/fuchsia/flutter/canvas_spy.h index 629538dd83df2..fa781cbcb3861 100644 --- a/shell/platform/fuchsia/flutter/canvas_spy.h +++ b/shell/platform/fuchsia/flutter/canvas_spy.h @@ -248,9 +248,6 @@ class DidDrawCanvas final : public SkCanvasVirtualEnforcer { const SkPaint*, SrcRectConstraint) override; - // |SkCanvasVirtualEnforcer| - void onFlush() override; - void MarkDrawIfNonTransparentPaint(const SkPaint& paint); FML_DISALLOW_COPY_AND_ASSIGN(DidDrawCanvas); From d94c688d44af82b36d16b5f9cf2ec00916869225 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 17:18:57 -0400 Subject: [PATCH 065/211] Roll Fuchsia Linux SDK from LZPMbHnVPFdbXndcX... to DEENqWMCYI1SMYsYH... (#43702) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ce99429e37f73..1622a7d7b26f6 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'LZPMbHnVPFdbXndcXVTMyrYiv-0ooqPmxW2FSTAilQgC' + 'version': 'DEENqWMCYI1SMYsYHT19t95MMYnCDspQKVWozpxeehQC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 5f20edcec319b..b3cc00c5ac349 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: ff095b3584d7acc96c14cbb91697f3aa +Signature: 22064f8efd7e6d86b07ba4528f20d31b ==================================================================================================== LIBRARY: fuchsia_sdk From 2c8fd18ae11f552c00e4150e656ce81cb0abefbd Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Fri, 14 Jul 2023 14:21:02 -0700 Subject: [PATCH 066/211] [Impeller] defer construction of VkCommandBuffer until encoding begins. (#43605) VkCommandBuffers are allocated out of a thread local VkCommandPool. THis command buffer is only safe to use on the thread which allocates it. We'd like to attempt concurrent encoding on Vulkan like we've done for iOS, which means the worker threads will be accessing the VkCommandBuffer. In order for this to be safe, the VkCommandBuffer must be allocated out of a VkCommandPool from that worker thread. As a simple fix, we make the Impeller CommandBuffer defer construction of the VkCommandBuffer object, allowing us to record impeller commands on the raster thread, move the command buffer to a worker thread, create the VkCommandBuffer, and then begin encoding. --- impeller/aiks/testing/context_mock.h | 4 +- .../backend/gles/command_buffer_gles.cc | 4 +- .../backend/gles/command_buffer_gles.h | 4 +- .../backend/metal/command_buffer_mtl.h | 4 +- .../backend/metal/command_buffer_mtl.mm | 4 +- .../vulkan/blit_command_vk_unittests.cc | 41 +++++------- .../renderer/backend/vulkan/blit_pass_vk.cc | 11 +++- .../renderer/backend/vulkan/blit_pass_vk.h | 5 +- .../backend/vulkan/command_buffer_vk.cc | 54 ++++++++------- .../backend/vulkan/command_buffer_vk.h | 14 ++-- .../backend/vulkan/command_encoder_vk.cc | 65 ++++++++++++++----- .../backend/vulkan/command_encoder_vk.h | 26 ++++++-- .../backend/vulkan/compute_pass_vk.cc | 14 ++-- .../renderer/backend/vulkan/compute_pass_vk.h | 6 +- .../renderer/backend/vulkan/context_vk.cc | 27 ++------ impeller/renderer/backend/vulkan/context_vk.h | 4 +- .../vulkan/pass_bindings_cache_unittests.cc | 28 +++----- .../renderer/backend/vulkan/render_pass_vk.cc | 13 ++-- .../renderer/backend/vulkan/render_pass_vk.h | 6 +- impeller/renderer/command_buffer.cc | 4 +- impeller/renderer/command_buffer.h | 8 +-- impeller/renderer/testing/mocks.h | 4 +- 22 files changed, 194 insertions(+), 156 deletions(-) diff --git a/impeller/aiks/testing/context_mock.h b/impeller/aiks/testing/context_mock.h index 2650105de4a70..5f085202e2c4b 100644 --- a/impeller/aiks/testing/context_mock.h +++ b/impeller/aiks/testing/context_mock.h @@ -36,7 +36,7 @@ class CommandBufferMock : public CommandBuffer { return command_buffer->OnCreateRenderPass(render_target); } - MOCK_CONST_METHOD0(OnCreateBlitPass, std::shared_ptr()); + MOCK_METHOD0(OnCreateBlitPass, std::shared_ptr()); static std::shared_ptr ForwardOnCreateBlitPass( CommandBuffer* command_buffer) { return command_buffer->OnCreateBlitPass(); @@ -53,7 +53,7 @@ class CommandBufferMock : public CommandBuffer { return command_buffer->OnWaitUntilScheduled(); } - MOCK_CONST_METHOD0(OnCreateComputePass, std::shared_ptr()); + MOCK_METHOD0(OnCreateComputePass, std::shared_ptr()); static std::shared_ptr ForwardOnCreateComputePass( CommandBuffer* command_buffer) { return command_buffer->OnCreateComputePass(); diff --git a/impeller/renderer/backend/gles/command_buffer_gles.cc b/impeller/renderer/backend/gles/command_buffer_gles.cc index b360170aaac0d..737984d3ae1a8 100644 --- a/impeller/renderer/backend/gles/command_buffer_gles.cc +++ b/impeller/renderer/backend/gles/command_buffer_gles.cc @@ -58,7 +58,7 @@ std::shared_ptr CommandBufferGLES::OnCreateRenderPass( } // |CommandBuffer| -std::shared_ptr CommandBufferGLES::OnCreateBlitPass() const { +std::shared_ptr CommandBufferGLES::OnCreateBlitPass() { if (!IsValid()) { return nullptr; } @@ -70,7 +70,7 @@ std::shared_ptr CommandBufferGLES::OnCreateBlitPass() const { } // |CommandBuffer| -std::shared_ptr CommandBufferGLES::OnCreateComputePass() const { +std::shared_ptr CommandBufferGLES::OnCreateComputePass() { // Compute passes aren't supported until GLES 3.2, at which point Vulkan is // available anyway. return nullptr; diff --git a/impeller/renderer/backend/gles/command_buffer_gles.h b/impeller/renderer/backend/gles/command_buffer_gles.h index ec78df92e20c6..e76ee5b01c481 100644 --- a/impeller/renderer/backend/gles/command_buffer_gles.h +++ b/impeller/renderer/backend/gles/command_buffer_gles.h @@ -41,10 +41,10 @@ class CommandBufferGLES final : public CommandBuffer { std::shared_ptr OnCreateRenderPass(RenderTarget target) override; // |CommandBuffer| - std::shared_ptr OnCreateBlitPass() const override; + std::shared_ptr OnCreateBlitPass() override; // |CommandBuffer| - std::shared_ptr OnCreateComputePass() const override; + std::shared_ptr OnCreateComputePass() override; FML_DISALLOW_COPY_AND_ASSIGN(CommandBufferGLES); }; diff --git a/impeller/renderer/backend/metal/command_buffer_mtl.h b/impeller/renderer/backend/metal/command_buffer_mtl.h index 7fb49d1882450..4dda79eaf927a 100644 --- a/impeller/renderer/backend/metal/command_buffer_mtl.h +++ b/impeller/renderer/backend/metal/command_buffer_mtl.h @@ -43,10 +43,10 @@ class CommandBufferMTL final : public CommandBuffer { std::shared_ptr OnCreateRenderPass(RenderTarget target) override; // |CommandBuffer| - std::shared_ptr OnCreateBlitPass() const override; + std::shared_ptr OnCreateBlitPass() override; // |CommandBuffer| - std::shared_ptr OnCreateComputePass() const override; + std::shared_ptr OnCreateComputePass() override; FML_DISALLOW_COPY_AND_ASSIGN(CommandBufferMTL); }; diff --git a/impeller/renderer/backend/metal/command_buffer_mtl.mm b/impeller/renderer/backend/metal/command_buffer_mtl.mm index 894f8b1fdce82..11669dda0db2c 100644 --- a/impeller/renderer/backend/metal/command_buffer_mtl.mm +++ b/impeller/renderer/backend/metal/command_buffer_mtl.mm @@ -256,7 +256,7 @@ static bool LogMTLCommandBufferErrorIfPresent(id buffer) { return pass; } -std::shared_ptr CommandBufferMTL::OnCreateBlitPass() const { +std::shared_ptr CommandBufferMTL::OnCreateBlitPass() { if (!buffer_) { return nullptr; } @@ -269,7 +269,7 @@ static bool LogMTLCommandBufferErrorIfPresent(id buffer) { return pass; } -std::shared_ptr CommandBufferMTL::OnCreateComputePass() const { +std::shared_ptr CommandBufferMTL::OnCreateComputePass() { if (!buffer_) { return nullptr; } diff --git a/impeller/renderer/backend/vulkan/blit_command_vk_unittests.cc b/impeller/renderer/backend/vulkan/blit_command_vk_unittests.cc index 92f951452b73e..44206c2e7ddb5 100644 --- a/impeller/renderer/backend/vulkan/blit_command_vk_unittests.cc +++ b/impeller/renderer/backend/vulkan/blit_command_vk_unittests.cc @@ -13,9 +13,7 @@ namespace testing { TEST(BlitCommandVkTest, BlitCopyTextureToTextureCommandVK) { auto context = CreateMockVulkanContext(); auto pool = CommandPoolVK::GetThreadLocal(context.get()); - CommandEncoderVK encoder(context->GetDeviceHolder(), - context->GetGraphicsQueue(), pool, - context->GetFenceWaiter()); + auto encoder = std::make_unique(context)->Create(); BlitCopyTextureToTextureCommandVK cmd; cmd.source = context->GetResourceAllocator()->CreateTexture({ .size = ISize(100, 100), @@ -23,18 +21,15 @@ TEST(BlitCommandVkTest, BlitCopyTextureToTextureCommandVK) { cmd.destination = context->GetResourceAllocator()->CreateTexture({ .size = ISize(100, 100), }); - bool result = cmd.Encode(encoder); + bool result = cmd.Encode(*encoder.get()); EXPECT_TRUE(result); - EXPECT_TRUE(encoder.IsTracking(cmd.source)); - EXPECT_TRUE(encoder.IsTracking(cmd.destination)); + EXPECT_TRUE(encoder->IsTracking(cmd.source)); + EXPECT_TRUE(encoder->IsTracking(cmd.destination)); } TEST(BlitCommandVkTest, BlitCopyTextureToBufferCommandVK) { auto context = CreateMockVulkanContext(); - auto pool = CommandPoolVK::GetThreadLocal(context.get()); - CommandEncoderVK encoder(context->GetDeviceHolder(), - context->GetGraphicsQueue(), pool, - context->GetFenceWaiter()); + auto encoder = std::make_unique(context)->Create(); BlitCopyTextureToBufferCommandVK cmd; cmd.source = context->GetResourceAllocator()->CreateTexture({ .size = ISize(100, 100), @@ -42,18 +37,15 @@ TEST(BlitCommandVkTest, BlitCopyTextureToBufferCommandVK) { cmd.destination = context->GetResourceAllocator()->CreateBuffer({ .size = 1, }); - bool result = cmd.Encode(encoder); + bool result = cmd.Encode(*encoder.get()); EXPECT_TRUE(result); - EXPECT_TRUE(encoder.IsTracking(cmd.source)); - EXPECT_TRUE(encoder.IsTracking(cmd.destination)); + EXPECT_TRUE(encoder->IsTracking(cmd.source)); + EXPECT_TRUE(encoder->IsTracking(cmd.destination)); } TEST(BlitCommandVkTest, BlitCopyBufferToTextureCommandVK) { auto context = CreateMockVulkanContext(); - auto pool = CommandPoolVK::GetThreadLocal(context.get()); - CommandEncoderVK encoder(context->GetDeviceHolder(), - context->GetGraphicsQueue(), pool, - context->GetFenceWaiter()); + auto encoder = std::make_unique(context)->Create(); BlitCopyBufferToTextureCommandVK cmd; cmd.destination = context->GetResourceAllocator()->CreateTexture({ .size = ISize(100, 100), @@ -63,26 +55,23 @@ TEST(BlitCommandVkTest, BlitCopyBufferToTextureCommandVK) { .size = 1, }) ->AsBufferView(); - bool result = cmd.Encode(encoder); + bool result = cmd.Encode(*encoder.get()); EXPECT_TRUE(result); - EXPECT_TRUE(encoder.IsTracking(cmd.source.buffer)); - EXPECT_TRUE(encoder.IsTracking(cmd.destination)); + EXPECT_TRUE(encoder->IsTracking(cmd.source.buffer)); + EXPECT_TRUE(encoder->IsTracking(cmd.destination)); } TEST(BlitCommandVkTest, BlitGenerateMipmapCommandVK) { auto context = CreateMockVulkanContext(); - auto pool = CommandPoolVK::GetThreadLocal(context.get()); - CommandEncoderVK encoder(context->GetDeviceHolder(), - context->GetGraphicsQueue(), pool, - context->GetFenceWaiter()); + auto encoder = std::make_unique(context)->Create(); BlitGenerateMipmapCommandVK cmd; cmd.texture = context->GetResourceAllocator()->CreateTexture({ .size = ISize(100, 100), .mip_count = 2, }); - bool result = cmd.Encode(encoder); + bool result = cmd.Encode(*encoder.get()); EXPECT_TRUE(result); - EXPECT_TRUE(encoder.IsTracking(cmd.texture)); + EXPECT_TRUE(encoder->IsTracking(cmd.texture)); } } // namespace testing diff --git a/impeller/renderer/backend/vulkan/blit_pass_vk.cc b/impeller/renderer/backend/vulkan/blit_pass_vk.cc index 1eb58296d6487..32f00964c6c99 100644 --- a/impeller/renderer/backend/vulkan/blit_pass_vk.cc +++ b/impeller/renderer/backend/vulkan/blit_pass_vk.cc @@ -6,11 +6,12 @@ #include "flutter/fml/logging.h" #include "flutter/fml/trace_event.h" +#include "impeller/renderer/backend/vulkan/command_buffer_vk.h" namespace impeller { -BlitPassVK::BlitPassVK(std::weak_ptr encoder) - : encoder_(std::move(encoder)) {} +BlitPassVK::BlitPassVK(std::weak_ptr command_buffer) + : command_buffer_(std::move(command_buffer)) {} BlitPassVK::~BlitPassVK() = default; @@ -35,7 +36,11 @@ bool BlitPassVK::EncodeCommands( return false; } - auto encoder = encoder_.lock(); + auto command_buffer = command_buffer_.lock(); + if (!command_buffer) { + return false; + } + auto encoder = command_buffer->GetEncoder(); if (!encoder) { return false; } diff --git a/impeller/renderer/backend/vulkan/blit_pass_vk.h b/impeller/renderer/backend/vulkan/blit_pass_vk.h index 1367ceae43ceb..8afd13b8f5c98 100644 --- a/impeller/renderer/backend/vulkan/blit_pass_vk.h +++ b/impeller/renderer/backend/vulkan/blit_pass_vk.h @@ -12,6 +12,7 @@ namespace impeller { class CommandEncoderVK; +class CommandBufferVK; class BlitPassVK final : public BlitPass { public: @@ -21,11 +22,11 @@ class BlitPassVK final : public BlitPass { private: friend class CommandBufferVK; - std::weak_ptr encoder_; + std::weak_ptr command_buffer_; std::vector> commands_; std::string label_; - BlitPassVK(std::weak_ptr encoder); + BlitPassVK(std::weak_ptr command_buffer); // |BlitPass| bool IsValid() const override; diff --git a/impeller/renderer/backend/vulkan/command_buffer_vk.cc b/impeller/renderer/backend/vulkan/command_buffer_vk.cc index b66a091abfbc9..0059fe41b26f2 100644 --- a/impeller/renderer/backend/vulkan/command_buffer_vk.cc +++ b/impeller/renderer/backend/vulkan/command_buffer_vk.cc @@ -20,30 +20,34 @@ namespace impeller { -CommandBufferVK::CommandBufferVK(std::weak_ptr context, - std::shared_ptr encoder) - : CommandBuffer(std::move(context)), encoder_(std::move(encoder)) { - if (!encoder_ || !encoder_->IsValid()) { - return; - } - is_valid_ = true; -} +CommandBufferVK::CommandBufferVK( + std::weak_ptr context, + std::shared_ptr encoder_factory) + : CommandBuffer(std::move(context)), + encoder_factory_(std::move(encoder_factory)) {} CommandBufferVK::~CommandBufferVK() = default; void CommandBufferVK::SetLabel(const std::string& label) const { - auto context = context_.lock(); - if (!context || !encoder_) { - return; + if (!encoder_) { + encoder_factory_->SetLabel(label); + } else { + auto context = context_.lock(); + if (!context || !encoder_) { + return; + } + ContextVK::Cast(*context).SetDebugName(encoder_->GetCommandBuffer(), label); } - ContextVK::Cast(*context).SetDebugName(encoder_->GetCommandBuffer(), label); } bool CommandBufferVK::IsValid() const { - return is_valid_; + return true; } -const std::shared_ptr& CommandBufferVK::GetEncoder() const { +const std::shared_ptr& CommandBufferVK::GetEncoder() { + if (!encoder_) { + encoder_ = encoder_factory_->Create(); + } return encoder_; } @@ -65,28 +69,29 @@ std::shared_ptr CommandBufferVK::OnCreateRenderPass( if (!context) { return nullptr; } - auto pass = std::shared_ptr(new RenderPassVK(context, // - target, // - encoder_ // - )); + auto pass = + std::shared_ptr(new RenderPassVK(context, // + target, // + weak_from_this() // + )); if (!pass->IsValid()) { return nullptr; } return pass; } -std::shared_ptr CommandBufferVK::OnCreateBlitPass() const { +std::shared_ptr CommandBufferVK::OnCreateBlitPass() { if (!IsValid()) { return nullptr; } - auto pass = std::shared_ptr(new BlitPassVK(encoder_)); + auto pass = std::shared_ptr(new BlitPassVK(weak_from_this())); if (!pass->IsValid()) { return nullptr; } return pass; } -std::shared_ptr CommandBufferVK::OnCreateComputePass() const { +std::shared_ptr CommandBufferVK::OnCreateComputePass() { if (!IsValid()) { return nullptr; } @@ -94,9 +99,10 @@ std::shared_ptr CommandBufferVK::OnCreateComputePass() const { if (!context) { return nullptr; } - auto pass = std::shared_ptr(new ComputePassVK(context, // - encoder_ // - )); + auto pass = + std::shared_ptr(new ComputePassVK(context, // + weak_from_this() // + )); if (!pass->IsValid()) { return nullptr; } diff --git a/impeller/renderer/backend/vulkan/command_buffer_vk.h b/impeller/renderer/backend/vulkan/command_buffer_vk.h index 188cfb1a90ef3..bf3bef8eff78f 100644 --- a/impeller/renderer/backend/vulkan/command_buffer_vk.h +++ b/impeller/renderer/backend/vulkan/command_buffer_vk.h @@ -12,25 +12,27 @@ namespace impeller { class ContextVK; +class CommandEncoderFactoryVK; class CommandEncoderVK; class CommandBufferVK final : public CommandBuffer, - public BackendCast { + public BackendCast, + public std::enable_shared_from_this { public: // |CommandBuffer| ~CommandBufferVK() override; - const std::shared_ptr& GetEncoder() const; + const std::shared_ptr& GetEncoder(); private: friend class ContextVK; std::shared_ptr encoder_; - bool is_valid_ = false; + std::shared_ptr encoder_factory_; CommandBufferVK(std::weak_ptr context, - std::shared_ptr encoder); + std::shared_ptr encoder_factory); // |CommandBuffer| void SetLabel(const std::string& label) const override; @@ -48,10 +50,10 @@ class CommandBufferVK final std::shared_ptr OnCreateRenderPass(RenderTarget target) override; // |CommandBuffer| - std::shared_ptr OnCreateBlitPass() const override; + std::shared_ptr OnCreateBlitPass() override; // |CommandBuffer| - std::shared_ptr OnCreateComputePass() const override; + std::shared_ptr OnCreateComputePass() override; FML_DISALLOW_COPY_AND_ASSIGN(CommandBufferVK); }; diff --git a/impeller/renderer/backend/vulkan/command_encoder_vk.cc b/impeller/renderer/backend/vulkan/command_encoder_vk.cc index 58511136435ae..35ceab00d9db2 100644 --- a/impeller/renderer/backend/vulkan/command_encoder_vk.cc +++ b/impeller/renderer/backend/vulkan/command_encoder_vk.cc @@ -96,29 +96,61 @@ class TrackedObjectsVK { FML_DISALLOW_COPY_AND_ASSIGN(TrackedObjectsVK); }; -CommandEncoderVK::CommandEncoderVK( - const std::weak_ptr& device_holder, - const std::shared_ptr& queue, - const std::shared_ptr& pool, - std::shared_ptr fence_waiter) - : fence_waiter_(std::move(fence_waiter)), - tracked_objects_( - std::make_shared(device_holder, pool)) { - if (!fence_waiter_ || !tracked_objects_->IsValid() || !queue) { - return; +CommandEncoderFactoryVK::CommandEncoderFactoryVK( + const std::weak_ptr& context) + : context_(context) {} + +void CommandEncoderFactoryVK::SetLabel(const std::string& label) { + label_ = label; +} + +std::shared_ptr CommandEncoderFactoryVK::Create() { + auto context = context_.lock(); + if (!context) { + return nullptr; + } + auto& context_vk = ContextVK::Cast(*context); + auto tls_pool = CommandPoolVK::GetThreadLocal(&context_vk); + if (!tls_pool) { + return nullptr; + } + + auto tracked_objects = std::make_shared( + context_vk.GetDeviceHolder(), tls_pool); + auto queue = context_vk.GetGraphicsQueue(); + + if (!tracked_objects || !tracked_objects->IsValid() || !queue) { + return nullptr; } + vk::CommandBufferBeginInfo begin_info; begin_info.flags = vk::CommandBufferUsageFlagBits::eOneTimeSubmit; - if (tracked_objects_->GetCommandBuffer().begin(begin_info) != + if (tracked_objects->GetCommandBuffer().begin(begin_info) != vk::Result::eSuccess) { VALIDATION_LOG << "Could not begin command buffer."; - return; + return nullptr; + } + + if (label_.has_value()) { + context_vk.SetDebugName(tracked_objects->GetCommandBuffer(), + label_.value()); } - device_holder_ = device_holder; - queue_ = queue; - is_valid_ = true; + + return std::make_shared(context_vk.GetDeviceHolder(), + tracked_objects, queue, + context_vk.GetFenceWaiter()); } +CommandEncoderVK::CommandEncoderVK( + std::weak_ptr device_holder, + std::shared_ptr tracked_objects, + const std::shared_ptr& queue, + std::shared_ptr fence_waiter) + : device_holder_(std::move(device_holder)), + tracked_objects_(std::move(tracked_objects)), + queue_(queue), + fence_waiter_(std::move(fence_waiter)) {} + CommandEncoderVK::~CommandEncoderVK() = default; bool CommandEncoderVK::IsValid() const { @@ -169,7 +201,6 @@ bool CommandEncoderVK::Submit(SubmitCallback callback) { // Submit will proceed, call callback with true when it is done and do not // call when `reset` is collected. fail_callback = false; - return fence_waiter_->AddFence( std::move(fence), [callback, tracked_objects = std::move(tracked_objects_)] { @@ -190,7 +221,6 @@ void CommandEncoderVK::Reset() { tracked_objects_.reset(); queue_ = nullptr; - device_holder_ = {}; is_valid_ = false; } @@ -251,6 +281,7 @@ std::optional CommandEncoderVK::AllocateDescriptorSet( if (!IsValid()) { return std::nullopt; } + return tracked_objects_->GetDescriptorPool().AllocateDescriptorSet(layout); } diff --git a/impeller/renderer/backend/vulkan/command_encoder_vk.h b/impeller/renderer/backend/vulkan/command_encoder_vk.h index 985e955fe0142..4b912165e3d07 100644 --- a/impeller/renderer/backend/vulkan/command_encoder_vk.h +++ b/impeller/renderer/backend/vulkan/command_encoder_vk.h @@ -10,6 +10,7 @@ #include "flutter/fml/macros.h" #include "impeller/renderer/backend/vulkan/command_pool_vk.h" +#include "impeller/renderer/backend/vulkan/context_vk.h" #include "impeller/renderer/backend/vulkan/descriptor_pool_vk.h" #include "impeller/renderer/backend/vulkan/device_holder.h" #include "impeller/renderer/backend/vulkan/queue_vk.h" @@ -26,14 +27,29 @@ class TextureSourceVK; class TrackedObjectsVK; class FenceWaiterVK; +class CommandEncoderFactoryVK { + public: + CommandEncoderFactoryVK(const std::weak_ptr& context); + + std::shared_ptr Create(); + + void SetLabel(const std::string& label); + + private: + std::weak_ptr context_; + std::optional label_; + + FML_DISALLOW_COPY_AND_ASSIGN(CommandEncoderFactoryVK); +}; + class CommandEncoderVK { public: using SubmitCallback = std::function; // Visible for testing. - CommandEncoderVK(const std::weak_ptr& device_holder, + CommandEncoderVK(std::weak_ptr device_holder, + std::shared_ptr tracked_objects, const std::shared_ptr& queue, - const std::shared_ptr& pool, std::shared_ptr fence_waiter); ~CommandEncoderVK(); @@ -69,10 +85,10 @@ class CommandEncoderVK { friend class ContextVK; std::weak_ptr device_holder_; - std::shared_ptr queue_; - std::shared_ptr fence_waiter_; std::shared_ptr tracked_objects_; - bool is_valid_ = false; + std::shared_ptr queue_; + const std::shared_ptr fence_waiter_; + bool is_valid_ = true; void Reset(); diff --git a/impeller/renderer/backend/vulkan/compute_pass_vk.cc b/impeller/renderer/backend/vulkan/compute_pass_vk.cc index cd5d92672997b..ebd12dedf4bd0 100644 --- a/impeller/renderer/backend/vulkan/compute_pass_vk.cc +++ b/impeller/renderer/backend/vulkan/compute_pass_vk.cc @@ -5,6 +5,7 @@ #include "impeller/renderer/backend/vulkan/compute_pass_vk.h" #include "flutter/fml/trace_event.h" +#include "impeller/renderer/backend/vulkan/command_buffer_vk.h" #include "impeller/renderer/backend/vulkan/compute_pipeline_vk.h" #include "impeller/renderer/backend/vulkan/sampler_vk.h" #include "impeller/renderer/backend/vulkan/texture_vk.h" @@ -12,8 +13,9 @@ namespace impeller { ComputePassVK::ComputePassVK(std::weak_ptr context, - std::weak_ptr encoder) - : ComputePass(std::move(context)), encoder_(std::move(encoder)) { + std::weak_ptr command_buffer) + : ComputePass(std::move(context)), + command_buffer_(std::move(command_buffer)) { is_valid_ = true; } @@ -203,9 +205,13 @@ bool ComputePassVK::OnEncodeCommands(const Context& context, FML_DCHECK(!grid_size.IsEmpty() && !thread_group_size.IsEmpty()); const auto& vk_context = ContextVK::Cast(context); - auto encoder = encoder_.lock(); + auto command_buffer = command_buffer_.lock(); + if (!command_buffer) { + VALIDATION_LOG << "Command buffer died before commands could be encoded."; + return false; + } + auto encoder = command_buffer->GetEncoder(); if (!encoder) { - VALIDATION_LOG << "Command encoder died before commands could be encoded."; return false; } diff --git a/impeller/renderer/backend/vulkan/compute_pass_vk.h b/impeller/renderer/backend/vulkan/compute_pass_vk.h index 83c1c6f056adb..0944e9529ff6a 100644 --- a/impeller/renderer/backend/vulkan/compute_pass_vk.h +++ b/impeller/renderer/backend/vulkan/compute_pass_vk.h @@ -10,6 +10,8 @@ namespace impeller { +class CommandBufferVK; + class ComputePassVK final : public ComputePass { public: // |ComputePass| @@ -18,12 +20,12 @@ class ComputePassVK final : public ComputePass { private: friend class CommandBufferVK; - std::weak_ptr encoder_; + std::weak_ptr command_buffer_; std::string label_; bool is_valid_ = false; ComputePassVK(std::weak_ptr context, - std::weak_ptr encoder); + std::weak_ptr command_buffer); // |ComputePass| bool IsValid() const override; diff --git a/impeller/renderer/backend/vulkan/context_vk.cc b/impeller/renderer/backend/vulkan/context_vk.cc index 54332291e670d..443fe2fad8bb3 100644 --- a/impeller/renderer/backend/vulkan/context_vk.cc +++ b/impeller/renderer/backend/vulkan/context_vk.cc @@ -452,13 +452,9 @@ std::shared_ptr ContextVK::GetPipelineLibrary() const { } std::shared_ptr ContextVK::CreateCommandBuffer() const { - auto encoder = CreateGraphicsCommandEncoder(); - if (!encoder) { - return nullptr; - } return std::shared_ptr( - new CommandBufferVK(shared_from_this(), // - std::move(encoder)) // + new CommandBufferVK(shared_from_this(), // + CreateGraphicsCommandEncoderFactory()) // ); } @@ -544,22 +540,9 @@ std::shared_ptr ContextVK::GetResourceManager() const { return resource_manager_; } -std::unique_ptr ContextVK::CreateGraphicsCommandEncoder() - const { - auto tls_pool = CommandPoolVK::GetThreadLocal(this); - if (!tls_pool) { - return nullptr; - } - auto encoder = std::unique_ptr(new CommandEncoderVK( - device_holder_, // - queues_.graphics_queue, // - tls_pool, // - fence_waiter_ // - )); - if (!encoder->IsValid()) { - return nullptr; - } - return encoder; +std::unique_ptr +ContextVK::CreateGraphicsCommandEncoderFactory() const { + return std::make_unique(weak_from_this()); } } // namespace impeller diff --git a/impeller/renderer/backend/vulkan/context_vk.h b/impeller/renderer/backend/vulkan/context_vk.h index 9f9b9af9b1999..4ced05f8b0759 100644 --- a/impeller/renderer/backend/vulkan/context_vk.h +++ b/impeller/renderer/backend/vulkan/context_vk.h @@ -27,6 +27,7 @@ namespace impeller { bool HasValidationLayers(); +class CommandEncoderFactoryVK; class CommandEncoderVK; class DebugReportVK; class FenceWaiterVK; @@ -174,7 +175,8 @@ class ContextVK final : public Context, void Setup(Settings settings); - std::unique_ptr CreateGraphicsCommandEncoder() const; + std::unique_ptr CreateGraphicsCommandEncoderFactory() + const; FML_DISALLOW_COPY_AND_ASSIGN(ContextVK); }; diff --git a/impeller/renderer/backend/vulkan/pass_bindings_cache_unittests.cc b/impeller/renderer/backend/vulkan/pass_bindings_cache_unittests.cc index feb788fe3afbe..bab2a25db7f35 100644 --- a/impeller/renderer/backend/vulkan/pass_bindings_cache_unittests.cc +++ b/impeller/renderer/backend/vulkan/pass_bindings_cache_unittests.cc @@ -26,11 +26,8 @@ int32_t CountStringViewInstances(const std::vector& strings, TEST(PassBindingsCacheTest, bindPipeline) { auto context = CreateMockVulkanContext(); PassBindingsCache cache; - auto pool = CommandPoolVK::GetThreadLocal(context.get()); - CommandEncoderVK encoder(context->GetDeviceHolder(), - context->GetGraphicsQueue(), pool, - context->GetFenceWaiter()); - auto buffer = encoder.GetCommandBuffer(); + auto encoder = std::make_unique(context)->Create(); + auto buffer = encoder->GetCommandBuffer(); VkPipeline vk_pipeline = reinterpret_cast(0xfeedface); vk::Pipeline pipeline(vk_pipeline); cache.BindPipeline(buffer, vk::PipelineBindPoint::eGraphics, pipeline); @@ -43,11 +40,8 @@ TEST(PassBindingsCacheTest, bindPipeline) { TEST(PassBindingsCacheTest, setStencilReference) { auto context = CreateMockVulkanContext(); PassBindingsCache cache; - auto pool = CommandPoolVK::GetThreadLocal(context.get()); - CommandEncoderVK encoder(context->GetDeviceHolder(), - context->GetGraphicsQueue(), pool, - context->GetFenceWaiter()); - auto buffer = encoder.GetCommandBuffer(); + auto encoder = std::make_unique(context)->Create(); + auto buffer = encoder->GetCommandBuffer(); cache.SetStencilReference( buffer, vk::StencilFaceFlagBits::eVkStencilFrontAndBack, 123); cache.SetStencilReference( @@ -61,11 +55,8 @@ TEST(PassBindingsCacheTest, setStencilReference) { TEST(PassBindingsCacheTest, setScissor) { auto context = CreateMockVulkanContext(); PassBindingsCache cache; - auto pool = CommandPoolVK::GetThreadLocal(context.get()); - CommandEncoderVK encoder(context->GetDeviceHolder(), - context->GetGraphicsQueue(), pool, - context->GetFenceWaiter()); - auto buffer = encoder.GetCommandBuffer(); + auto encoder = std::make_unique(context)->Create(); + auto buffer = encoder->GetCommandBuffer(); vk::Rect2D scissors; cache.SetScissor(buffer, 0, 1, &scissors); cache.SetScissor(buffer, 0, 1, &scissors); @@ -77,11 +68,8 @@ TEST(PassBindingsCacheTest, setScissor) { TEST(PassBindingsCacheTest, setViewport) { auto context = CreateMockVulkanContext(); PassBindingsCache cache; - auto pool = CommandPoolVK::GetThreadLocal(context.get()); - CommandEncoderVK encoder(context->GetDeviceHolder(), - context->GetGraphicsQueue(), pool, - context->GetFenceWaiter()); - auto buffer = encoder.GetCommandBuffer(); + auto encoder = std::make_unique(context)->Create(); + auto buffer = encoder->GetCommandBuffer(); vk::Viewport viewports; cache.SetViewport(buffer, 0, 1, &viewports); cache.SetViewport(buffer, 0, 1, &viewports); diff --git a/impeller/renderer/backend/vulkan/render_pass_vk.cc b/impeller/renderer/backend/vulkan/render_pass_vk.cc index 82d2214a5f5b2..4107abdd00536 100644 --- a/impeller/renderer/backend/vulkan/render_pass_vk.cc +++ b/impeller/renderer/backend/vulkan/render_pass_vk.cc @@ -15,6 +15,7 @@ #include "impeller/core/formats.h" #include "impeller/core/sampler.h" #include "impeller/core/shader_types.h" +#include "impeller/renderer/backend/vulkan/command_buffer_vk.h" #include "impeller/renderer/backend/vulkan/command_encoder_vk.h" #include "impeller/renderer/backend/vulkan/context_vk.h" #include "impeller/renderer/backend/vulkan/device_buffer_vk.h" @@ -137,8 +138,8 @@ SharedHandleVK RenderPassVK::CreateVKRenderPass( RenderPassVK::RenderPassVK(const std::shared_ptr& context, const RenderTarget& target, - std::weak_ptr encoder) - : RenderPass(context, target), encoder_(std::move(encoder)) { + std::weak_ptr command_buffer) + : RenderPass(context, target), command_buffer_(std::move(command_buffer)) { is_valid_ = true; } @@ -555,9 +556,13 @@ bool RenderPassVK::OnEncodeCommands(const Context& context) const { const auto& vk_context = ContextVK::Cast(context); - auto encoder = encoder_.lock(); + auto command_buffer = command_buffer_.lock(); + if (!command_buffer) { + VALIDATION_LOG << "Command buffer died before commands could be encoded."; + return false; + } + auto encoder = command_buffer->GetEncoder(); if (!encoder) { - VALIDATION_LOG << "Command encoder died before commands could be encoded."; return false; } diff --git a/impeller/renderer/backend/vulkan/render_pass_vk.h b/impeller/renderer/backend/vulkan/render_pass_vk.h index b952b7db146ea..273c9089aad3f 100644 --- a/impeller/renderer/backend/vulkan/render_pass_vk.h +++ b/impeller/renderer/backend/vulkan/render_pass_vk.h @@ -16,6 +16,8 @@ namespace impeller { +class CommandBufferVK; + class RenderPassVK final : public RenderPass { public: // |RenderPass| @@ -24,14 +26,14 @@ class RenderPassVK final : public RenderPass { private: friend class CommandBufferVK; - std::weak_ptr encoder_; + std::weak_ptr command_buffer_; std::string debug_label_; bool is_valid_ = false; mutable PassBindingsCache pass_bindings_cache_; RenderPassVK(const std::shared_ptr& context, const RenderTarget& target, - std::weak_ptr encoder); + std::weak_ptr command_buffer); // |RenderPass| bool IsValid() const override; diff --git a/impeller/renderer/command_buffer.cc b/impeller/renderer/command_buffer.cc index 0ffad01ff9857..c0f4a0d50d69a 100644 --- a/impeller/renderer/command_buffer.cc +++ b/impeller/renderer/command_buffer.cc @@ -61,7 +61,7 @@ std::shared_ptr CommandBuffer::CreateRenderPass( return nullptr; } -std::shared_ptr CommandBuffer::CreateBlitPass() const { +std::shared_ptr CommandBuffer::CreateBlitPass() { auto pass = OnCreateBlitPass(); if (pass && pass->IsValid()) { pass->SetLabel("BlitPass"); @@ -70,7 +70,7 @@ std::shared_ptr CommandBuffer::CreateBlitPass() const { return nullptr; } -std::shared_ptr CommandBuffer::CreateComputePass() const { +std::shared_ptr CommandBuffer::CreateComputePass() { if (!IsValid()) { return nullptr; } diff --git a/impeller/renderer/command_buffer.h b/impeller/renderer/command_buffer.h index c7d167362c300..096c4633b852a 100644 --- a/impeller/renderer/command_buffer.h +++ b/impeller/renderer/command_buffer.h @@ -104,14 +104,14 @@ class CommandBuffer { /// /// @return A valid blit pass or null. /// - std::shared_ptr CreateBlitPass() const; + std::shared_ptr CreateBlitPass(); //---------------------------------------------------------------------------- /// @brief Create a compute pass to record compute commands into. /// /// @return A valid compute pass or null. /// - std::shared_ptr CreateComputePass() const; + std::shared_ptr CreateComputePass(); protected: std::weak_ptr context_; @@ -121,13 +121,13 @@ class CommandBuffer { virtual std::shared_ptr OnCreateRenderPass( RenderTarget render_target) = 0; - virtual std::shared_ptr OnCreateBlitPass() const = 0; + virtual std::shared_ptr OnCreateBlitPass() = 0; [[nodiscard]] virtual bool OnSubmitCommands(CompletionCallback callback) = 0; virtual void OnWaitUntilScheduled() = 0; - virtual std::shared_ptr OnCreateComputePass() const = 0; + virtual std::shared_ptr OnCreateComputePass() = 0; private: FML_DISALLOW_COPY_AND_ASSIGN(CommandBuffer); diff --git a/impeller/renderer/testing/mocks.h b/impeller/renderer/testing/mocks.h index 3066523cf8f1b..fca057c49924e 100644 --- a/impeller/renderer/testing/mocks.h +++ b/impeller/renderer/testing/mocks.h @@ -76,10 +76,10 @@ class MockCommandBuffer : public CommandBuffer { : CommandBuffer(context) {} MOCK_CONST_METHOD0(IsValid, bool()); MOCK_CONST_METHOD1(SetLabel, void(const std::string& label)); - MOCK_CONST_METHOD0(OnCreateBlitPass, std::shared_ptr()); + MOCK_METHOD0(OnCreateBlitPass, std::shared_ptr()); MOCK_METHOD1(OnSubmitCommands, bool(CompletionCallback callback)); MOCK_METHOD0(OnWaitUntilScheduled, void()); - MOCK_CONST_METHOD0(OnCreateComputePass, std::shared_ptr()); + MOCK_METHOD0(OnCreateComputePass, std::shared_ptr()); MOCK_METHOD1(OnCreateRenderPass, std::shared_ptr(RenderTarget render_target)); }; From 7dc8be3a1b225c32fdedc35b1b1a7c9de5b3a58f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 17:49:05 -0400 Subject: [PATCH 067/211] Roll Skia from 315c7f08c731 to 5f6578398870 (4 revisions) (#43704) https://skia.googlesource.com/skia.git/+log/315c7f08c731..5f6578398870 2023-07-14 jvanverth@google.com [graphite] Add Vulkan wrapped texture support 2023-07-14 kjlubick@google.com Decouple SkMesh from Ganesh backend 2023-07-14 kjlubick@google.com Remove #ifdefs related to SkMesh and SkSL-dependent code. 2023-07-14 kjlubick@google.com Remove unnecessary #include in SkFloatingPoint.h If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1622a7d7b26f6..6bd3b8c3368ee 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '315c7f08c731f8e950e2224ac6abb4f007c45455', + 'skia_revision': '5f65783988704820b26c18c9cd3e6ca3c347dbe5', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c096737516aa1..755b3493ca3e6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 47a8c8a70461feb83c26bd105777d45f +Signature: 5b4f8ab223c4672c745d7e986adab201 ==================================================================================================== LIBRARY: etc1 @@ -386,6 +386,7 @@ FILE: ../../../third_party/skia/modules/skparagraph/test.html FILE: ../../../third_party/skia/package-lock.json FILE: ../../../third_party/skia/relnotes/canvas_flush.md FILE: ../../../third_party/skia/relnotes/const_context.md +FILE: ../../../third_party/skia/relnotes/mesh_ganesh.md FILE: ../../../third_party/skia/relnotes/runtimeeffect_const.md FILE: ../../../third_party/skia/relnotes/runtimeeffect_image.md FILE: ../../../third_party/skia/relnotes/tiledimages.md @@ -8900,6 +8901,7 @@ ORIGIN: ../../../third_party/skia/include/core/SkTextureCompressionType.h + ../. ORIGIN: ../../../third_party/skia/include/core/SkTiledImageUtils.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/GrExternalTextureGenerator.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkImageGanesh.h + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkMeshGanesh.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkSurfaceGanesh.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/graphite/BackendSemaphore.h + ../../../third_party/skia/LICENSE @@ -8972,6 +8974,8 @@ ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListPriv.h + . ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListRecorder.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.h + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrPromiseImageTexture.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.h + ../../../third_party/skia/LICENSE @@ -9102,6 +9106,7 @@ FILE: ../../../third_party/skia/include/core/SkTextureCompressionType.h FILE: ../../../third_party/skia/include/core/SkTiledImageUtils.h FILE: ../../../third_party/skia/include/gpu/ganesh/GrExternalTextureGenerator.h FILE: ../../../third_party/skia/include/gpu/ganesh/SkImageGanesh.h +FILE: ../../../third_party/skia/include/gpu/ganesh/SkMeshGanesh.h FILE: ../../../third_party/skia/include/gpu/ganesh/SkSurfaceGanesh.h FILE: ../../../third_party/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h FILE: ../../../third_party/skia/include/gpu/graphite/BackendSemaphore.h @@ -9174,6 +9179,8 @@ FILE: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListPriv.h FILE: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListRecorder.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.h +FILE: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.cpp +FILE: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.h FILE: ../../../third_party/skia/src/gpu/ganesh/GrPromiseImageTexture.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.h From eb8f9d887f0cd12dac0dea470f2b2347eee02ec7 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Fri, 14 Jul 2023 15:17:56 -0700 Subject: [PATCH 068/211] [Impeller] Ensure that missing color attachment 0u does not cause crash in embedder API (#43705) https://github.com/flutter/flutter/issues/130619 --- impeller/entity/entity_pass.cc | 5 +++-- shell/gpu/gpu_surface_gl_impeller.cc | 1 - shell/platform/embedder/embedder.cc | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/impeller/entity/entity_pass.cc b/impeller/entity/entity_pass.cc index 19b1a2efd1a33..5a66dbf6ad8b7 100644 --- a/impeller/entity/entity_pass.cc +++ b/impeller/entity/entity_pass.cc @@ -247,7 +247,8 @@ bool EntityPass::Render(ContentContext& renderer, const RenderTarget& render_target) const { auto root_render_target = render_target; - if (root_render_target.GetColorAttachments().empty()) { + if (root_render_target.GetColorAttachments().find(0u) == + root_render_target.GetColorAttachments().end()) { VALIDATION_LOG << "The root RenderTarget must have a color attachment."; return false; } @@ -341,7 +342,7 @@ bool EntityPass::Render(ContentContext& renderer, // The safety check for fetching this color attachment is at the beginning of // this method. - auto color0 = root_render_target.GetColorAttachments().find(0)->second; + auto color0 = root_render_target.GetColorAttachments().find(0u)->second; // If a root stencil was provided by the caller, then verify that it has a // configuration which can be used to render this pass. diff --git a/shell/gpu/gpu_surface_gl_impeller.cc b/shell/gpu/gpu_surface_gl_impeller.cc index 3b6777042eaa7..8b8c6e81c6650 100644 --- a/shell/gpu/gpu_surface_gl_impeller.cc +++ b/shell/gpu/gpu_surface_gl_impeller.cc @@ -83,7 +83,6 @@ std::unique_ptr GPUSurfaceGLImpeller::AcquireFrame( GLFrameInfo frame_info = {static_cast(size.width()), static_cast(size.height())}; const GLFBOInfo fbo_info = delegate_->GLContextFBO(frame_info); - auto surface = impeller::SurfaceGLES::WrapFBO( impeller_context_, // context swap_callback, // swap_callback diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 34b874b609a85..5f99ffbc2fddd 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -999,7 +999,7 @@ MakeRenderTargetFromBackingStoreImpeller( impeller::RenderTarget render_target_desc; - render_target_desc.SetColorAttachment(color0, framebuffer->target); + render_target_desc.SetColorAttachment(color0, 0u); render_target_desc.SetStencilAttachment(stencil0); return std::make_unique( From fc6d2a7d0b6943d00d9bf04c86be0481be244dd2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 18:33:04 -0400 Subject: [PATCH 069/211] Roll Skia from 5f6578398870 to 271b2b6d5aaa (2 revisions) (#43706) https://skia.googlesource.com/skia.git/+log/5f6578398870..271b2b6d5aaa 2023-07-14 kjlubick@google.com Add forgotten more drawMesh implementations 2023-07-14 johnstiles@google.com Add GM slide demonstrating ripple effect. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6bd3b8c3368ee..afc8f7ee64239 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '5f65783988704820b26c18c9cd3e6ca3c347dbe5', + 'skia_revision': '271b2b6d5aaa62e39eba9b526292782842236186', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 755b3493ca3e6..d552e8c3fe870 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5b4f8ab223c4672c745d7e986adab201 +Signature: 5cc56e9dd46382c8e24c6b3a20b7b3b9 ==================================================================================================== LIBRARY: etc1 @@ -8874,6 +8874,7 @@ ORIGIN: ../../../third_party/skia/fuzz/oss_fuzz/FuzzQuadRoots.cpp + ../../../thi ORIGIN: ../../../third_party/skia/gm/BazelGMRunner.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/BazelNoopRunner.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/graphite_replay.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/gm/rippleshadergm.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/scaledrects.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/surface_manager/GaneshGLSurfaceManager.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/surface_manager/GaneshVulkanSurfaceManager.cpp + ../../../third_party/skia/LICENSE @@ -9079,6 +9080,7 @@ FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzQuadRoots.cpp FILE: ../../../third_party/skia/gm/BazelGMRunner.cpp FILE: ../../../third_party/skia/gm/BazelNoopRunner.cpp FILE: ../../../third_party/skia/gm/graphite_replay.cpp +FILE: ../../../third_party/skia/gm/rippleshadergm.cpp FILE: ../../../third_party/skia/gm/scaledrects.cpp FILE: ../../../third_party/skia/gm/surface_manager/GaneshGLSurfaceManager.cpp FILE: ../../../third_party/skia/gm/surface_manager/GaneshVulkanSurfaceManager.cpp From 83a2dd4168b7c956e3ac34800303b6f0a42e1eb2 Mon Sep 17 00:00:00 2001 From: Jim Graham Date: Fri, 14 Jul 2023 15:34:50 -0700 Subject: [PATCH 070/211] Reland "add non-rendering operation culling to DisplayListBuilder" (#41463) (#43698) Fixes https://github.com/flutter/flutter/issues/129862 This reverts commit fc9fc93415578845c1df1b0bc85daba4f14b0233. These changes were exposing an underlying bug in the DisplayListMatrixClipTracker that has now been fixed independently (https://github.com/flutter/engine/pull/43664). There are no changes to the commit being relanded here, it has been tested on the Wondrous app which demonstrated the regression before the NOP culling feature was reverted and it now works fine due to the fix of the underlying cause. --- .../benchmarking/dl_complexity_unittests.cc | 2 +- display_list/display_list.cc | 5 +- display_list/display_list.h | 16 + display_list/display_list_unittests.cc | 160 +++++ display_list/dl_builder.cc | 627 +++++++++++++----- display_list/dl_builder.h | 70 +- display_list/dl_color.h | 32 +- display_list/dl_paint.h | 1 + .../testing/dl_rendering_unittests.cc | 393 ++++++++++- display_list/testing/dl_test_snippets.cc | 2 +- display_list/testing/dl_test_snippets.h | 6 +- display_list/utils/dl_matrix_clip_tracker.h | 4 +- flow/diff_context_unittests.cc | 2 +- flow/layers/container_layer_unittests.cc | 12 +- flow/layers/display_list_layer_unittests.cc | 19 +- flow/layers/opacity_layer_unittests.cc | 4 +- flow/testing/diff_context_test.cc | 2 +- flow/testing/diff_context_test.h | 3 +- impeller/display_list/dl_unittests.cc | 16 +- shell/common/dl_op_spy_unittests.cc | 202 ++++-- 20 files changed, 1267 insertions(+), 311 deletions(-) diff --git a/display_list/benchmarking/dl_complexity_unittests.cc b/display_list/benchmarking/dl_complexity_unittests.cc index 4ec6111485d88..eee77ac9bdf55 100644 --- a/display_list/benchmarking/dl_complexity_unittests.cc +++ b/display_list/benchmarking/dl_complexity_unittests.cc @@ -423,7 +423,7 @@ TEST(DisplayListComplexity, DrawAtlas) { std::vector xforms; for (int i = 0; i < 10; i++) { rects.push_back(SkRect::MakeXYWH(0, 0, 10, 10)); - xforms.push_back(SkRSXform::Make(0, 0, 0, 0)); + xforms.push_back(SkRSXform::Make(1, 0, 0, 0)); } DisplayListBuilder builder; diff --git a/display_list/display_list.cc b/display_list/display_list.cc index 378f86804f260..e06bcf246d3d4 100644 --- a/display_list/display_list.cc +++ b/display_list/display_list.cc @@ -22,7 +22,8 @@ DisplayList::DisplayList() unique_id_(0), bounds_({0, 0, 0, 0}), can_apply_group_opacity_(true), - is_ui_thread_safe_(true) {} + is_ui_thread_safe_(true), + modifies_transparent_black_(false) {} DisplayList::DisplayList(DisplayListStorage&& storage, size_t byte_count, @@ -32,6 +33,7 @@ DisplayList::DisplayList(DisplayListStorage&& storage, const SkRect& bounds, bool can_apply_group_opacity, bool is_ui_thread_safe, + bool modifies_transparent_black, sk_sp rtree) : storage_(std::move(storage)), byte_count_(byte_count), @@ -42,6 +44,7 @@ DisplayList::DisplayList(DisplayListStorage&& storage, bounds_(bounds), can_apply_group_opacity_(can_apply_group_opacity), is_ui_thread_safe_(is_ui_thread_safe), + modifies_transparent_black_(modifies_transparent_black), rtree_(std::move(rtree)) {} DisplayList::~DisplayList() { diff --git a/display_list/display_list.h b/display_list/display_list.h index 4a6f339fdea0d..668a247d5596f 100644 --- a/display_list/display_list.h +++ b/display_list/display_list.h @@ -265,6 +265,19 @@ class DisplayList : public SkRefCnt { bool can_apply_group_opacity() const { return can_apply_group_opacity_; } bool isUIThreadSafe() const { return is_ui_thread_safe_; } + /// @brief Indicates if there are any rendering operations in this + /// DisplayList that will modify a surface of transparent black + /// pixels. + /// + /// This condition can be used to determine whether to create a cleared + /// surface, render a DisplayList into it, and then composite the + /// result into a scene. It is not uncommon for code in the engine to + /// come across such degenerate DisplayList objects when slicing up a + /// frame between platform views. + bool modifies_transparent_black() const { + return modifies_transparent_black_; + } + private: DisplayList(DisplayListStorage&& ptr, size_t byte_count, @@ -274,6 +287,7 @@ class DisplayList : public SkRefCnt { const SkRect& bounds, bool can_apply_group_opacity, bool is_ui_thread_safe, + bool modifies_transparent_black, sk_sp rtree); static uint32_t next_unique_id(); @@ -292,6 +306,8 @@ class DisplayList : public SkRefCnt { const bool can_apply_group_opacity_; const bool is_ui_thread_safe_; + const bool modifies_transparent_black_; + const sk_sp rtree_; void Dispatch(DlOpReceiver& ctx, diff --git a/display_list/display_list_unittests.cc b/display_list/display_list_unittests.cc index 4c16f6e4438dc..9bead1ee8ff76 100644 --- a/display_list/display_list_unittests.cc +++ b/display_list/display_list_unittests.cc @@ -24,6 +24,7 @@ #include "third_party/skia/include/core/SkBBHFactory.h" #include "third_party/skia/include/core/SkColorFilter.h" #include "third_party/skia/include/core/SkPictureRecorder.h" +#include "third_party/skia/include/core/SkRSXform.h" #include "third_party/skia/include/core/SkSurface.h" namespace flutter { @@ -3018,5 +3019,164 @@ TEST_F(DisplayListTest, DrawUnorderedRoundRectPathCCW) { check_inverted_bounds(renderer, "DrawRoundRectPath Counter-Clockwise"); } +TEST_F(DisplayListTest, NopOperationsOmittedFromRecords) { + auto run_tests = [](const std::string& name, + void init(DisplayListBuilder & builder, DlPaint & paint), + uint32_t expected_op_count = 0u) { + auto run_one_test = + [init](const std::string& name, + void build(DisplayListBuilder & builder, DlPaint & paint), + uint32_t expected_op_count = 0u) { + DisplayListBuilder builder; + DlPaint paint; + init(builder, paint); + build(builder, paint); + auto list = builder.Build(); + if (list->op_count() != expected_op_count) { + FML_LOG(ERROR) << *list; + } + ASSERT_EQ(list->op_count(), expected_op_count) << name; + ASSERT_TRUE(list->bounds().isEmpty()) << name; + }; + run_one_test( + name + " DrawColor", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.DrawColor(paint.getColor(), paint.getBlendMode()); + }, + expected_op_count); + run_one_test( + name + " DrawPaint", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.DrawPaint(paint); + }, + expected_op_count); + run_one_test( + name + " DrawRect", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.DrawRect({10, 10, 20, 20}, paint); + }, + expected_op_count); + run_one_test( + name + " Other Draw Ops", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.DrawLine({10, 10}, {20, 20}, paint); + builder.DrawOval({10, 10, 20, 20}, paint); + builder.DrawCircle({50, 50}, 20, paint); + builder.DrawRRect(SkRRect::MakeRectXY({10, 10, 20, 20}, 5, 5), paint); + builder.DrawDRRect(SkRRect::MakeRectXY({5, 5, 100, 100}, 5, 5), + SkRRect::MakeRectXY({10, 10, 20, 20}, 5, 5), + paint); + builder.DrawPath(kTestPath1, paint); + builder.DrawArc({10, 10, 20, 20}, 45, 90, true, paint); + SkPoint pts[] = {{10, 10}, {20, 20}}; + builder.DrawPoints(PointMode::kLines, 2, pts, paint); + builder.DrawVertices(TestVertices1, DlBlendMode::kSrcOver, paint); + builder.DrawImage(TestImage1, {10, 10}, DlImageSampling::kLinear, + &paint); + builder.DrawImageRect(TestImage1, SkRect{0.0f, 0.0f, 10.0f, 10.0f}, + SkRect{10.0f, 10.0f, 25.0f, 25.0f}, + DlImageSampling::kLinear, &paint); + builder.DrawImageNine(TestImage1, {10, 10, 20, 20}, + {10, 10, 100, 100}, DlFilterMode::kLinear, + &paint); + SkRSXform xforms[] = {{1, 0, 10, 10}, {0, 1, 10, 10}}; + SkRect rects[] = {{10, 10, 20, 20}, {10, 20, 30, 20}}; + builder.DrawAtlas(TestImage1, xforms, rects, nullptr, 2, + DlBlendMode::kSrcOver, DlImageSampling::kLinear, + nullptr, &paint); + builder.DrawTextBlob(TestBlob1, 10, 10, paint); + + // Dst mode eliminates most rendering ops except for + // the following two, so we'll prune those manually... + if (paint.getBlendMode() != DlBlendMode::kDst) { + builder.DrawDisplayList(TestDisplayList1, paint.getOpacity()); + builder.DrawShadow(kTestPath1, paint.getColor(), 1, true, 1); + } + }, + expected_op_count); + run_one_test( + name + " SaveLayer", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.SaveLayer(nullptr, &paint, nullptr); + builder.DrawRect({10, 10, 20, 20}, DlPaint()); + builder.Restore(); + }, + expected_op_count); + run_one_test( + name + " inside Save", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.Save(); + builder.DrawRect({10, 10, 20, 20}, paint); + builder.Restore(); + }, + expected_op_count); + }; + run_tests("transparent color", // + [](DisplayListBuilder& builder, DlPaint& paint) { + paint.setColor(DlColor::kTransparent()); + }); + run_tests("0 alpha", // + [](DisplayListBuilder& builder, DlPaint& paint) { + // The transparent test above already tested transparent + // black (all 0s), we set White color here so we can test + // the case of all 1s with a 0 alpha + paint.setColor(DlColor::kWhite()); + paint.setAlpha(0); + }); + run_tests("BlendMode::kDst", // + [](DisplayListBuilder& builder, DlPaint& paint) { + paint.setBlendMode(DlBlendMode::kDst); + }); + run_tests("Empty rect clip", // + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.ClipRect(SkRect::MakeEmpty(), ClipOp::kIntersect, false); + }); + run_tests("Empty rrect clip", // + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.ClipRRect(SkRRect::MakeEmpty(), ClipOp::kIntersect, + false); + }); + run_tests("Empty path clip", // + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.ClipPath(SkPath(), ClipOp::kIntersect, false); + }); + run_tests("Transparent SaveLayer", // + [](DisplayListBuilder& builder, DlPaint& paint) { + DlPaint save_paint; + save_paint.setColor(DlColor::kTransparent()); + builder.SaveLayer(nullptr, &save_paint); + }); + run_tests("0 alpha SaveLayer", // + [](DisplayListBuilder& builder, DlPaint& paint) { + DlPaint save_paint; + // The transparent test above already tested transparent + // black (all 0s), we set White color here so we can test + // the case of all 1s with a 0 alpha + save_paint.setColor(DlColor::kWhite()); + save_paint.setAlpha(0); + builder.SaveLayer(nullptr, &save_paint); + }); + run_tests("Dst blended SaveLayer", // + [](DisplayListBuilder& builder, DlPaint& paint) { + DlPaint save_paint; + save_paint.setBlendMode(DlBlendMode::kDst); + builder.SaveLayer(nullptr, &save_paint); + }); + run_tests( + "Nop inside SaveLayer", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.SaveLayer(nullptr, nullptr); + paint.setBlendMode(DlBlendMode::kDst); + }, + 2u); + run_tests("DrawImage inside Culled SaveLayer", // + [](DisplayListBuilder& builder, DlPaint& paint) { + DlPaint save_paint; + save_paint.setColor(DlColor::kTransparent()); + builder.SaveLayer(nullptr, &save_paint); + builder.DrawImage(TestImage1, {10, 10}, DlImageSampling::kLinear); + }); +} + } // namespace testing } // namespace flutter diff --git a/display_list/dl_builder.cc b/display_list/dl_builder.cc index ea2a132580780..266a8609ec5ed 100644 --- a/display_list/dl_builder.cc +++ b/display_list/dl_builder.cc @@ -6,10 +6,12 @@ #include "flutter/display_list/display_list.h" #include "flutter/display_list/dl_blend_mode.h" +#include "flutter/display_list/dl_op_flags.h" #include "flutter/display_list/dl_op_records.h" #include "flutter/display_list/effects/dl_color_source.h" #include "flutter/display_list/utils/dl_bounds_accumulator.h" #include "fml/logging.h" +#include "third_party/skia/include/core/SkScalar.h" namespace flutter { @@ -70,20 +72,22 @@ sk_sp DisplayListBuilder::Build() { int count = render_op_count_; size_t nested_bytes = nested_bytes_; int nested_count = nested_op_count_; - bool compatible = layer_stack_.back().is_group_opacity_compatible(); + bool compatible = current_layer_->is_group_opacity_compatible(); bool is_safe = is_ui_thread_safe_; + bool affects_transparency = current_layer_->affects_transparent_layer(); used_ = allocated_ = render_op_count_ = op_index_ = 0; nested_bytes_ = nested_op_count_ = 0; + is_ui_thread_safe_ = true; storage_.realloc(bytes); layer_stack_.pop_back(); layer_stack_.emplace_back(); tracker_.reset(); current_ = DlPaint(); - return sk_sp( - new DisplayList(std::move(storage_), bytes, count, nested_bytes, - nested_count, bounds(), compatible, is_safe, rtree())); + return sk_sp(new DisplayList( + std::move(storage_), bytes, count, nested_bytes, nested_count, bounds(), + compatible, is_safe, affects_transparency, rtree())); } DisplayListBuilder::DisplayListBuilder(const SkRect& cull_rect, @@ -389,9 +393,11 @@ void DisplayListBuilder::checkForDeferredSave() { } void DisplayListBuilder::Save() { + bool is_nop = current_layer_->is_nop_; layer_stack_.emplace_back(); current_layer_ = &layer_stack_.back(); current_layer_->has_deferred_save_op_ = true; + current_layer_->is_nop_ = is_nop; tracker_.save(); accumulator()->save(); } @@ -478,18 +484,16 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, const SaveLayerOptions in_options, const DlImageFilter* backdrop) { SaveLayerOptions options = in_options.without_optimizations(); - size_t save_layer_offset = used_; - if (backdrop) { - bounds // - ? Push(0, 1, options, *bounds, backdrop) - : Push(0, 1, options, backdrop); - } else { - bounds // - ? Push(0, 1, options, *bounds) - : Push(0, 1, options); + DisplayListAttributeFlags flags = options.renders_with_attributes() + ? kSaveLayerWithPaintFlags + : kSaveLayerFlags; + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + save(); + current_layer_->is_nop_ = true; + return; } - CheckLayerOpacityCompatibility(options.renders_with_attributes()); - + size_t save_layer_offset = used_; if (options.renders_with_attributes()) { // The actual flood of the outer layer clip will occur after the // (eventual) corresponding restore is called, but rather than @@ -500,17 +504,41 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, // with its full bounds and the right op_index so that it doesn't // get culled during rendering. if (!paint_nops_on_transparency()) { - // We will fill the clip of the outer layer when we restore - AccumulateUnbounded(); + // We will fill the clip of the outer layer when we restore. + // Accumulate should always return true here because if the + // clip was empty then that would have been caught up above + // when we tested the PaintResult. + [[maybe_unused]] bool unclipped = AccumulateUnbounded(); + FML_DCHECK(unclipped); } + CheckLayerOpacityCompatibility(true); layer_stack_.emplace_back(save_layer_offset, true, current_.getImageFilter()); } else { + CheckLayerOpacityCompatibility(false); layer_stack_.emplace_back(save_layer_offset, true, nullptr); } + current_layer_ = &layer_stack_.back(); + tracker_.save(); accumulator()->save(); - current_layer_ = &layer_stack_.back(); + + if (backdrop) { + // A backdrop will affect up to the entire surface, bounded by the clip + // Accumulate should always return true here because if the + // clip was empty then that would have been caught up above + // when we tested the PaintResult. + [[maybe_unused]] bool unclipped = AccumulateUnbounded(); + FML_DCHECK(unclipped); + bounds // + ? Push(0, 1, options, *bounds, backdrop) + : Push(0, 1, options, backdrop); + } else { + bounds // + ? Push(0, 1, options, *bounds) + : Push(0, 1, options); + } + if (options.renders_with_attributes()) { // |current_opacity_compatibility_| does not take an ImageFilter into // account because an individual primitive with an ImageFilter can apply @@ -521,6 +549,7 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, UpdateLayerOpacityCompatibility(false); } } + UpdateLayerResult(result); // Even though Skia claims that the bounds are only a hint, they actually // use them as the temporary layer bounds during rendering the layer, so @@ -528,10 +557,6 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, if (bounds) { tracker_.clipRect(*bounds, ClipOp::kIntersect, false); } - if (backdrop) { - // A backdrop will affect up to the entire surface, bounded by the clip - AccumulateUnbounded(); - } } void DisplayListBuilder::SaveLayer(const SkRect* bounds, const DlPaint* paint, @@ -654,6 +679,11 @@ void DisplayListBuilder::ClipRect(const SkRect& rect, if (!rect.isFinite()) { return; } + tracker_.clipRect(rect, clip_op, is_aa); + if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { + current_layer_->is_nop_ = true; + return; + } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -663,7 +693,6 @@ void DisplayListBuilder::ClipRect(const SkRect& rect, Push(0, 1, rect, is_aa); break; } - tracker_.clipRect(rect, clip_op, is_aa); } void DisplayListBuilder::ClipRRect(const SkRRect& rrect, ClipOp clip_op, @@ -671,6 +700,11 @@ void DisplayListBuilder::ClipRRect(const SkRRect& rrect, if (rrect.isRect()) { clipRect(rrect.rect(), clip_op, is_aa); } else { + tracker_.clipRRect(rrect, clip_op, is_aa); + if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { + current_layer_->is_nop_ = true; + return; + } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -680,7 +714,6 @@ void DisplayListBuilder::ClipRRect(const SkRRect& rrect, Push(0, 1, rrect, is_aa); break; } - tracker_.clipRRect(rrect, clip_op, is_aa); } } void DisplayListBuilder::ClipPath(const SkPath& path, @@ -703,6 +736,11 @@ void DisplayListBuilder::ClipPath(const SkPath& path, return; } } + tracker_.clipPath(path, clip_op, is_aa); + if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { + current_layer_->is_nop_ = true; + return; + } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -712,7 +750,6 @@ void DisplayListBuilder::ClipPath(const SkPath& path, Push(0, 1, path, is_aa); break; } - tracker_.clipPath(path, clip_op, is_aa); } bool DisplayListBuilder::QuickReject(const SkRect& bounds) const { @@ -720,27 +757,36 @@ bool DisplayListBuilder::QuickReject(const SkRect& bounds) const { } void DisplayListBuilder::drawPaint() { - Push(0, 1); - CheckLayerOpacityCompatibility(); - AccumulateUnbounded(); + OpResult result = PaintResult(current_, kDrawPaintFlags); + if (result != OpResult::kNoEffect && AccumulateUnbounded()) { + Push(0, 1); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawPaint(const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawPaintFlags); drawPaint(); } void DisplayListBuilder::DrawColor(DlColor color, DlBlendMode mode) { - Push(0, 1, color, mode); - CheckLayerOpacityCompatibility(mode); - AccumulateUnbounded(); + OpResult result = PaintResult(DlPaint(color).setBlendMode(mode)); + if (result != OpResult::kNoEffect && AccumulateUnbounded()) { + Push(0, 1, color, mode); + CheckLayerOpacityCompatibility(mode); + UpdateLayerResult(result); + } } void DisplayListBuilder::drawLine(const SkPoint& p0, const SkPoint& p1) { - Push(0, 1, p0, p1); - CheckLayerOpacityCompatibility(); SkRect bounds = SkRect::MakeLTRB(p0.fX, p0.fY, p1.fX, p1.fY).makeSorted(); DisplayListAttributeFlags flags = (bounds.width() > 0.0f && bounds.height() > 0.0f) ? kDrawLineFlags : kDrawHVLineFlags; - AccumulateOpBounds(bounds, flags); + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && AccumulateOpBounds(bounds, flags)) { + Push(0, 1, p0, p1); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawLine(const SkPoint& p0, const SkPoint& p1, @@ -749,29 +795,45 @@ void DisplayListBuilder::DrawLine(const SkPoint& p0, drawLine(p0, p1); } void DisplayListBuilder::drawRect(const SkRect& rect) { - Push(0, 1, rect); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(rect.makeSorted(), kDrawRectFlags); + DisplayListAttributeFlags flags = kDrawRectFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(rect.makeSorted(), flags)) { + Push(0, 1, rect); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawRect(const SkRect& rect, const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawRectFlags); drawRect(rect); } void DisplayListBuilder::drawOval(const SkRect& bounds) { - Push(0, 1, bounds); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(bounds.makeSorted(), kDrawOvalFlags); + DisplayListAttributeFlags flags = kDrawOvalFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(bounds.makeSorted(), flags)) { + Push(0, 1, bounds); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawOval(const SkRect& bounds, const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawOvalFlags); drawOval(bounds); } void DisplayListBuilder::drawCircle(const SkPoint& center, SkScalar radius) { - Push(0, 1, center, radius); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(SkRect::MakeLTRB(center.fX - radius, center.fY - radius, - center.fX + radius, center.fY + radius), - kDrawCircleFlags); + DisplayListAttributeFlags flags = kDrawCircleFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect) { + SkRect bounds = SkRect::MakeLTRB(center.fX - radius, center.fY - radius, + center.fX + radius, center.fY + radius); + if (AccumulateOpBounds(bounds, flags)) { + Push(0, 1, center, radius); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } + } } void DisplayListBuilder::DrawCircle(const SkPoint& center, SkScalar radius, @@ -785,9 +847,14 @@ void DisplayListBuilder::drawRRect(const SkRRect& rrect) { } else if (rrect.isOval()) { drawOval(rrect.rect()); } else { - Push(0, 1, rrect); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(rrect.getBounds(), kDrawRRectFlags); + DisplayListAttributeFlags flags = kDrawRRectFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(rrect.getBounds(), flags)) { + Push(0, 1, rrect); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } } void DisplayListBuilder::DrawRRect(const SkRRect& rrect, const DlPaint& paint) { @@ -796,9 +863,14 @@ void DisplayListBuilder::DrawRRect(const SkRRect& rrect, const DlPaint& paint) { } void DisplayListBuilder::drawDRRect(const SkRRect& outer, const SkRRect& inner) { - Push(0, 1, outer, inner); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(outer.getBounds(), kDrawDRRectFlags); + DisplayListAttributeFlags flags = kDrawDRRectFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(outer.getBounds(), flags)) { + Push(0, 1, outer, inner); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawDRRect(const SkRRect& outer, const SkRRect& inner, @@ -807,12 +879,17 @@ void DisplayListBuilder::DrawDRRect(const SkRRect& outer, drawDRRect(outer, inner); } void DisplayListBuilder::drawPath(const SkPath& path) { - Push(0, 1, path); - CheckLayerOpacityHairlineCompatibility(); - if (path.isInverseFillType()) { - AccumulateUnbounded(); - } else { - AccumulateOpBounds(path.getBounds(), kDrawPathFlags); + DisplayListAttributeFlags flags = kDrawPathFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect) { + bool is_visible = path.isInverseFillType() + ? AccumulateUnbounded() + : AccumulateOpBounds(path.getBounds(), flags); + if (is_visible) { + Push(0, 1, path); + CheckLayerOpacityHairlineCompatibility(); + UpdateLayerResult(result); + } } } void DisplayListBuilder::DrawPath(const SkPath& path, const DlPaint& paint) { @@ -824,19 +901,23 @@ void DisplayListBuilder::drawArc(const SkRect& bounds, SkScalar start, SkScalar sweep, bool useCenter) { - Push(0, 1, bounds, start, sweep, useCenter); - if (useCenter) { - CheckLayerOpacityHairlineCompatibility(); - } else { - CheckLayerOpacityCompatibility(); - } + DisplayListAttributeFlags flags = // + useCenter // + ? kDrawArcWithCenterFlags + : kDrawArcNoCenterFlags; + OpResult result = PaintResult(current_, flags); // This could be tighter if we compute where the start and end // angles are and then also consider the quadrants swept and // the center if specified. - AccumulateOpBounds(bounds, - useCenter // - ? kDrawArcWithCenterFlags - : kDrawArcNoCenterFlags); + if (result != OpResult::kNoEffect && AccumulateOpBounds(bounds, flags)) { + Push(0, 1, bounds, start, sweep, useCenter); + if (useCenter) { + CheckLayerOpacityHairlineCompatibility(); + } else { + CheckLayerOpacityCompatibility(); + } + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawArc(const SkRect& bounds, SkScalar start, @@ -847,14 +928,31 @@ void DisplayListBuilder::DrawArc(const SkRect& bounds, paint, useCenter ? kDrawArcWithCenterFlags : kDrawArcNoCenterFlags); drawArc(bounds, start, sweep, useCenter); } + +DisplayListAttributeFlags DisplayListBuilder::FlagsForPointMode( + PointMode mode) { + switch (mode) { + case DlCanvas::PointMode::kPoints: + return kDrawPointsAsPointsFlags; + case PointMode::kLines: + return kDrawPointsAsLinesFlags; + case PointMode::kPolygon: + return kDrawPointsAsPolygonFlags; + } + FML_UNREACHABLE(); +} void DisplayListBuilder::drawPoints(PointMode mode, uint32_t count, const SkPoint pts[]) { if (count == 0) { return; } + DisplayListAttributeFlags flags = FlagsForPointMode(mode); + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + return; + } - void* data_ptr; FML_DCHECK(count < DlOpReceiver::kMaxDrawPointsCount); int bytes = count * sizeof(SkPoint); RectBoundsAccumulator ptBounds; @@ -862,21 +960,23 @@ void DisplayListBuilder::drawPoints(PointMode mode, ptBounds.accumulate(pts[i]); } SkRect point_bounds = ptBounds.bounds(); + if (!AccumulateOpBounds(point_bounds, flags)) { + return; + } + + void* data_ptr; switch (mode) { case PointMode::kPoints: data_ptr = Push(bytes, 1, count); - AccumulateOpBounds(point_bounds, kDrawPointsAsPointsFlags); break; case PointMode::kLines: data_ptr = Push(bytes, 1, count); - AccumulateOpBounds(point_bounds, kDrawPointsAsLinesFlags); break; case PointMode::kPolygon: data_ptr = Push(bytes, 1, count); - AccumulateOpBounds(point_bounds, kDrawPointsAsPolygonFlags); break; default: - FML_DCHECK(false); + FML_UNREACHABLE(); return; } CopyV(data_ptr, pts, count); @@ -886,39 +986,30 @@ void DisplayListBuilder::drawPoints(PointMode mode, // bounds of every sub-primitive. // See: https://fiddle.skia.org/c/228459001d2de8db117ce25ef5cedb0c UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); } void DisplayListBuilder::DrawPoints(PointMode mode, uint32_t count, const SkPoint pts[], const DlPaint& paint) { - const DisplayListAttributeFlags* flags; - switch (mode) { - case PointMode::kPoints: - flags = &DisplayListOpFlags::kDrawPointsAsPointsFlags; - break; - case PointMode::kLines: - flags = &DisplayListOpFlags::kDrawPointsAsLinesFlags; - break; - case PointMode::kPolygon: - flags = &DisplayListOpFlags::kDrawPointsAsPolygonFlags; - break; - default: - FML_DCHECK(false); - return; - } - SetAttributesFromPaint(paint, *flags); + SetAttributesFromPaint(paint, FlagsForPointMode(mode)); drawPoints(mode, count, pts); } void DisplayListBuilder::drawVertices(const DlVertices* vertices, DlBlendMode mode) { - void* pod = Push(vertices->size(), 1, mode); - new (pod) DlVertices(vertices); - // DrawVertices applies its colors to the paint so we have no way - // of controlling opacity using the current paint attributes. - // Although, examination of the |mode| might find some predictable - // cases. - UpdateLayerOpacityCompatibility(false); - AccumulateOpBounds(vertices->bounds(), kDrawVerticesFlags); + DisplayListAttributeFlags flags = kDrawVerticesFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(vertices->bounds(), flags)) { + void* pod = Push(vertices->size(), 1, mode); + new (pod) DlVertices(vertices); + // DrawVertices applies its colors to the paint so we have no way + // of controlling opacity using the current paint attributes. + // Although, examination of the |mode| might find some predictable + // cases. + UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawVertices(const DlVertices* vertices, DlBlendMode mode, @@ -931,17 +1022,23 @@ void DisplayListBuilder::drawImage(const sk_sp image, const SkPoint point, DlImageSampling sampling, bool render_with_attributes) { - render_with_attributes - ? Push(0, 1, image, point, sampling) - : Push(0, 1, image, point, sampling); - CheckLayerOpacityCompatibility(render_with_attributes); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); - SkRect bounds = SkRect::MakeXYWH(point.fX, point.fY, // - image->width(), image->height()); DisplayListAttributeFlags flags = render_with_attributes // ? kDrawImageWithPaintFlags : kDrawImageFlags; - AccumulateOpBounds(bounds, flags); + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + return; + } + SkRect bounds = SkRect::MakeXYWH(point.fX, point.fY, // + image->width(), image->height()); + if (AccumulateOpBounds(bounds, flags)) { + render_with_attributes + ? Push(0, 1, image, point, sampling) + : Push(0, 1, image, point, sampling); + CheckLayerOpacityCompatibility(render_with_attributes); + UpdateLayerResult(result); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); + } } void DisplayListBuilder::DrawImage(const sk_sp& image, const SkPoint point, @@ -961,14 +1058,17 @@ void DisplayListBuilder::drawImageRect(const sk_sp image, DlImageSampling sampling, bool render_with_attributes, SrcRectConstraint constraint) { - Push(0, 1, image, src, dst, sampling, render_with_attributes, - constraint); - CheckLayerOpacityCompatibility(render_with_attributes); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); DisplayListAttributeFlags flags = render_with_attributes ? kDrawImageRectWithPaintFlags : kDrawImageRectFlags; - AccumulateOpBounds(dst, flags); + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && AccumulateOpBounds(dst, flags)) { + Push(0, 1, image, src, dst, sampling, + render_with_attributes, constraint); + CheckLayerOpacityCompatibility(render_with_attributes); + UpdateLayerResult(result); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); + } } void DisplayListBuilder::DrawImageRect(const sk_sp& image, const SkRect& src, @@ -989,15 +1089,18 @@ void DisplayListBuilder::drawImageNine(const sk_sp image, const SkRect& dst, DlFilterMode filter, bool render_with_attributes) { - render_with_attributes - ? Push(0, 1, image, center, dst, filter) - : Push(0, 1, image, center, dst, filter); - CheckLayerOpacityCompatibility(render_with_attributes); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); DisplayListAttributeFlags flags = render_with_attributes ? kDrawImageNineWithPaintFlags : kDrawImageNineFlags; - AccumulateOpBounds(dst, flags); + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && AccumulateOpBounds(dst, flags)) { + render_with_attributes + ? Push(0, 1, image, center, dst, filter) + : Push(0, 1, image, center, dst, filter); + CheckLayerOpacityCompatibility(render_with_attributes); + UpdateLayerResult(result); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); + } } void DisplayListBuilder::DrawImageNine(const sk_sp& image, const SkIRect& center, @@ -1021,6 +1124,27 @@ void DisplayListBuilder::drawAtlas(const sk_sp atlas, DlImageSampling sampling, const SkRect* cull_rect, bool render_with_attributes) { + DisplayListAttributeFlags flags = render_with_attributes // + ? kDrawAtlasWithPaintFlags + : kDrawAtlasFlags; + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + return; + } + SkPoint quad[4]; + RectBoundsAccumulator atlasBounds; + for (int i = 0; i < count; i++) { + const SkRect& src = tex[i]; + xform[i].toQuad(src.width(), src.height(), quad); + for (int j = 0; j < 4; j++) { + atlasBounds.accumulate(quad[j]); + } + } + if (atlasBounds.is_empty() || + !AccumulateOpBounds(atlasBounds.bounds(), flags)) { + return; + } + int bytes = count * (sizeof(SkRSXform) + sizeof(SkRect)); void* data_ptr; if (colors != nullptr) { @@ -1049,23 +1173,8 @@ void DisplayListBuilder::drawAtlas(const sk_sp atlas, // on it to distribute the opacity without overlap without checking all // of the transforms and texture rectangles. UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); is_ui_thread_safe_ = is_ui_thread_safe_ && atlas->isUIThreadSafe(); - - SkPoint quad[4]; - RectBoundsAccumulator atlasBounds; - for (int i = 0; i < count; i++) { - const SkRect& src = tex[i]; - xform[i].toQuad(src.width(), src.height(), quad); - for (int j = 0; j < 4; j++) { - atlasBounds.accumulate(quad[j]); - } - } - if (atlasBounds.is_not_empty()) { - DisplayListAttributeFlags flags = render_with_attributes // - ? kDrawAtlasWithPaintFlags - : kDrawAtlasFlags; - AccumulateOpBounds(atlasBounds.bounds(), flags); - } } void DisplayListBuilder::DrawAtlas(const sk_sp& atlas, const SkRSXform xform[], @@ -1089,35 +1198,49 @@ void DisplayListBuilder::DrawAtlas(const sk_sp& atlas, void DisplayListBuilder::DrawDisplayList(const sk_sp display_list, SkScalar opacity) { - DlPaint current_paint = current_; - Push(0, 1, display_list, opacity); - is_ui_thread_safe_ = is_ui_thread_safe_ && display_list->isUIThreadSafe(); - // Not really necessary if the developer is interacting with us via - // our attribute-state-less DlCanvas methods, but this avoids surprises - // for those who may have been using the stateful Dispatcher methods. - SetAttributesFromPaint(current_paint, - DisplayListOpFlags::kSaveLayerWithPaintFlags); - + if (!SkScalarIsFinite(opacity) || opacity <= SK_ScalarNearlyZero || + display_list->op_count() == 0 || display_list->bounds().isEmpty() || + current_layer_->is_nop_) { + return; + } const SkRect bounds = display_list->bounds(); + bool accumulated; switch (accumulator()->type()) { case BoundsAccumulatorType::kRect: - AccumulateOpBounds(bounds, kDrawDisplayListFlags); + accumulated = AccumulateOpBounds(bounds, kDrawDisplayListFlags); break; case BoundsAccumulatorType::kRTree: auto rtree = display_list->rtree(); if (rtree) { std::list rects = rtree->searchAndConsolidateRects(bounds, false); + accumulated = false; for (const SkRect& rect : rects) { // TODO (https://github.com/flutter/flutter/issues/114919): Attributes // are not necessarily `kDrawDisplayListFlags`. - AccumulateOpBounds(rect, kDrawDisplayListFlags); + if (AccumulateOpBounds(rect, kDrawDisplayListFlags)) { + accumulated = true; + } } } else { - AccumulateOpBounds(bounds, kDrawDisplayListFlags); + accumulated = AccumulateOpBounds(bounds, kDrawDisplayListFlags); } break; } + if (!accumulated) { + return; + } + + DlPaint current_paint = current_; + Push(0, 1, display_list, + opacity < SK_Scalar1 ? opacity : SK_Scalar1); + is_ui_thread_safe_ = is_ui_thread_safe_ && display_list->isUIThreadSafe(); + // Not really necessary if the developer is interacting with us via + // our attribute-state-less DlCanvas methods, but this avoids surprises + // for those who may have been using the stateful Dispatcher methods. + SetAttributesFromPaint(current_paint, + DisplayListOpFlags::kSaveLayerWithPaintFlags); + // The non-nested op count accumulated in the |Push| method will include // this call to |drawDisplayList| for non-nested op count metrics. // But, for nested op count metrics we want the |drawDisplayList| call itself @@ -1127,18 +1250,38 @@ void DisplayListBuilder::DrawDisplayList(const sk_sp display_list, nested_op_count_ += display_list->op_count(true) - 1; nested_bytes_ += display_list->bytes(true); UpdateLayerOpacityCompatibility(display_list->can_apply_group_opacity()); + // Nop DisplayLists are eliminated above so we either affect transparent + // pixels or we do not. We should not have [kNoEffect]. + UpdateLayerResult(display_list->modifies_transparent_black() + ? OpResult::kAffectsAll + : OpResult::kPreservesTransparency); } void DisplayListBuilder::drawTextBlob(const sk_sp blob, SkScalar x, SkScalar y) { - Push(0, 1, blob, x, y); - AccumulateOpBounds(blob->bounds().makeOffset(x, y), kDrawTextBlobFlags); - // There is no way to query if the glyphs of a text blob overlap and - // there are no current guarantees from either Skia or Impeller that - // they will protect overlapping glyphs from the effects of overdraw - // so we must make the conservative assessment that this DL layer is - // not compatible with group opacity inheritance. - UpdateLayerOpacityCompatibility(false); + DisplayListAttributeFlags flags = kDrawTextBlobFlags; + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + return; + } + bool unclipped = AccumulateOpBounds(blob->bounds().makeOffset(x, y), flags); + // TODO(https://github.com/flutter/flutter/issues/82202): Remove once the + // unit tests can use Fuchsia's font manager instead of the empty default. + // Until then we might encounter empty bounds for otherwise valid text and + // thus we ignore the results from AccumulateOpBounds. +#if defined(OS_FUCHSIA) + unclipped = true; +#endif // OS_FUCHSIA + if (unclipped) { + Push(0, 1, blob, x, y); + // There is no way to query if the glyphs of a text blob overlap and + // there are no current guarantees from either Skia or Impeller that + // they will protect overlapping glyphs from the effects of overdraw + // so we must make the conservative assessment that this DL layer is + // not compatible with group opacity inheritance. + UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawTextBlob(const sk_sp& blob, SkScalar x, @@ -1152,14 +1295,19 @@ void DisplayListBuilder::DrawShadow(const SkPath& path, const SkScalar elevation, bool transparent_occluder, SkScalar dpr) { - transparent_occluder // - ? Push(0, 1, path, color, elevation, dpr) - : Push(0, 1, path, color, elevation, dpr); - - SkRect shadow_bounds = - DlCanvas::ComputeShadowBounds(path, elevation, dpr, GetTransform()); - AccumulateOpBounds(shadow_bounds, kDrawShadowFlags); - UpdateLayerOpacityCompatibility(false); + OpResult result = PaintResult(DlPaint(color)); + if (result != OpResult::kNoEffect) { + SkRect shadow_bounds = + DlCanvas::ComputeShadowBounds(path, elevation, dpr, GetTransform()); + if (AccumulateOpBounds(shadow_bounds, kDrawShadowFlags)) { + transparent_occluder // + ? Push(0, 1, path, color, elevation, + dpr) + : Push(0, 1, path, color, elevation, dpr); + UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); + } + } } bool DisplayListBuilder::ComputeFilteredBounds(SkRect& bounds, @@ -1229,31 +1377,40 @@ bool DisplayListBuilder::AdjustBoundsForPaint(SkRect& bounds, return true; } -void DisplayListBuilder::AccumulateUnbounded() { - accumulator()->accumulate(tracker_.device_cull_rect(), op_index_ - 1); +bool DisplayListBuilder::AccumulateUnbounded() { + SkRect clip = tracker_.device_cull_rect(); + if (clip.isEmpty()) { + return false; + } + accumulator()->accumulate(clip, op_index_); + return true; } -void DisplayListBuilder::AccumulateOpBounds(SkRect& bounds, +bool DisplayListBuilder::AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags) { if (AdjustBoundsForPaint(bounds, flags)) { - AccumulateBounds(bounds); + return AccumulateBounds(bounds); } else { - AccumulateUnbounded(); + return AccumulateUnbounded(); } } -void DisplayListBuilder::AccumulateBounds(SkRect& bounds) { - tracker_.mapRect(&bounds); - if (bounds.intersect(tracker_.device_cull_rect())) { - accumulator()->accumulate(bounds, op_index_ - 1); +bool DisplayListBuilder::AccumulateBounds(SkRect& bounds) { + if (!bounds.isEmpty()) { + tracker_.mapRect(&bounds); + if (bounds.intersect(tracker_.device_cull_rect())) { + accumulator()->accumulate(bounds, op_index_); + return true; + } } + return false; } bool DisplayListBuilder::paint_nops_on_transparency() { // SkImageFilter::canComputeFastBounds tests for transparency behavior // This test assumes that the blend mode checked down below will // NOP on transparent black. - if (current_.getImageFilter() && - current_.getImageFilter()->modifies_transparent_black()) { + if (current_.getImageFilterPtr() && + current_.getImageFilterPtr()->modifies_transparent_black()) { return false; } @@ -1263,8 +1420,8 @@ bool DisplayListBuilder::paint_nops_on_transparency() { // save layer untouched out to the edge of the output surface. // This test assumes that the blend mode checked down below will // NOP on transparent black. - if (current_.getColorFilter() && - current_.getColorFilter()->modifies_transparent_black()) { + if (current_.getColorFilterPtr() && + current_.getColorFilterPtr()->modifies_transparent_black()) { return false; } @@ -1321,4 +1478,130 @@ bool DisplayListBuilder::paint_nops_on_transparency() { break; } } + +DlColor DisplayListBuilder::GetEffectiveColor(const DlPaint& paint, + DisplayListAttributeFlags flags) { + DlColor color; + if (flags.applies_color()) { + const DlColorSource* source = paint.getColorSourcePtr(); + if (source) { + if (source->asColor()) { + color = source->asColor()->color(); + } else { + color = source->is_opaque() ? DlColor::kBlack() : kAnyColor; + } + } else { + color = paint.getColor(); + } + } else if (flags.applies_alpha()) { + // If the operation applies alpha, but not color, then the only impact + // of the alpha is to modulate the output towards transparency. + // We can not guarantee an opaque source even if the alpha is opaque + // since that would require knowing something about the colors that + // the alpha is modulating, but we can guarantee a transparent source + // if the alpha is 0. + color = (paint.getAlpha() == 0) ? DlColor::kTransparent() : kAnyColor; + } else { + color = kAnyColor; + } + if (flags.applies_image_filter()) { + auto filter = paint.getImageFilterPtr(); + if (filter) { + if (!color.isTransparent() || filter->modifies_transparent_black()) { + color = kAnyColor; + } + } + } + if (flags.applies_color_filter()) { + auto filter = paint.getColorFilterPtr(); + if (filter) { + if (!color.isTransparent() || filter->modifies_transparent_black()) { + color = kAnyColor; + } + } + } + return color; +} + +DisplayListBuilder::OpResult DisplayListBuilder::PaintResult( + const DlPaint& paint, + DisplayListAttributeFlags flags) { + if (current_layer_->is_nop_) { + return OpResult::kNoEffect; + } + if (flags.applies_blend()) { + switch (paint.getBlendMode()) { + // Nop blend mode (singular, there is only one) + case DlBlendMode::kDst: + return OpResult::kNoEffect; + + // Always clears pixels blend mode (singular, there is only one) + case DlBlendMode::kClear: + return OpResult::kPreservesTransparency; + + case DlBlendMode::kHue: + case DlBlendMode::kSaturation: + case DlBlendMode::kColor: + case DlBlendMode::kLuminosity: + case DlBlendMode::kColorBurn: + return GetEffectiveColor(paint, flags).isTransparent() + ? OpResult::kNoEffect + : OpResult::kAffectsAll; + + // kSrcIn modifies pixels towards transparency + case DlBlendMode::kSrcIn: + return OpResult::kPreservesTransparency; + + // These blend modes preserve destination alpha + case DlBlendMode::kSrcATop: + case DlBlendMode::kDstOut: + return GetEffectiveColor(paint, flags).isTransparent() + ? OpResult::kNoEffect + : OpResult::kPreservesTransparency; + + // Always destructive blend modes, potentially not affecting transparency + case DlBlendMode::kSrc: + case DlBlendMode::kSrcOut: + case DlBlendMode::kDstATop: + return GetEffectiveColor(paint, flags).isTransparent() + ? OpResult::kPreservesTransparency + : OpResult::kAffectsAll; + + // The kDstIn blend mode modifies the destination unless the + // source color is opaque. + case DlBlendMode::kDstIn: + return GetEffectiveColor(paint, flags).isOpaque() + ? OpResult::kNoEffect + : OpResult::kPreservesTransparency; + + // The next group of blend modes modifies the destination unless the + // source color is transparent. + case DlBlendMode::kSrcOver: + case DlBlendMode::kDstOver: + case DlBlendMode::kXor: + case DlBlendMode::kPlus: + case DlBlendMode::kScreen: + case DlBlendMode::kMultiply: + case DlBlendMode::kOverlay: + case DlBlendMode::kDarken: + case DlBlendMode::kLighten: + case DlBlendMode::kColorDodge: + case DlBlendMode::kHardLight: + case DlBlendMode::kSoftLight: + case DlBlendMode::kDifference: + case DlBlendMode::kExclusion: + return GetEffectiveColor(paint, flags).isTransparent() + ? OpResult::kNoEffect + : OpResult::kAffectsAll; + + // Modulate only leaves the pixel alone when the source is white. + case DlBlendMode::kModulate: + return GetEffectiveColor(paint, flags) == DlColor::kWhite() + ? OpResult::kNoEffect + : OpResult::kPreservesTransparency; + } + } + return OpResult::kAffectsAll; +} + } // namespace flutter diff --git a/display_list/dl_builder.h b/display_list/dl_builder.h index 1d9cb8eb12299..ab0bce0db3c38 100644 --- a/display_list/dl_builder.h +++ b/display_list/dl_builder.h @@ -506,15 +506,13 @@ class DisplayListBuilder final : public virtual DlCanvas, class LayerInfo { public: - explicit LayerInfo(size_t save_offset = 0, - bool has_layer = false, - std::shared_ptr filter = nullptr) + explicit LayerInfo( + size_t save_offset = 0, + bool has_layer = false, + const std::shared_ptr& filter = nullptr) : save_offset_(save_offset), has_layer_(has_layer), - cannot_inherit_opacity_(false), - has_compatible_op_(false), - filter_(filter), - is_unbounded_(false) {} + filter_(filter) {} // The offset into the memory buffer where the saveLayer DLOp record // for this saveLayer() call is placed. This may be needed if the @@ -527,6 +525,9 @@ class DisplayListBuilder final : public virtual DlCanvas, bool has_layer() const { return has_layer_; } bool cannot_inherit_opacity() const { return cannot_inherit_opacity_; } bool has_compatible_op() const { return has_compatible_op_; } + bool affects_transparent_layer() const { + return affects_transparent_layer_; + } bool is_group_opacity_compatible() const { return !cannot_inherit_opacity_; @@ -549,6 +550,12 @@ class DisplayListBuilder final : public virtual DlCanvas, } } + // Records that the current layer contains an op that produces visible + // output on a transparent surface. + void add_visible_op() { + affects_transparent_layer_ = true; + } + // The filter to apply to the layer bounds when it is restored std::shared_ptr filter() { return filter_; } @@ -583,11 +590,13 @@ class DisplayListBuilder final : public virtual DlCanvas, private: size_t save_offset_; bool has_layer_; - bool cannot_inherit_opacity_; - bool has_compatible_op_; + bool cannot_inherit_opacity_ = false; + bool has_compatible_op_ = false; std::shared_ptr filter_; - bool is_unbounded_; + bool is_unbounded_ = false; bool has_deferred_save_op_ = false; + bool is_nop_ = false; + bool affects_transparent_layer_ = false; friend class DisplayListBuilder; }; @@ -701,9 +710,40 @@ class DisplayListBuilder final : public virtual DlCanvas, return accumulator_->rtree(); } + static DisplayListAttributeFlags FlagsForPointMode(PointMode mode); + + enum class OpResult { + kNoEffect, + kPreservesTransparency, + kAffectsAll, + }; + bool paint_nops_on_transparency(); + OpResult PaintResult(const DlPaint& paint, + DisplayListAttributeFlags flags = kDrawPaintFlags); + + void UpdateLayerResult(OpResult result) { + switch (result) { + case OpResult::kNoEffect: + case OpResult::kPreservesTransparency: + break; + case OpResult::kAffectsAll: + current_layer_->add_visible_op(); + break; + } + } + + // kAnyColor is a non-opaque and non-transparent color that will not + // trigger any short-circuit tests about the results of a blend. + static constexpr DlColor kAnyColor = DlColor::kMidGrey().withAlpha(0x80); + static_assert(!kAnyColor.isOpaque()); + static_assert(!kAnyColor.isTransparent()); + static DlColor GetEffectiveColor(const DlPaint& paint, + DisplayListAttributeFlags flags); // Computes the bounds of an operation adjusted for a given ImageFilter + // and returns whether the computation was possible. If the method + // returns false then the caller should assume the worst about the bounds. static bool ComputeFilteredBounds(SkRect& bounds, const DlImageFilter* filter); @@ -713,24 +753,24 @@ class DisplayListBuilder final : public virtual DlCanvas, // Records the fact that we encountered an op that either could not // estimate its bounds or that fills all of the destination space. - void AccumulateUnbounded(); + bool AccumulateUnbounded(); // Records the bounds for an op after modifying them according to the // supplied attribute flags and transforming by the current matrix. - void AccumulateOpBounds(const SkRect& bounds, + bool AccumulateOpBounds(const SkRect& bounds, DisplayListAttributeFlags flags) { SkRect safe_bounds = bounds; - AccumulateOpBounds(safe_bounds, flags); + return AccumulateOpBounds(safe_bounds, flags); } // Records the bounds for an op after modifying them according to the // supplied attribute flags and transforming by the current matrix // and clipping against the current clip. - void AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags); + bool AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags); // Records the given bounds after transforming by the current matrix // and clipping against the current clip. - void AccumulateBounds(SkRect& bounds); + bool AccumulateBounds(SkRect& bounds); DlPaint current_; }; diff --git a/display_list/dl_color.h b/display_list/dl_color.h index d926e58c3b818..92a39150d2f2e 100644 --- a/display_list/dl_color.h +++ b/display_list/dl_color.h @@ -34,20 +34,20 @@ struct DlColor { uint32_t argb; - bool isOpaque() const { return getAlpha() == 0xFF; } - bool isTransparent() const { return getAlpha() == 0; } + constexpr bool isOpaque() const { return getAlpha() == 0xFF; } + constexpr bool isTransparent() const { return getAlpha() == 0; } - int getAlpha() const { return argb >> 24; } - int getRed() const { return (argb >> 16) & 0xFF; } - int getGreen() const { return (argb >> 8) & 0xFF; } - int getBlue() const { return argb & 0xFF; } + constexpr int getAlpha() const { return argb >> 24; } + constexpr int getRed() const { return (argb >> 16) & 0xFF; } + constexpr int getGreen() const { return (argb >> 8) & 0xFF; } + constexpr int getBlue() const { return argb & 0xFF; } - float getAlphaF() const { return toF(getAlpha()); } - float getRedF() const { return toF(getRed()); } - float getGreenF() const { return toF(getGreen()); } - float getBlueF() const { return toF(getBlue()); } + constexpr float getAlphaF() const { return toF(getAlpha()); } + constexpr float getRedF() const { return toF(getRed()); } + constexpr float getGreenF() const { return toF(getGreen()); } + constexpr float getBlueF() const { return toF(getBlue()); } - uint32_t premultipliedArgb() const { + constexpr uint32_t premultipliedArgb() const { if (isOpaque()) { return argb; } @@ -58,20 +58,20 @@ struct DlColor { toC(getBlueF() * f); } - DlColor withAlpha(uint8_t alpha) const { // + constexpr DlColor withAlpha(uint8_t alpha) const { // return (argb & 0x00FFFFFF) | (alpha << 24); } - DlColor withRed(uint8_t red) const { // + constexpr DlColor withRed(uint8_t red) const { // return (argb & 0xFF00FFFF) | (red << 16); } - DlColor withGreen(uint8_t green) const { // + constexpr DlColor withGreen(uint8_t green) const { // return (argb & 0xFFFF00FF) | (green << 8); } - DlColor withBlue(uint8_t blue) const { // + constexpr DlColor withBlue(uint8_t blue) const { // return (argb & 0xFFFFFF00) | (blue << 0); } - DlColor modulateOpacity(float opacity) const { + constexpr DlColor modulateOpacity(float opacity) const { return opacity <= 0 ? withAlpha(0) : opacity >= 1 ? *this : withAlpha(round(getAlpha() * opacity)); diff --git a/display_list/dl_paint.h b/display_list/dl_paint.h index 77619a2567164..3d9220f57e3d6 100644 --- a/display_list/dl_paint.h +++ b/display_list/dl_paint.h @@ -83,6 +83,7 @@ class DlPaint { color_.argb = alpha << 24 | (color_.argb & 0x00FFFFFF); return *this; } + SkScalar getOpacity() const { return color_.getAlphaF(); } DlPaint& setOpacity(SkScalar opacity) { setAlpha(SkScalarRoundToInt(opacity * 0xff)); return *this; diff --git a/display_list/testing/dl_rendering_unittests.cc b/display_list/testing/dl_rendering_unittests.cc index 55afd24d806d6..ddf205a98c658 100644 --- a/display_list/testing/dl_rendering_unittests.cc +++ b/display_list/testing/dl_rendering_unittests.cc @@ -9,6 +9,7 @@ #include "flutter/display_list/dl_op_flags.h" #include "flutter/display_list/dl_sampling_options.h" #include "flutter/display_list/skia/dl_sk_canvas.h" +#include "flutter/display_list/skia/dl_sk_conversions.h" #include "flutter/display_list/skia/dl_sk_dispatcher.h" #include "flutter/display_list/testing/dl_test_surface_provider.h" #include "flutter/display_list/utils/dl_comparable.h" @@ -283,20 +284,26 @@ using BackendType = DlSurfaceProvider::BackendType; class RenderResult { public: - explicit RenderResult(const sk_sp& surface) { + explicit RenderResult(const sk_sp& surface, + bool take_snapshot = false) { SkImageInfo info = surface->imageInfo(); info = SkImageInfo::MakeN32Premul(info.dimensions()); addr_ = malloc(info.computeMinByteSize() * info.height()); pixmap_.reset(info, addr_, info.minRowBytes()); - EXPECT_TRUE(surface->readPixels(pixmap_, 0, 0)); + surface->readPixels(pixmap_, 0, 0); + if (take_snapshot) { + image_ = surface->makeImageSnapshot(); + } } ~RenderResult() { free(addr_); } + sk_sp image() const { return image_; } int width() const { return pixmap_.width(); } int height() const { return pixmap_.height(); } const uint32_t* addr32(int x, int y) const { return pixmap_.addr32(x, y); } private: + sk_sp image_; SkPixmap pixmap_; void* addr_ = nullptr; }; @@ -912,7 +919,14 @@ class CanvasCompareTester { }; DlRenderer dl_safe_restore = [=](DlCanvas* cv, const DlPaint& p) { // Draw another primitive to disable peephole optimizations - cv->DrawRect(kRenderBounds.makeOffset(500, 500), DlPaint()); + // As the rendering op rejection in the DisplayList Builder + // gets smarter and smarter, this operation has had to get + // sneakier and sneakier about specifying an operation that + // won't practically show up in the output, but technically + // can't be culled. + cv->DrawRect( + SkRect::MakeXYWH(kRenderCenterX, kRenderCenterY, 0.0001, 0.0001), + DlPaint()); cv->Restore(); }; SkRenderer sk_opt_restore = [=](SkCanvas* cv, const SkPaint& p) { @@ -3785,7 +3799,6 @@ TEST_F(DisplayListCanvas, MatrixColorFilterOpacityCommuteCheck) { } #define FOR_EACH_BLEND_MODE_ENUM(FUNC) \ - FUNC(kSrc) \ FUNC(kClear) \ FUNC(kSrc) \ FUNC(kDst) \ @@ -3816,6 +3829,18 @@ TEST_F(DisplayListCanvas, MatrixColorFilterOpacityCommuteCheck) { FUNC(kColor) \ FUNC(kLuminosity) +// This function serves both to enhance error output below and to double +// check that the macro supplies all modes (otherwise it won't compile) +static std::string BlendModeToString(DlBlendMode mode) { + switch (mode) { +#define MODE_CASE(m) \ + case DlBlendMode::m: \ + return #m; + FOR_EACH_BLEND_MODE_ENUM(MODE_CASE) +#undef MODE_CASE + } +} + TEST_F(DisplayListCanvas, BlendColorFilterModifyTransparencyCheck) { std::vector> environments; for (auto& provider : CanvasCompareTester::kTestProviders) { @@ -3826,7 +3851,8 @@ TEST_F(DisplayListCanvas, BlendColorFilterModifyTransparencyCheck) { auto test_mode_color = [&environments](DlBlendMode mode, DlColor color) { std::stringstream desc_str; - desc_str << "blend[" << mode << ", " << color << "]"; + std::string mode_string = BlendModeToString(mode); + desc_str << "blend[" << mode_string << ", " << color << "]"; std::string desc = desc_str.str(); DlBlendColorFilter filter(color, mode); if (filter.modifies_transparent_black()) { @@ -3887,7 +3913,8 @@ TEST_F(DisplayListCanvas, BlendColorFilterOpacityCommuteCheck) { auto test_mode_color = [&environments](DlBlendMode mode, DlColor color) { std::stringstream desc_str; - desc_str << "blend[" << mode << ", " << color << "]"; + std::string mode_string = BlendModeToString(mode); + desc_str << "blend[" << mode_string << ", " << color << "]"; std::string desc = desc_str.str(); DlBlendColorFilter filter(color, mode); if (filter.can_commute_with_opacity()) { @@ -3946,7 +3973,359 @@ TEST_F(DisplayListCanvas, BlendColorFilterOpacityCommuteCheck) { #undef TEST_MODE } -#undef FOR_EACH_ENUM +class DisplayListNopTest : public DisplayListCanvas { + // The following code uses the acronym MTB for "modifies_transparent_black" + + protected: + DisplayListNopTest() : DisplayListCanvas() { + test_src_colors = { + DlColor::kBlack().withAlpha(0), // transparent black + DlColor::kBlack().withAlpha(0x7f), // half transparent black + DlColor::kWhite().withAlpha(0x7f), // half transparent white + DlColor::kBlack(), // opaque black + DlColor::kWhite(), // opaque white + DlColor::kRed(), // opaque red + DlColor::kGreen(), // opaque green + DlColor::kBlue(), // opaque blue + DlColor::kDarkGrey(), // dark grey + DlColor::kLightGrey(), // light grey + }; + + // We test against a color cube of 3x3x3 colors [55,aa,ff] + // plus transparency as the first color/pixel + test_dst_colors.push_back(DlColor::kTransparent()); + const int step = 0x55; + static_assert(step * 3 == 255); + for (int a = step; a < 256; a += step) { + for (int r = step; r < 256; r += step) { + for (int g = step; g < 256; g += step) { + for (int b = step; b < 256; b += step) { + test_dst_colors.push_back(DlColor(a << 24 | r << 16 | g << 8 | b)); + } + } + } + } + + static constexpr float color_filter_matrix_nomtb[] = { + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + }; + static constexpr float color_filter_matrix_mtb[] = { + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.1, // + }; + color_filter_nomtb = DlMatrixColorFilter::Make(color_filter_matrix_nomtb); + color_filter_mtb = DlMatrixColorFilter::Make(color_filter_matrix_mtb); + EXPECT_FALSE(color_filter_nomtb->modifies_transparent_black()); + EXPECT_TRUE(color_filter_mtb->modifies_transparent_black()); + + test_data = + get_output(test_dst_colors.size(), 1, true, [this](SkCanvas* canvas) { + int x = 0; + for (DlColor color : test_dst_colors) { + SkPaint paint; + paint.setColor(color); + paint.setBlendMode(SkBlendMode::kSrc); + canvas->drawRect(SkRect::MakeXYWH(x, 0, 1, 1), paint); + x++; + } + }); + + // For image-on-image tests, the src and dest images will have repeated + // rows/columns that have every color, but laid out at right angles to + // each other so we see an interaction with every test color against + // every other test color. + int data_count = test_data->image()->width(); + test_image_dst_data = get_output( + data_count, data_count, true, [this, data_count](SkCanvas* canvas) { + ASSERT_EQ(test_data->width(), data_count); + ASSERT_EQ(test_data->height(), 1); + for (int y = 0; y < data_count; y++) { + canvas->drawImage(test_data->image().get(), 0, y); + } + }); + test_image_src_data = get_output( + data_count, data_count, true, [this, data_count](SkCanvas* canvas) { + ASSERT_EQ(test_data->width(), data_count); + ASSERT_EQ(test_data->height(), 1); + canvas->translate(data_count, 0); + canvas->rotate(90); + for (int y = 0; y < data_count; y++) { + canvas->drawImage(test_data->image().get(), 0, y); + } + }); + // Double check that the pixel data is laid out in orthogonal stripes + for (int y = 0; y < data_count; y++) { + for (int x = 0; x < data_count; x++) { + EXPECT_EQ(*test_image_dst_data->addr32(x, y), *test_data->addr32(x, 0)); + EXPECT_EQ(*test_image_src_data->addr32(x, y), *test_data->addr32(y, 0)); + } + } + } + + // These flags are 0 by default until they encounter a counter-example + // result and get set. + static constexpr int kWasNotNop = 0x1; // Some tested pixel was modified + static constexpr int kWasMTB = 0x2; // A transparent pixel was modified + + std::vector test_src_colors; + std::vector test_dst_colors; + + std::shared_ptr color_filter_nomtb; + std::shared_ptr color_filter_mtb; + + // A 1-row image containing every color in test_dst_colors + std::unique_ptr test_data; + + // A square image containing test_data duplicated in each row + std::unique_ptr test_image_dst_data; + + // A square image containing test_data duplicated in each column + std::unique_ptr test_image_src_data; + + std::unique_ptr get_output( + int w, + int h, + bool snapshot, + const std::function& renderer) { + auto surface = SkSurfaces::Raster(SkImageInfo::MakeN32Premul(w, h)); + SkCanvas* canvas = surface->getCanvas(); + renderer(canvas); + canvas->flush(); + surface->flushAndSubmit(true); + return std::make_unique(surface, snapshot); + } + + int check_color_result(DlColor dst_color, + DlColor result_color, + const sk_sp& dl, + const std::string& desc) { + int ret = 0; + bool is_error = false; + if (dst_color.isTransparent() && !result_color.isTransparent()) { + ret |= kWasMTB; + is_error = !dl->modifies_transparent_black(); + } + if (result_color != dst_color) { + ret |= kWasNotNop; + is_error = (dl->op_count() == 0u); + } + if (is_error) { + FML_LOG(ERROR) << std::hex << dst_color << " filters to " << result_color + << desc; + } + return ret; + } + + int check_image_result(const std::unique_ptr& dst_data, + const std::unique_ptr& result_data, + const sk_sp& dl, + const std::string& desc) { + EXPECT_EQ(dst_data->width(), result_data->width()); + EXPECT_EQ(dst_data->height(), result_data->height()); + int all_flags = 0; + for (int y = 0; y < dst_data->height(); y++) { + const uint32_t* dst_pixels = dst_data->addr32(0, y); + const uint32_t* result_pixels = result_data->addr32(0, y); + for (int x = 0; x < dst_data->width(); x++) { + all_flags |= + check_color_result(dst_pixels[x], result_pixels[x], dl, desc); + } + } + return all_flags; + } + + void report_results(int all_flags, + const sk_sp& dl, + const std::string& desc) { + if (!dl->modifies_transparent_black()) { + EXPECT_TRUE((all_flags & kWasMTB) == 0); + } else if ((all_flags & kWasMTB) == 0) { + FML_LOG(INFO) << "combination does not affect transparency: " << desc; + } + if (dl->op_count() == 0u) { + EXPECT_TRUE((all_flags & kWasNotNop) == 0); + } else if ((all_flags & kWasNotNop) == 0) { + FML_LOG(INFO) << "combination could be classified as a nop: " << desc; + } + }; + + void test_mode_color_via_filter(DlBlendMode mode, DlColor color) { + std::stringstream desc_stream; + desc_stream << " using SkColorFilter::filterColor() with: "; + desc_stream << BlendModeToString(mode); + desc_stream << "/" << color; + std::string desc = desc_stream.str(); + DisplayListBuilder builder({0.0f, 0.0f, 100.0f, 100.0f}); + DlPaint paint = DlPaint(color).setBlendMode(mode); + builder.DrawRect({0.0f, 0.0f, 10.0f, 10.0f}, paint); + auto dl = builder.Build(); + if (dl->modifies_transparent_black()) { + ASSERT_TRUE(dl->op_count() != 0u); + } + + auto sk_mode = static_cast(mode); + auto sk_color_filter = SkColorFilters::Blend(color, sk_mode); + int all_flags = 0; + if (sk_color_filter) { + for (DlColor dst_color : test_dst_colors) { + DlColor result = sk_color_filter->filterColor(dst_color); + all_flags |= check_color_result(dst_color, result, dl, desc); + } + if ((all_flags & kWasMTB) != 0) { + EXPECT_FALSE(sk_color_filter->isAlphaUnchanged()); + } + } + report_results(all_flags, dl, desc); + }; + + void test_mode_color_via_rendering(DlBlendMode mode, DlColor color) { + std::stringstream desc_stream; + desc_stream << " rendering with: "; + desc_stream << BlendModeToString(mode); + desc_stream << "/" << color; + std::string desc = desc_stream.str(); + auto test_image = test_data->image(); + SkRect test_bounds = + SkRect::MakeWH(test_image->width(), test_image->height()); + DisplayListBuilder builder(test_bounds); + DlPaint dl_paint = DlPaint(color).setBlendMode(mode); + builder.DrawRect(test_bounds, dl_paint); + auto dl = builder.Build(); + bool dl_is_elided = dl->op_count() == 0u; + bool dl_affects_transparent_pixels = dl->modifies_transparent_black(); + ASSERT_TRUE(!dl_is_elided || !dl_affects_transparent_pixels); + + auto sk_mode = static_cast(mode); + SkPaint sk_paint; + sk_paint.setBlendMode(sk_mode); + sk_paint.setColor(color); + for (auto& provider : CanvasCompareTester::kTestProviders) { + auto result_surface = provider->MakeOffscreenSurface( + test_image->width(), test_image->height(), + DlSurfaceProvider::kN32Premul_PixelFormat); + SkCanvas* result_canvas = result_surface->sk_surface()->getCanvas(); + result_canvas->clear(SK_ColorTRANSPARENT); + result_canvas->drawImage(test_image.get(), 0, 0); + result_canvas->drawRect(test_bounds, sk_paint); + result_canvas->flush(); + result_surface->sk_surface()->flushAndSubmit(true); + auto result_pixels = + std::make_unique(result_surface->sk_surface()); + + int all_flags = check_image_result(test_data, result_pixels, dl, desc); + report_results(all_flags, dl, desc); + } + }; + + void test_attributes_image(DlBlendMode mode, + DlColor color, + DlColorFilter* color_filter, + DlImageFilter* image_filter) { + // if (true) { return; } + std::stringstream desc_stream; + desc_stream << " rendering with: "; + desc_stream << BlendModeToString(mode); + desc_stream << "/" << color; + std::string cf_mtb = color_filter + ? color_filter->modifies_transparent_black() + ? "modifies transparency" + : "preserves transparency" + : "no filter"; + desc_stream << ", CF: " << cf_mtb; + std::string if_mtb = image_filter + ? image_filter->modifies_transparent_black() + ? "modifies transparency" + : "preserves transparency" + : "no filter"; + desc_stream << ", IF: " << if_mtb; + std::string desc = desc_stream.str(); + + DisplayListBuilder builder({0.0f, 0.0f, 100.0f, 100.0f}); + DlPaint paint = DlPaint(color) // + .setBlendMode(mode) // + .setColorFilter(color_filter) // + .setImageFilter(image_filter); + builder.DrawImage(DlImage::Make(test_image_src_data->image()), {0, 0}, + DlImageSampling::kNearestNeighbor, &paint); + auto dl = builder.Build(); + + int w = test_image_src_data->width(); + int h = test_image_src_data->height(); + auto sk_mode = static_cast(mode); + SkPaint sk_paint; + sk_paint.setBlendMode(sk_mode); + sk_paint.setColor(color); + sk_paint.setColorFilter(ToSk(color_filter)); + sk_paint.setImageFilter(ToSk(image_filter)); + for (auto& provider : CanvasCompareTester::kTestProviders) { + auto result_surface = provider->MakeOffscreenSurface( + w, h, DlSurfaceProvider::kN32Premul_PixelFormat); + SkCanvas* result_canvas = result_surface->sk_surface()->getCanvas(); + result_canvas->clear(SK_ColorTRANSPARENT); + result_canvas->drawImage(test_image_dst_data->image(), 0, 0); + result_canvas->drawImage(test_image_src_data->image(), 0, 0, + SkSamplingOptions(), &sk_paint); + result_canvas->flush(); + result_surface->sk_surface()->flushAndSubmit(true); + auto result_pixels = + std::make_unique(result_surface->sk_surface()); + + int all_flags = + check_image_result(test_image_dst_data, result_pixels, dl, desc); + report_results(all_flags, dl, desc); + } + }; +}; + +TEST_F(DisplayListNopTest, BlendModeAndColorViaColorFilter) { + auto test_mode_filter = [this](DlBlendMode mode) { + for (DlColor color : test_src_colors) { + test_mode_color_via_filter(mode, color); + } + }; + +#define TEST_MODE(V) test_mode_filter(DlBlendMode::V); + FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) +#undef TEST_MODE +} + +TEST_F(DisplayListNopTest, BlendModeAndColorByRendering) { + auto test_mode_render = [this](DlBlendMode mode) { + // First check rendering a variety of colors onto image + for (DlColor color : test_src_colors) { + test_mode_color_via_rendering(mode, color); + } + }; + +#define TEST_MODE(V) test_mode_render(DlBlendMode::V); + FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) +#undef TEST_MODE +} + +TEST_F(DisplayListNopTest, BlendModeAndColorAndFiltersByRendering) { + auto test_mode_render = [this](DlBlendMode mode) { + auto image_filter_nomtb = DlColorFilterImageFilter(color_filter_nomtb); + auto image_filter_mtb = DlColorFilterImageFilter(color_filter_mtb); + for (DlColor color : test_src_colors) { + test_attributes_image(mode, color, nullptr, nullptr); + test_attributes_image(mode, color, color_filter_nomtb.get(), nullptr); + test_attributes_image(mode, color, color_filter_mtb.get(), nullptr); + test_attributes_image(mode, color, nullptr, &image_filter_nomtb); + test_attributes_image(mode, color, nullptr, &image_filter_mtb); + } + }; + +#define TEST_MODE(V) test_mode_render(DlBlendMode::V); + FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) +#undef TEST_MODE +} + +#undef FOR_EACH_BLEND_MODE_ENUM } // namespace testing } // namespace flutter diff --git a/display_list/testing/dl_test_snippets.cc b/display_list/testing/dl_test_snippets.cc index 4479f63c1d678..0a53f0337afd9 100644 --- a/display_list/testing/dl_test_snippets.cc +++ b/display_list/testing/dl_test_snippets.cc @@ -517,7 +517,7 @@ std::vector CreateAllRenderingOps() { }}, {1, 16, 1, 24, [](DlOpReceiver& r) { - r.drawColor(SK_ColorBLUE, DlBlendMode::kDstIn); + r.drawColor(SK_ColorBLUE, DlBlendMode::kDstOut); }}, {1, 16, 1, 24, [](DlOpReceiver& r) { diff --git a/display_list/testing/dl_test_snippets.h b/display_list/testing/dl_test_snippets.h index 1f05e77dc83c6..536cb224e8ef9 100644 --- a/display_list/testing/dl_test_snippets.h +++ b/display_list/testing/dl_test_snippets.h @@ -151,9 +151,9 @@ static const DlBlurImageFilter kTestBlurImageFilter4(5.0, static const DlDilateImageFilter kTestDilateImageFilter1(5.0, 5.0); static const DlDilateImageFilter kTestDilateImageFilter2(6.0, 5.0); static const DlDilateImageFilter kTestDilateImageFilter3(5.0, 6.0); -static const DlErodeImageFilter kTestErodeImageFilter1(5.0, 5.0); -static const DlErodeImageFilter kTestErodeImageFilter2(6.0, 5.0); -static const DlErodeImageFilter kTestErodeImageFilter3(5.0, 6.0); +static const DlErodeImageFilter kTestErodeImageFilter1(4.0, 4.0); +static const DlErodeImageFilter kTestErodeImageFilter2(4.0, 3.0); +static const DlErodeImageFilter kTestErodeImageFilter3(3.0, 4.0); static const DlMatrixImageFilter kTestMatrixImageFilter1( SkMatrix::RotateDeg(45), kNearestSampling); diff --git a/display_list/utils/dl_matrix_clip_tracker.h b/display_list/utils/dl_matrix_clip_tracker.h index a0d74b85f02af..0f613b2508147 100644 --- a/display_list/utils/dl_matrix_clip_tracker.h +++ b/display_list/utils/dl_matrix_clip_tracker.h @@ -40,6 +40,7 @@ class DisplayListMatrixClipTracker { bool content_culled(const SkRect& content_bounds) const { return current_->content_culled(content_bounds); } + bool is_cull_rect_empty() const { return current_->is_cull_rect_empty(); } void save(); void restore(); @@ -88,9 +89,10 @@ class DisplayListMatrixClipTracker { virtual SkMatrix matrix_3x3() const = 0; virtual SkM44 matrix_4x4() const = 0; - virtual SkRect device_cull_rect() const { return cull_rect_; } + SkRect device_cull_rect() const { return cull_rect_; } virtual SkRect local_cull_rect() const = 0; virtual bool content_culled(const SkRect& content_bounds) const; + bool is_cull_rect_empty() const { return cull_rect_.isEmpty(); } virtual void translate(SkScalar tx, SkScalar ty) = 0; virtual void scale(SkScalar sx, SkScalar sy) = 0; diff --git a/flow/diff_context_unittests.cc b/flow/diff_context_unittests.cc index e981258ef1a03..d8b78a94070c0 100644 --- a/flow/diff_context_unittests.cc +++ b/flow/diff_context_unittests.cc @@ -10,7 +10,7 @@ namespace testing { TEST_F(DiffContextTest, ClipAlignment) { MockLayerTree t1; t1.root()->Add(CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(30, 30, 50, 50), 1))); + CreateDisplayList(SkRect::MakeLTRB(30, 30, 50, 50)))); auto damage = DiffLayerTree(t1, MockLayerTree(), SkIRect::MakeEmpty(), 0, 0); EXPECT_EQ(damage.frame_damage, SkIRect::MakeLTRB(30, 30, 50, 50)); EXPECT_EQ(damage.buffer_damage, SkIRect::MakeLTRB(30, 30, 50, 50)); diff --git a/flow/layers/container_layer_unittests.cc b/flow/layers/container_layer_unittests.cc index 42317ff9541a2..206be009966a7 100644 --- a/flow/layers/container_layer_unittests.cc +++ b/flow/layers/container_layer_unittests.cc @@ -564,9 +564,9 @@ using ContainerLayerDiffTest = DiffContextTest; // Insert PictureLayer amongst container layers TEST_F(ContainerLayerDiffTest, PictureLayerInsertion) { - auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50), 1); - auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50), 1); - auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50), 1); + auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50)); + auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50)); + auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50)); MockLayerTree t1; @@ -616,9 +616,9 @@ TEST_F(ContainerLayerDiffTest, PictureLayerInsertion) { // Insert picture layer amongst other picture layers TEST_F(ContainerLayerDiffTest, PictureInsertion) { - auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50), 1); - auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50), 1); - auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50), 1); + auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50)); + auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50)); + auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50)); MockLayerTree t1; t1.root()->Add(CreateDisplayListLayer(pic1)); diff --git a/flow/layers/display_list_layer_unittests.cc b/flow/layers/display_list_layer_unittests.cc index fccfe7b4ab044..2791577666b8d 100644 --- a/flow/layers/display_list_layer_unittests.cc +++ b/flow/layers/display_list_layer_unittests.cc @@ -355,7 +355,7 @@ TEST_F(DisplayListLayerTest, RasterCachePreservesRTree) { using DisplayListLayerDiffTest = DiffContextTest; TEST_F(DisplayListLayerDiffTest, SimpleDisplayList) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree1; tree1.root()->Add(CreateDisplayListLayer(display_list)); @@ -375,7 +375,7 @@ TEST_F(DisplayListLayerDiffTest, SimpleDisplayList) { } TEST_F(DisplayListLayerDiffTest, FractionalTranslation) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree1; tree1.root()->Add( @@ -388,7 +388,7 @@ TEST_F(DisplayListLayerDiffTest, FractionalTranslation) { } TEST_F(DisplayListLayerDiffTest, FractionalTranslationWithRasterCache) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree1; tree1.root()->Add( @@ -402,21 +402,25 @@ TEST_F(DisplayListLayerDiffTest, FractionalTranslationWithRasterCache) { TEST_F(DisplayListLayerDiffTest, DisplayListCompare) { MockLayerTree tree1; - auto display_list1 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list1 = + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); tree1.root()->Add(CreateDisplayListLayer(display_list1)); auto damage = DiffLayerTree(tree1, MockLayerTree()); EXPECT_EQ(damage.frame_damage, SkIRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree2; - auto display_list2 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + // same DL, same offset + auto display_list2 = + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); tree2.root()->Add(CreateDisplayListLayer(display_list2)); damage = DiffLayerTree(tree2, tree1); EXPECT_EQ(damage.frame_damage, SkIRect::MakeEmpty()); MockLayerTree tree3; - auto display_list3 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list3 = + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); // add offset tree3.root()->Add( CreateDisplayListLayer(display_list3, SkPoint::Make(10, 10))); @@ -426,7 +430,8 @@ TEST_F(DisplayListLayerDiffTest, DisplayListCompare) { MockLayerTree tree4; // different color - auto display_list4 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 2); + auto display_list4 = + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kRed()); tree4.root()->Add( CreateDisplayListLayer(display_list4, SkPoint::Make(10, 10))); diff --git a/flow/layers/opacity_layer_unittests.cc b/flow/layers/opacity_layer_unittests.cc index ca1f1067e87c3..71ccdc15c8476 100644 --- a/flow/layers/opacity_layer_unittests.cc +++ b/flow/layers/opacity_layer_unittests.cc @@ -659,7 +659,7 @@ using OpacityLayerDiffTest = DiffContextTest; TEST_F(OpacityLayerDiffTest, FractionalTranslation) { auto picture = CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1)); + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60))); auto layer = CreateOpacityLater({picture}, 128, SkPoint::Make(0.5, 0.5)); MockLayerTree tree1; @@ -672,7 +672,7 @@ TEST_F(OpacityLayerDiffTest, FractionalTranslation) { TEST_F(OpacityLayerDiffTest, FractionalTranslationWithRasterCache) { auto picture = CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1)); + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60))); auto layer = CreateOpacityLater({picture}, 128, SkPoint::Make(0.5, 0.5)); MockLayerTree tree1; diff --git a/flow/testing/diff_context_test.cc b/flow/testing/diff_context_test.cc index 20153a0140d5c..c4c68bb7ab271 100644 --- a/flow/testing/diff_context_test.cc +++ b/flow/testing/diff_context_test.cc @@ -30,7 +30,7 @@ Damage DiffContextTest::DiffLayerTree(MockLayerTree& layer_tree, } sk_sp DiffContextTest::CreateDisplayList(const SkRect& bounds, - SkColor color) { + DlColor color) { DisplayListBuilder builder; builder.DrawRect(bounds, DlPaint().setColor(color)); return builder.Build(); diff --git a/flow/testing/diff_context_test.h b/flow/testing/diff_context_test.h index 297a2bdf5f7f8..be10a01b1f7a5 100644 --- a/flow/testing/diff_context_test.h +++ b/flow/testing/diff_context_test.h @@ -45,7 +45,8 @@ class DiffContextTest : public LayerTest { // Create display list consisting of filled rect with given color; Being able // to specify different color is useful to test deep comparison of pictures - sk_sp CreateDisplayList(const SkRect& bounds, uint32_t color); + sk_sp CreateDisplayList(const SkRect& bounds, + DlColor color = DlColor::kBlack()); std::shared_ptr CreateDisplayListLayer( const sk_sp& display_list, diff --git a/impeller/display_list/dl_unittests.cc b/impeller/display_list/dl_unittests.cc index 05a0b5d9b072b..a445684c8b1b4 100644 --- a/impeller/display_list/dl_unittests.cc +++ b/impeller/display_list/dl_unittests.cc @@ -856,18 +856,12 @@ TEST_P(DisplayListTest, CanDrawShadow) { } TEST_P(DisplayListTest, TransparentShadowProducesCorrectColor) { - flutter::DisplayListBuilder builder; - { - builder.Save(); - builder.Scale(1.618, 1.618); - builder.DrawShadow(SkPath{}.addRect(SkRect::MakeXYWH(0, 0, 200, 100)), - SK_ColorTRANSPARENT, 15, false, 1); - builder.Restore(); - } - auto dl = builder.Build(); - DlDispatcher dispatcher; - dispatcher.drawDisplayList(dl, 1); + dispatcher.save(); + dispatcher.scale(1.618, 1.618); + dispatcher.drawShadow(SkPath{}.addRect(SkRect::MakeXYWH(0, 0, 200, 100)), + SK_ColorTRANSPARENT, 15, false, 1); + dispatcher.restore(); auto picture = dispatcher.EndRecordingAsPicture(); std::shared_ptr rrect_blur; diff --git a/shell/common/dl_op_spy_unittests.cc b/shell/common/dl_op_spy_unittests.cc index dba02134238c8..7aaac1cbe52a8 100644 --- a/shell/common/dl_op_spy_unittests.cc +++ b/shell/common/dl_op_spy_unittests.cc @@ -7,15 +7,40 @@ #include "flutter/shell/common/dl_op_spy.h" #include "flutter/testing/testing.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "third_party/skia/include/core/SkRSXform.h" namespace flutter { namespace testing { +// The following macros demonstrate that the DlOpSpy class is equivalent +// to DisplayList::affects_transparent_surface() now that DisplayListBuilder +// implements operation culling. +// See https://github.com/flutter/flutter/issues/125403 +#define ASSERT_DID_DRAW(spy, dl) \ + do { \ + ASSERT_TRUE(spy.did_draw()); \ + ASSERT_TRUE(dl->modifies_transparent_black()); \ + } while (0) + +#define ASSERT_NO_DRAW(spy, dl) \ + do { \ + ASSERT_FALSE(spy.did_draw()); \ + ASSERT_FALSE(dl->modifies_transparent_black()); \ + } while (0) + TEST(DlOpSpy, DidDrawIsFalseByDefault) { DlOpSpy dl_op_spy; ASSERT_FALSE(dl_op_spy.did_draw()); } +TEST(DlOpSpy, EmptyDisplayList) { + DisplayListBuilder builder; + sk_sp dl = builder.Build(); + DlOpSpy dl_op_spy; + dl->Dispatch(dl_op_spy); + ASSERT_NO_DRAW(dl_op_spy, dl); +} + TEST(DlOpSpy, SetColor) { { // No Color set. DisplayListBuilder builder; @@ -24,7 +49,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // Set transparent color. DisplayListBuilder builder; @@ -33,7 +58,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } { // Set black color. DisplayListBuilder builder; @@ -42,7 +67,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } } @@ -55,7 +80,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // Set transparent color. DisplayListBuilder builder; @@ -67,7 +92,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } { // Set black color. DisplayListBuilder builder; @@ -79,7 +104,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } } @@ -91,16 +116,25 @@ TEST(DlOpSpy, DrawColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } - { // Transparent color source. + { // Transparent color with kSrc. DisplayListBuilder builder; auto color = DlColor::kTransparent(); builder.DrawColor(color, DlBlendMode::kSrc); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); + } + { // Transparent color with kSrcOver. + DisplayListBuilder builder; + auto color = DlColor::kTransparent(); + builder.DrawColor(color, DlBlendMode::kSrcOver); + sk_sp dl = builder.Build(); + DlOpSpy dl_op_spy; + dl->Dispatch(dl_op_spy); + ASSERT_NO_DRAW(dl_op_spy, dl); } } @@ -112,7 +146,7 @@ TEST(DlOpSpy, DrawPaint) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } { // black color in paint. DisplayListBuilder builder; @@ -121,7 +155,7 @@ TEST(DlOpSpy, DrawPaint) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } } @@ -133,7 +167,7 @@ TEST(DlOpSpy, DrawLine) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -142,7 +176,7 @@ TEST(DlOpSpy, DrawLine) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } @@ -154,7 +188,7 @@ TEST(DlOpSpy, DrawRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -163,11 +197,11 @@ TEST(DlOpSpy, DrawRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawOval) { +TEST(DlOpSpy, DrawOval) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -175,7 +209,7 @@ TEST(DlOpSpy, drawOval) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -184,11 +218,11 @@ TEST(DlOpSpy, drawOval) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawCircle) { +TEST(DlOpSpy, DrawCircle) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -196,7 +230,7 @@ TEST(DlOpSpy, drawCircle) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -205,11 +239,11 @@ TEST(DlOpSpy, drawCircle) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawRRect) { +TEST(DlOpSpy, DrawRRect) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -217,7 +251,7 @@ TEST(DlOpSpy, drawRRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -226,34 +260,49 @@ TEST(DlOpSpy, drawRRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawPath) { - { // black +TEST(DlOpSpy, DrawPath) { + { // black line DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); + paint.setDrawStyle(DlDrawStyle::kStroke); builder.DrawPath(SkPath::Line(SkPoint::Make(0, 1), SkPoint::Make(1, 1)), paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } - { // transparent + { // triangle + DisplayListBuilder builder; + DlPaint paint(DlColor::kBlack()); + SkPath path; + path.moveTo({0, 0}); + path.lineTo({1, 0}); + path.lineTo({0, 1}); + builder.DrawPath(path, paint); + sk_sp dl = builder.Build(); + DlOpSpy dl_op_spy; + dl->Dispatch(dl_op_spy); + ASSERT_DID_DRAW(dl_op_spy, dl); + } + { // transparent line DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); + paint.setDrawStyle(DlDrawStyle::kStroke); builder.DrawPath(SkPath::Line(SkPoint::Make(0, 1), SkPoint::Make(1, 1)), paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawArc) { +TEST(DlOpSpy, DrawArc) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -261,7 +310,7 @@ TEST(DlOpSpy, drawArc) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -270,11 +319,11 @@ TEST(DlOpSpy, drawArc) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawPoints) { +TEST(DlOpSpy, DrawPoints) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -283,7 +332,7 @@ TEST(DlOpSpy, drawPoints) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -293,38 +342,62 @@ TEST(DlOpSpy, drawPoints) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawVertices) { +TEST(DlOpSpy, DrawVertices) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); - const SkPoint vertices[] = {SkPoint::Make(5, 5)}; - const SkPoint texture_coordinates[] = {SkPoint::Make(5, 5)}; - const DlColor colors[] = {DlColor::kBlack()}; - auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 1, vertices, + const SkPoint vertices[] = { + SkPoint::Make(5, 5), + SkPoint::Make(5, 15), + SkPoint::Make(15, 5), + }; + const SkPoint texture_coordinates[] = { + SkPoint::Make(5, 5), + SkPoint::Make(15, 5), + SkPoint::Make(5, 15), + }; + const DlColor colors[] = { + DlColor::kBlack(), + DlColor::kRed(), + DlColor::kGreen(), + }; + auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 3, vertices, texture_coordinates, colors, 0); builder.DrawVertices(dl_vertices.get(), DlBlendMode::kSrc, paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); - const SkPoint vertices[] = {SkPoint::Make(5, 5)}; - const SkPoint texture_coordinates[] = {SkPoint::Make(5, 5)}; - const DlColor colors[] = {DlColor::kBlack()}; - auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 1, vertices, + const SkPoint vertices[] = { + SkPoint::Make(5, 5), + SkPoint::Make(5, 15), + SkPoint::Make(15, 5), + }; + const SkPoint texture_coordinates[] = { + SkPoint::Make(5, 5), + SkPoint::Make(15, 5), + SkPoint::Make(5, 15), + }; + const DlColor colors[] = { + DlColor::kBlack(), + DlColor::kRed(), + DlColor::kGreen(), + }; + auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 3, vertices, texture_coordinates, colors, 0); builder.DrawVertices(dl_vertices.get(), DlBlendMode::kSrc, paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } @@ -343,7 +416,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // DrawImageRect DisplayListBuilder builder; @@ -359,7 +432,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // DrawImageNine DisplayListBuilder builder; @@ -375,7 +448,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // DrawAtlas DisplayListBuilder builder; @@ -386,20 +459,19 @@ TEST(DlOpSpy, Images) { SkBitmap bitmap; bitmap.allocPixels(info, 0); auto sk_image = SkImages::RasterFromBitmap(bitmap); - const SkRSXform xform[] = {}; - const SkRect tex[] = {}; - const DlColor colors[] = {}; + const SkRSXform xform[] = {SkRSXform::Make(1, 0, 0, 0)}; + const SkRect tex[] = {SkRect::MakeXYWH(10, 10, 10, 10)}; SkRect cull_rect = SkRect::MakeWH(5, 5); - builder.DrawAtlas(DlImage::Make(sk_image), xform, tex, colors, 0, + builder.DrawAtlas(DlImage::Make(sk_image), xform, tex, nullptr, 1, DlBlendMode::kSrc, DlImageSampling::kLinear, &cull_rect); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawDisplayList) { +TEST(DlOpSpy, DrawDisplayList) { { // Recursive Transparent DisplayList DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); @@ -414,7 +486,7 @@ TEST(DlOpSpy, drawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl2); } { // Sub non-transparent DisplayList, DisplayListBuilder builder; @@ -430,7 +502,7 @@ TEST(DlOpSpy, drawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl2); } { // Sub non-transparent DisplayList, 0 opacity @@ -447,7 +519,7 @@ TEST(DlOpSpy, drawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl2); } { // Parent non-transparent DisplayList @@ -464,11 +536,11 @@ TEST(DlOpSpy, drawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl2); } } -TEST(DlOpSpy, drawTextBlob) { +TEST(DlOpSpy, DrawTextBlob) { { // Non-transparent color. DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -479,7 +551,7 @@ TEST(DlOpSpy, drawTextBlob) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent color. DisplayListBuilder builder; @@ -491,11 +563,11 @@ TEST(DlOpSpy, drawTextBlob) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawShadow) { +TEST(DlOpSpy, DrawShadow) { { // valid shadow DisplayListBuilder builder; DlPaint paint; @@ -505,7 +577,7 @@ TEST(DlOpSpy, drawShadow) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent color DisplayListBuilder builder; @@ -516,7 +588,7 @@ TEST(DlOpSpy, drawShadow) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } From d6c92173d53482ed7e81418c677490ec07f57ca3 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 14 Jul 2023 15:41:02 -0700 Subject: [PATCH 071/211] [Impeller] Fix text scaling issues again, this time with perspective when a save layer is involved (#43695) Alternative to https://github.com/flutter/engine/pull/43662 Records the basis vector of the current CTM into text contents and reuses that rather than trying to get it again at render time. That method breaks if perspective is involved in the CTM and a subpass gets translated, which can modify the scale (and rotation) of the matrix. We're definitely not doing things quite right with perspective here, but the real fix to that is to either record the fully transformed glyph into the atlas or to use SDF/path based rendering. Fixes https://github.com/flutter/flutter/issues/130476 I still have some concerns about how `EntityPass::Render` is a mix of mutations and constness but we can try to address that independently. I expect this to re-improve the regression noted in https://github.com/flutter/flutter/issues/130594 --- impeller/aiks/aiks_unittests.cc | 65 ++++++++++++ impeller/aiks/canvas.cc | 5 - impeller/aiks/canvas.h | 1 - impeller/display_list/dl_dispatcher.cc | 3 +- .../contents/color_source_text_contents.cc | 7 ++ .../contents/color_source_text_contents.h | 5 + impeller/entity/contents/content_context.h | 10 ++ impeller/entity/contents/contents.h | 7 ++ impeller/entity/contents/text_contents.cc | 99 +++++++++---------- impeller/entity/contents/text_contents.h | 12 ++- impeller/entity/entity.cc | 4 + impeller/entity/entity.h | 2 + impeller/entity/entity_pass.cc | 35 +++++++ impeller/entity/entity_pass.h | 6 ++ impeller/entity/entity_unittests.cc | 2 +- .../backends/skia/text_frame_skia.cc | 7 +- .../backends/skia/text_frame_skia.h | 3 +- .../backends/skia/text_render_context_skia.cc | 59 ++++------- .../backends/skia/text_render_context_skia.h | 2 +- impeller/typographer/font.h | 12 +-- impeller/typographer/font_glyph_pair.h | 11 ++- impeller/typographer/lazy_glyph_atlas.cc | 20 +--- impeller/typographer/lazy_glyph_atlas.h | 6 +- impeller/typographer/text_frame.cc | 11 +++ impeller/typographer/text_frame.h | 2 + impeller/typographer/text_render_context.cc | 15 --- impeller/typographer/text_render_context.h | 9 +- impeller/typographer/typographer_unittests.cc | 65 ++++++------ 28 files changed, 286 insertions(+), 199 deletions(-) diff --git a/impeller/aiks/aiks_unittests.cc b/impeller/aiks/aiks_unittests.cc index b8a5c7dc73357..b0a279eec3d05 100644 --- a/impeller/aiks/aiks_unittests.cc +++ b/impeller/aiks/aiks_unittests.cc @@ -2877,6 +2877,35 @@ TEST_P(AiksTest, CanCanvasDrawPicture) { ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); } +TEST_P(AiksTest, DrawPictureWithText) { + Canvas subcanvas; + ASSERT_TRUE(RenderTextInCanvas( + GetContext(), subcanvas, + "the quick brown fox jumped over the lazy dog!.?", "Roboto-Regular.ttf")); + subcanvas.Translate({0, 10}); + subcanvas.Scale(Vector2(3, 3)); + ASSERT_TRUE(RenderTextInCanvas( + GetContext(), subcanvas, + "the quick brown fox jumped over the very big lazy dog!.?", + "Roboto-Regular.ttf")); + auto picture = subcanvas.EndRecordingAsPicture(); + + Canvas canvas; + canvas.Scale(Vector2(.2, .2)); + canvas.Save(); + canvas.Translate({200, 200}); + canvas.Scale(Vector2(3.5, 3.5)); // The text must not be blurry after this. + canvas.DrawPicture(picture); + canvas.Restore(); + + canvas.Scale(Vector2(1.5, 1.5)); + ASSERT_TRUE(RenderTextInCanvas( + GetContext(), canvas, + "the quick brown fox jumped over the smaller lazy dog!.?", + "Roboto-Regular.ttf")); + ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); +} + TEST_P(AiksTest, MatrixBackdropFilter) { Canvas canvas; canvas.SaveLayer({}, std::nullopt, @@ -2923,5 +2952,41 @@ APPLY_COLOR_FILTER_GRADIENT_TEST(Radial); APPLY_COLOR_FILTER_GRADIENT_TEST(Conical); APPLY_COLOR_FILTER_GRADIENT_TEST(Sweep); +TEST_P(AiksTest, DrawScaledTextWithPerspectiveNoSaveLayer) { + Canvas canvas; + // clang-format off + canvas.Transform(Matrix( + 2.000000, 0.000000, 0.000000, 0.000000, + 1.445767, 2.637070, -0.507928, 0.001524, + -2.451887, -0.534662, 0.861399, -0.002584, + 1063.481934, 1025.951416, -48.300270, 1.144901 + )); + // clang-format on + + ASSERT_TRUE(RenderTextInCanvas(GetContext(), canvas, "Hello world", + "Roboto-Regular.ttf")); + + ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); +} + +TEST_P(AiksTest, DrawScaledTextWithPerspectiveSaveLayer) { + Canvas canvas; + Paint save_paint; + canvas.SaveLayer(save_paint); + // clang-format off + canvas.Transform(Matrix( + 2.000000, 0.000000, 0.000000, 0.000000, + 1.445767, 2.637070, -0.507928, 0.001524, + -2.451887, -0.534662, 0.861399, -0.002584, + 1063.481934, 1025.951416, -48.300270, 1.144901 + )); + // clang-format on + + ASSERT_TRUE(RenderTextInCanvas(GetContext(), canvas, "Hello world", + "Roboto-Regular.ttf")); + + ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); +} + } // namespace testing } // namespace impeller diff --git a/impeller/aiks/canvas.cc b/impeller/aiks/canvas.cc index 82424b2c86d59..9e9b89e25a041 100644 --- a/impeller/aiks/canvas.cc +++ b/impeller/aiks/canvas.cc @@ -42,7 +42,6 @@ void Canvas::Initialize(std::optional cull_rect) { base_pass_ = std::make_unique(); current_pass_ = base_pass_.get(); xformation_stack_.emplace_back(CanvasStackEntry{.cull_rect = cull_rect}); - lazy_glyph_atlas_ = std::make_shared(); FML_DCHECK(GetSaveCount() == 1u); FML_DCHECK(base_pass_->GetSubpassesDepth() == 1u); } @@ -51,7 +50,6 @@ void Canvas::Reset() { base_pass_ = nullptr; current_pass_ = nullptr; xformation_stack_ = {}; - lazy_glyph_atlas_ = nullptr; } void Canvas::Save() { @@ -516,15 +514,12 @@ void Canvas::SaveLayer(const Paint& paint, void Canvas::DrawTextFrame(const TextFrame& text_frame, Point position, const Paint& paint) { - lazy_glyph_atlas_->AddTextFrame(text_frame); - Entity entity; entity.SetStencilDepth(GetStencilDepth()); entity.SetBlendMode(paint.blend_mode); auto text_contents = std::make_shared(); text_contents->SetTextFrame(text_frame); - text_contents->SetGlyphAtlas(lazy_glyph_atlas_); if (paint.color_source.GetType() != ColorSource::Type::kColor) { auto color_text_contents = std::make_shared(); diff --git a/impeller/aiks/canvas.h b/impeller/aiks/canvas.h index aa3da9f0681a2..84f1c486bc30f 100644 --- a/impeller/aiks/canvas.h +++ b/impeller/aiks/canvas.h @@ -162,7 +162,6 @@ class Canvas { std::unique_ptr base_pass_; EntityPass* current_pass_ = nullptr; std::deque xformation_stack_; - std::shared_ptr lazy_glyph_atlas_; std::optional initial_cull_rect_; void Initialize(std::optional cull_rect); diff --git a/impeller/display_list/dl_dispatcher.cc b/impeller/display_list/dl_dispatcher.cc index 51ba0ea924782..9964e9e71eaf9 100644 --- a/impeller/display_list/dl_dispatcher.cc +++ b/impeller/display_list/dl_dispatcher.cc @@ -1104,8 +1104,7 @@ void DlDispatcher::drawDisplayList( void DlDispatcher::drawTextBlob(const sk_sp blob, SkScalar x, SkScalar y) { - Scalar scale = canvas_.GetCurrentTransformation().GetMaxBasisLengthXY(); - const auto text_frame = TextFrameFromTextBlob(blob, scale); + const auto text_frame = TextFrameFromTextBlob(blob); if (paint_.style == Paint::Style::kStroke) { auto path = skia_conversions::PathDataFromTextBlob(blob); auto bounds = text_frame.GetBounds(); diff --git a/impeller/entity/contents/color_source_text_contents.cc b/impeller/entity/contents/color_source_text_contents.cc index 16407e0bb2da0..8032bbb629d55 100644 --- a/impeller/entity/contents/color_source_text_contents.cc +++ b/impeller/entity/contents/color_source_text_contents.cc @@ -4,6 +4,7 @@ #include "impeller/entity/contents/color_source_text_contents.h" +#include "color_source_text_contents.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/texture_contents.h" #include "impeller/renderer/render_pass.h" @@ -33,6 +34,12 @@ void ColorSourceTextContents::SetTextPosition(Point position) { position_ = position; } +void ColorSourceTextContents::PopulateGlyphAtlas( + const std::shared_ptr& lazy_glyph_atlas, + Scalar scale) { + text_contents_->PopulateGlyphAtlas(lazy_glyph_atlas, scale); +} + bool ColorSourceTextContents::Render(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const { diff --git a/impeller/entity/contents/color_source_text_contents.h b/impeller/entity/contents/color_source_text_contents.h index e93738c8f3760..18aa1a450ad4a 100644 --- a/impeller/entity/contents/color_source_text_contents.h +++ b/impeller/entity/contents/color_source_text_contents.h @@ -32,6 +32,11 @@ class ColorSourceTextContents final : public Contents { // |Contents| std::optional GetCoverage(const Entity& entity) const override; + // |Contents| + void PopulateGlyphAtlas( + const std::shared_ptr& lazy_glyph_atlas, + Scalar scale) override; + // |Contents| bool Render(const ContentContext& renderer, const Entity& entity, diff --git a/impeller/entity/contents/content_context.h b/impeller/entity/contents/content_context.h index d2e1a16c8f92c..7693dfd3622f7 100644 --- a/impeller/entity/contents/content_context.h +++ b/impeller/entity/contents/content_context.h @@ -696,8 +696,18 @@ class ContentContext { const SubpassCallback& subpass_callback, bool msaa_enabled = true) const; + void SetLazyGlyphAtlas( + const std::shared_ptr& lazy_glyph_atlas) { + lazy_glyph_atlas_ = lazy_glyph_atlas; + } + + std::shared_ptr GetLazyGlyphAtlas() const { + return lazy_glyph_atlas_; + } + private: std::shared_ptr context_; + std::shared_ptr lazy_glyph_atlas_; template using Variants = std::unordered_map& lazy_glyph_atlas, + Scalar scale) {} + virtual bool Render(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const = 0; diff --git a/impeller/entity/contents/text_contents.cc b/impeller/entity/contents/text_contents.cc index a4e46641b2e14..339bb27549166 100644 --- a/impeller/entity/contents/text_contents.cc +++ b/impeller/entity/contents/text_contents.cc @@ -29,18 +29,15 @@ void TextContents::SetTextFrame(const TextFrame& frame) { frame_ = frame; } -void TextContents::SetGlyphAtlas(std::shared_ptr atlas) { - lazy_atlas_ = std::move(atlas); -} - std::shared_ptr TextContents::ResolveAtlas( GlyphAtlas::Type type, + const std::shared_ptr& lazy_atlas, std::shared_ptr atlas_context, std::shared_ptr context) const { - FML_DCHECK(lazy_atlas_); - if (lazy_atlas_) { - return lazy_atlas_->CreateOrGetGlyphAtlas(type, std::move(atlas_context), - std::move(context)); + FML_DCHECK(lazy_atlas); + if (lazy_atlas) { + return lazy_atlas->CreateOrGetGlyphAtlas(type, std::move(atlas_context), + std::move(context)); } return nullptr; @@ -78,14 +75,43 @@ std::optional TextContents::GetCoverage(const Entity& entity) const { return bounds->TransformBounds(entity.GetTransformation()); } -static bool CommonRender(const ContentContext& renderer, - const Entity& entity, - RenderPass& pass, - const Color& color, - const TextFrame& frame, - Vector2 offset, - const std::shared_ptr& atlas, - Command& cmd) { +void TextContents::PopulateGlyphAtlas( + const std::shared_ptr& lazy_glyph_atlas, + Scalar scale) { + lazy_glyph_atlas->AddTextFrame(frame_, scale); + scale_ = scale; +} + +bool TextContents::Render(const ContentContext& renderer, + const Entity& entity, + RenderPass& pass) const { + auto color = GetColor(); + if (color.IsTransparent()) { + return true; + } + + auto type = frame_.GetAtlasType(); + auto atlas = + ResolveAtlas(type, renderer.GetLazyGlyphAtlas(), + renderer.GetGlyphAtlasContext(type), renderer.GetContext()); + + if (!atlas || !atlas->IsValid()) { + VALIDATION_LOG << "Cannot render glyphs without prepared atlas."; + return false; + } + + // Information shared by all glyph draw calls. + Command cmd; + cmd.label = "TextFrame"; + auto opts = OptionsFromPassAndEntity(pass, entity); + opts.primitive_type = PrimitiveType::kTriangle; + if (type == GlyphAtlas::Type::kAlphaBitmap) { + cmd.pipeline = renderer.GetGlyphAtlasPipeline(opts); + } else { + cmd.pipeline = renderer.GetGlyphAtlasColorPipeline(opts); + } + cmd.stencil_reference = entity.GetStencilDepth(); + using VS = GlyphAtlasPipeline::VertexShader; using FS = GlyphAtlasPipeline::FragmentShader; @@ -95,7 +121,7 @@ static bool CommonRender(const ContentContext& renderer, frame_info.atlas_size = Vector2{static_cast(atlas->GetTexture()->GetSize().width), static_cast(atlas->GetTexture()->GetSize().height)}; - frame_info.offset = offset; + frame_info.offset = offset_; frame_info.is_translation_scale = entity.GetTransformation().IsTranslationScaleOnly(); frame_info.entity_transform = entity.GetTransformation(); @@ -141,7 +167,7 @@ static bool CommonRender(const ContentContext& renderer, auto& host_buffer = pass.GetTransientsBuffer(); size_t vertex_count = 0; - for (const auto& run : frame.GetRuns()) { + for (const auto& run : frame_.GetRuns()) { vertex_count += run.GetGlyphPositions().size(); } vertex_count *= 6; @@ -151,10 +177,10 @@ static bool CommonRender(const ContentContext& renderer, [&](uint8_t* contents) { VS::PerVertexData vtx; size_t vertex_offset = 0; - for (const auto& run : frame.GetRuns()) { + for (const auto& run : frame_.GetRuns()) { const Font& font = run.GetFont(); for (const auto& glyph_position : run.GetGlyphPositions()) { - FontGlyphPair font_glyph_pair{font, glyph_position.glyph}; + FontGlyphPair font_glyph_pair{font, glyph_position.glyph, scale_}; auto maybe_atlas_glyph_bounds = atlas->FindFontGlyphBounds(font_glyph_pair); if (!maybe_atlas_glyph_bounds.has_value()) { @@ -191,37 +217,4 @@ static bool CommonRender(const ContentContext& renderer, return pass.AddCommand(cmd); } -bool TextContents::Render(const ContentContext& renderer, - const Entity& entity, - RenderPass& pass) const { - auto color = GetColor(); - if (color.IsTransparent()) { - return true; - } - - auto type = frame_.GetAtlasType(); - auto atlas = ResolveAtlas(type, renderer.GetGlyphAtlasContext(type), - renderer.GetContext()); - - if (!atlas || !atlas->IsValid()) { - VALIDATION_LOG << "Cannot render glyphs without prepared atlas."; - return false; - } - - // Information shared by all glyph draw calls. - Command cmd; - cmd.label = "TextFrame"; - auto opts = OptionsFromPassAndEntity(pass, entity); - opts.primitive_type = PrimitiveType::kTriangle; - if (type == GlyphAtlas::Type::kAlphaBitmap) { - cmd.pipeline = renderer.GetGlyphAtlasPipeline(opts); - } else { - cmd.pipeline = renderer.GetGlyphAtlasColorPipeline(opts); - } - cmd.stencil_reference = entity.GetStencilDepth(); - - return CommonRender(renderer, entity, pass, color, frame_, offset_, atlas, - cmd); -} - } // namespace impeller diff --git a/impeller/entity/contents/text_contents.h b/impeller/entity/contents/text_contents.h index 14bd354086e72..c75daa0a50660 100644 --- a/impeller/entity/contents/text_contents.h +++ b/impeller/entity/contents/text_contents.h @@ -28,14 +28,14 @@ class TextContents final : public Contents { void SetTextFrame(const TextFrame& frame); - void SetGlyphAtlas(std::shared_ptr atlas); - void SetColor(Color color); Color GetColor() const; + // |Contents| bool CanInheritOpacity(const Entity& entity) const override; + // |Contents| void SetInheritedOpacity(Scalar opacity) override; void SetOffset(Vector2 offset); @@ -45,6 +45,11 @@ class TextContents final : public Contents { // |Contents| std::optional GetCoverage(const Entity& entity) const override; + // |Contents| + void PopulateGlyphAtlas( + const std::shared_ptr& lazy_glyph_atlas, + Scalar scale) override; + // |Contents| bool Render(const ContentContext& renderer, const Entity& entity, @@ -52,13 +57,14 @@ class TextContents final : public Contents { private: TextFrame frame_; + Scalar scale_ = 1.0; Color color_; Scalar inherited_opacity_ = 1.0; - mutable std::shared_ptr lazy_atlas_; Vector2 offset_; std::shared_ptr ResolveAtlas( GlyphAtlas::Type type, + const std::shared_ptr& lazy_atlas, std::shared_ptr atlas_context, std::shared_ptr context) const; diff --git a/impeller/entity/entity.cc b/impeller/entity/entity.cc index d0b2226735fc5..ad6a6842d68ba 100644 --- a/impeller/entity/entity.cc +++ b/impeller/entity/entity.cc @@ -166,4 +166,8 @@ bool Entity::Render(const ContentContext& renderer, return contents_->Render(renderer, *this, parent_pass); } +Scalar Entity::DeriveTextScale() const { + return GetTransformation().GetMaxBasisLengthXY(); +} + } // namespace impeller diff --git a/impeller/entity/entity.h b/impeller/entity/entity.h index 2063213b18072..271f9a0db8248 100644 --- a/impeller/entity/entity.h +++ b/impeller/entity/entity.h @@ -94,6 +94,8 @@ class Entity { std::optional AsBackgroundColor(ISize target_size) const; + Scalar DeriveTextScale() const; + private: Matrix transformation_; std::shared_ptr contents_; diff --git a/impeller/entity/entity_pass.cc b/impeller/entity/entity_pass.cc index 5a66dbf6ad8b7..938e7d18bb756 100644 --- a/impeller/entity/entity_pass.cc +++ b/impeller/entity/entity_pass.cc @@ -8,6 +8,7 @@ #include #include +#include "flutter/fml/closure.h" #include "flutter/fml/logging.h" #include "flutter/fml/macros.h" #include "flutter/fml/trace_event.h" @@ -253,6 +254,18 @@ bool EntityPass::Render(ContentContext& renderer, return false; } + renderer.SetLazyGlyphAtlas(std::make_shared()); + fml::ScopedCleanupClosure reset_lazy_glyph_atlas( + [&renderer]() { renderer.SetLazyGlyphAtlas(nullptr); }); + + IterateAllEntities([lazy_glyph_atlas = + renderer.GetLazyGlyphAtlas()](const Entity& entity) { + if (auto contents = entity.GetContents()) { + contents->PopulateGlyphAtlas(lazy_glyph_atlas, entity.DeriveTextScale()); + } + return true; + }); + StencilCoverageStack stencil_coverage_stack = {StencilCoverageLayer{ .coverage = Rect::MakeSize(root_render_target.GetRenderTargetSize()), .stencil_depth = 0}}; @@ -879,6 +892,28 @@ void EntityPass::IterateAllEntities( } } +void EntityPass::IterateAllEntities( + const std::function& iterator) const { + if (!iterator) { + return; + } + + for (const auto& element : elements_) { + if (auto entity = std::get_if(&element)) { + if (!iterator(*entity)) { + return; + } + continue; + } + if (auto subpass = std::get_if>(&element)) { + const EntityPass* entity_pass = subpass->get(); + entity_pass->IterateAllEntities(iterator); + continue; + } + FML_UNREACHABLE(); + } +} + bool EntityPass::IterateUntilSubpass( const std::function& iterator) { if (!iterator) { diff --git a/impeller/entity/entity_pass.h b/impeller/entity/entity_pass.h index e3dbada3d7eed..d90abfb99e568 100644 --- a/impeller/entity/entity_pass.h +++ b/impeller/entity/entity_pass.h @@ -79,6 +79,12 @@ class EntityPass { /// of child passes. The iteration order is depth-first. void IterateAllEntities(const std::function& iterator); + /// @brief Iterate all entities in this pass, recursively including entities + /// of child passes. The iteration order is depth-first and does not + /// allow modification of the entities. + void IterateAllEntities( + const std::function& iterator) const; + /// @brief Iterate entities in this pass up until the first subpass is found. /// This is useful for limiting look-ahead optimizations. /// diff --git a/impeller/entity/entity_unittests.cc b/impeller/entity/entity_unittests.cc index 28bc4d8d11493..05818e84270f7 100644 --- a/impeller/entity/entity_unittests.cc +++ b/impeller/entity/entity_unittests.cc @@ -2184,7 +2184,7 @@ TEST_P(EntityTest, InheritOpacityTest) { auto blob = SkTextBlob::MakeFromString("A", font); auto frame = TextFrameFromTextBlob(blob); auto lazy_glyph_atlas = std::make_shared(); - lazy_glyph_atlas->AddTextFrame(frame); + lazy_glyph_atlas->AddTextFrame(frame, 1.0f); auto text_contents = std::make_shared(); text_contents->SetTextFrame(frame); diff --git a/impeller/typographer/backends/skia/text_frame_skia.cc b/impeller/typographer/backends/skia/text_frame_skia.cc index e451695dc8b6d..cac02a80968b6 100644 --- a/impeller/typographer/backends/skia/text_frame_skia.cc +++ b/impeller/typographer/backends/skia/text_frame_skia.cc @@ -17,7 +17,7 @@ namespace impeller { -static Font ToFont(const SkTextBlobRunIterator& run, Scalar scale) { +static Font ToFont(const SkTextBlobRunIterator& run) { auto& font = run.font(); auto typeface = std::make_shared(font.refTypefaceOrDefault()); @@ -25,7 +25,6 @@ static Font ToFont(const SkTextBlobRunIterator& run, Scalar scale) { font.getMetrics(&sk_metrics); Font::Metrics metrics; - metrics.scale = scale; metrics.point_size = font.getSize(); metrics.embolden = font.isEmbolden(); metrics.skewX = font.getSkewX(); @@ -38,7 +37,7 @@ static Rect ToRect(const SkRect& rect) { return Rect::MakeLTRB(rect.fLeft, rect.fTop, rect.fRight, rect.fBottom); } -TextFrame TextFrameFromTextBlob(const sk_sp& blob, Scalar scale) { +TextFrame TextFrameFromTextBlob(const sk_sp& blob) { if (!blob) { return {}; } @@ -46,7 +45,7 @@ TextFrame TextFrameFromTextBlob(const sk_sp& blob, Scalar scale) { TextFrame frame; for (SkTextBlobRunIterator run(blob.get()); !run.done(); run.next()) { - TextRun text_run(ToFont(run, scale)); + TextRun text_run(ToFont(run)); // TODO(jonahwilliams): ask Skia for a public API to look this up. // https://github.com/flutter/flutter/issues/112005 diff --git a/impeller/typographer/backends/skia/text_frame_skia.h b/impeller/typographer/backends/skia/text_frame_skia.h index 80d6c33921fa3..a12b0f5ec60fa 100644 --- a/impeller/typographer/backends/skia/text_frame_skia.h +++ b/impeller/typographer/backends/skia/text_frame_skia.h @@ -10,7 +10,6 @@ namespace impeller { -TextFrame TextFrameFromTextBlob(const sk_sp& blob, - Scalar scale = 1.0f); +TextFrame TextFrameFromTextBlob(const sk_sp& blob); } // namespace impeller diff --git a/impeller/typographer/backends/skia/text_render_context_skia.cc b/impeller/typographer/backends/skia/text_render_context_skia.cc index 9028a5cba0cc3..8553ce87a7ed4 100644 --- a/impeller/typographer/backends/skia/text_render_context_skia.cc +++ b/impeller/typographer/backends/skia/text_render_context_skia.cc @@ -40,23 +40,6 @@ TextRenderContextSkia::TextRenderContextSkia(std::shared_ptr context) TextRenderContextSkia::~TextRenderContextSkia() = default; -static FontGlyphPair::Set CollectUniqueFontGlyphPairs( - GlyphAtlas::Type type, - const TextRenderContext::FrameIterator& frame_iterator) { - TRACE_EVENT0("impeller", __FUNCTION__); - FontGlyphPair::Set set; - while (const TextFrame* frame = frame_iterator()) { - for (const TextRun& run : frame->GetRuns()) { - const Font& font = run.GetFont(); - for (const TextRun::GlyphPosition& glyph_position : - run.GetGlyphPositions()) { - set.insert({font, glyph_position.glyph}); - } - } - } - return set; -} - static size_t PairsFitInAtlasOfSize( const FontGlyphPair::Set& pairs, const ISize& atlas_size, @@ -73,8 +56,7 @@ static size_t PairsFitInAtlasOfSize( for (auto it = pairs.begin(); it != pairs.end(); ++i, ++it) { const auto& pair = *it; - const auto glyph_size = - ISize::Ceil((pair.glyph.bounds * pair.font.GetMetrics().scale).size); + const auto glyph_size = ISize::Ceil((pair.glyph.bounds * pair.scale).size); IPoint16 location_in_atlas; if (!rect_packer->addRect(glyph_size.width + kPadding, // glyph_size.height + kPadding, // @@ -111,8 +93,7 @@ static bool CanAppendToExistingAtlas( for (size_t i = 0; i < extra_pairs.size(); i++) { const FontGlyphPair& pair = extra_pairs[i]; - const auto glyph_size = - ISize::Ceil((pair.glyph.bounds * pair.font.GetMetrics().scale).size); + const auto glyph_size = ISize::Ceil((pair.glyph.bounds * pair.scale).size); IPoint16 location_in_atlas; if (!rect_packer->addRect(glyph_size.width + kPadding, // glyph_size.height + kPadding, // @@ -176,8 +157,8 @@ static void DrawGlyph(SkCanvas* canvas, const Rect& location, bool has_color) { const auto& metrics = font_glyph.font.GetMetrics(); - const auto position = SkPoint::Make(location.origin.x / metrics.scale, - location.origin.y / metrics.scale); + const auto position = SkPoint::Make(location.origin.x / font_glyph.scale, + location.origin.y / font_glyph.scale); SkGlyphID glyph_id = font_glyph.glyph.index; SkFont sk_font( @@ -192,7 +173,7 @@ static void DrawGlyph(SkCanvas* canvas, SkPaint glyph_paint; glyph_paint.setColor(glyph_color); canvas->resetMatrix(); - canvas->scale(metrics.scale, metrics.scale); + canvas->scale(font_glyph.scale, font_glyph.scale); canvas->drawGlyphs( 1u, // count &glyph_id, // glyphs @@ -331,25 +312,19 @@ static std::shared_ptr UploadGlyphTextureAtlas( std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( GlyphAtlas::Type type, std::shared_ptr atlas_context, - FrameIterator frame_iterator) const { + const FontGlyphPair::Set& font_glyph_pairs) const { TRACE_EVENT0("impeller", __FUNCTION__); if (!IsValid()) { return nullptr; } std::shared_ptr last_atlas = atlas_context->GetGlyphAtlas(); - // --------------------------------------------------------------------------- - // Step 1: Collect unique font-glyph pairs in the frame. - // --------------------------------------------------------------------------- - - FontGlyphPair::Set font_glyph_pairs = - CollectUniqueFontGlyphPairs(type, frame_iterator); if (font_glyph_pairs.empty()) { return last_atlas; } // --------------------------------------------------------------------------- - // Step 2: Determine if the atlas type and font glyph pairs are compatible + // Step 1: Determine if the atlas type and font glyph pairs are compatible // with the current atlas and reuse if possible. // --------------------------------------------------------------------------- FontGlyphPairRefVector new_glyphs; @@ -363,7 +338,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 3: Determine if the additional missing glyphs can be appended to the + // Step 2: Determine if the additional missing glyphs can be appended to the // existing bitmap without recreating the atlas. This requires that // the type is identical. // --------------------------------------------------------------------------- @@ -376,7 +351,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( // added. // --------------------------------------------------------------------------- - // Step 4: Record the positions in the glyph atlas of the newly added + // Step 3a: Record the positions in the glyph atlas of the newly added // glyphs. // --------------------------------------------------------------------------- for (size_t i = 0, count = glyph_positions.size(); i < count; i++) { @@ -384,7 +359,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 5: Draw new font-glyph pairs into the existing bitmap. + // Step 4a: Draw new font-glyph pairs into the existing bitmap. // --------------------------------------------------------------------------- auto bitmap = atlas_context->GetBitmap(); if (!UpdateAtlasBitmap(*last_atlas, bitmap, new_glyphs)) { @@ -392,7 +367,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 6: Update the existing texture with the updated bitmap. + // Step 5a: Update the existing texture with the updated bitmap. // --------------------------------------------------------------------------- if (!UpdateGlyphTextureAtlas(bitmap, last_atlas->GetTexture())) { return nullptr; @@ -402,7 +377,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( // A new glyph atlas must be created. // --------------------------------------------------------------------------- - // Step 4: Get the optimum size of the texture atlas. + // Step 3b: Get the optimum size of the texture atlas. // --------------------------------------------------------------------------- auto glyph_atlas = std::make_shared(type); auto atlas_size = OptimumAtlasSizeForFontGlyphPairs( @@ -413,7 +388,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( return nullptr; } // --------------------------------------------------------------------------- - // Step 5: Find location of font-glyph pairs in the atlas. We have this from + // Step 4b: Find location of font-glyph pairs in the atlas. We have this from // the last step. So no need to do create another rect packer. But just do a // sanity check of counts. This could also be just an assertion as only a // construction issue would cause such a failure. @@ -423,7 +398,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 6: Record the positions in the glyph atlas. + // Step 5b: Record the positions in the glyph atlas. // --------------------------------------------------------------------------- { size_t i = 0; @@ -434,7 +409,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 7: Draw font-glyph pairs in the correct spot in the atlas. + // Step 6b: Draw font-glyph pairs in the correct spot in the atlas. // --------------------------------------------------------------------------- auto bitmap = CreateAtlasBitmap(*glyph_atlas, atlas_size); if (!bitmap) { @@ -443,7 +418,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( atlas_context->UpdateBitmap(bitmap); // --------------------------------------------------------------------------- - // Step 8: Upload the atlas as a texture. + // Step 7b: Upload the atlas as a texture. // --------------------------------------------------------------------------- PixelFormat format; switch (type) { @@ -461,7 +436,7 @@ std::shared_ptr TextRenderContextSkia::CreateGlyphAtlas( } // --------------------------------------------------------------------------- - // Step 9: Record the texture in the glyph atlas. + // Step 8b: Record the texture in the glyph atlas. // --------------------------------------------------------------------------- glyph_atlas->SetTexture(std::move(texture)); diff --git a/impeller/typographer/backends/skia/text_render_context_skia.h b/impeller/typographer/backends/skia/text_render_context_skia.h index 0c97a8716e7ad..2e2e6ad97cf8b 100644 --- a/impeller/typographer/backends/skia/text_render_context_skia.h +++ b/impeller/typographer/backends/skia/text_render_context_skia.h @@ -19,7 +19,7 @@ class TextRenderContextSkia : public TextRenderContext { std::shared_ptr CreateGlyphAtlas( GlyphAtlas::Type type, std::shared_ptr atlas_context, - FrameIterator iterator) const override; + const FontGlyphPair::Set& font_glyph_pairs) const override; private: FML_DISALLOW_COPY_AND_ASSIGN(TextRenderContextSkia); diff --git a/impeller/typographer/font.h b/impeller/typographer/font.h index de80478ccbaf6..bbfc569860b72 100644 --- a/impeller/typographer/font.h +++ b/impeller/typographer/font.h @@ -28,12 +28,6 @@ class Font : public Comparable { /// the baseline with an upper-left-origin coordinate system. /// struct Metrics { - //-------------------------------------------------------------------------- - /// The scaling factor that should be used when rendering this font to an - /// atlas. This should normally be set in accordance with the transformation - /// matrix that will be used to position glyph geometry. - /// - Scalar scale = 1.0f; //-------------------------------------------------------------------------- /// The point size of the font. /// @@ -43,8 +37,8 @@ class Font : public Comparable { Scalar scaleX = 1.0f; constexpr bool operator==(const Metrics& o) const { - return scale == o.scale && point_size == o.point_size && - embolden == o.embolden && skewX == o.skewX && scaleX == o.scaleX; + return point_size == o.point_size && embolden == o.embolden && + skewX == o.skewX && scaleX == o.scaleX; } }; @@ -80,6 +74,6 @@ class Font : public Comparable { template <> struct std::hash { constexpr std::size_t operator()(const impeller::Font::Metrics& m) const { - return fml::HashCombine(m.scale, m.point_size); + return fml::HashCombine(m.point_size, m.skewX, m.scaleX); } }; diff --git a/impeller/typographer/font_glyph_pair.h b/impeller/typographer/font_glyph_pair.h index ed455095356dd..0b89c803af88e 100644 --- a/impeller/typographer/font_glyph_pair.h +++ b/impeller/typographer/font_glyph_pair.h @@ -16,28 +16,29 @@ namespace impeller { //------------------------------------------------------------------------------ -/// @brief A font along with a glyph in that font. Used in glyph atlases as -/// keys. +/// @brief A font along with a glyph in that font rendered at a particular +/// scale. Used in glyph atlases as keys. /// struct FontGlyphPair { struct Hash; struct Equal; using Set = std::unordered_set; - using Vector = std::vector; Font font; Glyph glyph; + Scalar scale; struct Hash { std::size_t operator()(const FontGlyphPair& p) const { - return fml::HashCombine(p.font.GetHash(), p.glyph.index, p.glyph.type); + return fml::HashCombine(p.font.GetHash(), p.glyph.index, p.glyph.type, + p.scale); } }; struct Equal { bool operator()(const FontGlyphPair& lhs, const FontGlyphPair& rhs) const { return lhs.font.IsEqual(rhs.font) && lhs.glyph.index == rhs.glyph.index && - lhs.glyph.type == rhs.glyph.type; + lhs.glyph.type == rhs.glyph.type && lhs.scale == rhs.scale; } }; }; diff --git a/impeller/typographer/lazy_glyph_atlas.cc b/impeller/typographer/lazy_glyph_atlas.cc index 799b56a35877f..94c738e37b798 100644 --- a/impeller/typographer/lazy_glyph_atlas.cc +++ b/impeller/typographer/lazy_glyph_atlas.cc @@ -15,12 +15,12 @@ LazyGlyphAtlas::LazyGlyphAtlas() = default; LazyGlyphAtlas::~LazyGlyphAtlas() = default; -void LazyGlyphAtlas::AddTextFrame(const TextFrame& frame) { +void LazyGlyphAtlas::AddTextFrame(const TextFrame& frame, Scalar scale) { FML_DCHECK(atlas_map_.empty()); if (frame.GetAtlasType() == GlyphAtlas::Type::kAlphaBitmap) { - alpha_frames_.emplace_back(frame); + frame.CollectUniqueFontGlyphPairs(alpha_set_, scale); } else { - color_frames_.emplace_back(frame); + frame.CollectUniqueFontGlyphPairs(color_set_, scale); } } @@ -39,19 +39,9 @@ std::shared_ptr LazyGlyphAtlas::CreateOrGetGlyphAtlas( if (!text_context || !text_context->IsValid()) { return nullptr; } - size_t i = 0; - auto frames = - type == GlyphAtlas::Type::kAlphaBitmap ? alpha_frames_ : color_frames_; - TextRenderContext::FrameIterator iterator = [&]() -> const TextFrame* { - if (i >= frames.size()) { - return nullptr; - } - const auto& result = frames[i]; - i++; - return &result; - }; + auto& set = type == GlyphAtlas::Type::kAlphaBitmap ? alpha_set_ : color_set_; auto atlas = - text_context->CreateGlyphAtlas(type, std::move(atlas_context), iterator); + text_context->CreateGlyphAtlas(type, std::move(atlas_context), set); if (!atlas || !atlas->IsValid()) { VALIDATION_LOG << "Could not create valid atlas."; return nullptr; diff --git a/impeller/typographer/lazy_glyph_atlas.h b/impeller/typographer/lazy_glyph_atlas.h index 067601e65e64f..f79b46db9d383 100644 --- a/impeller/typographer/lazy_glyph_atlas.h +++ b/impeller/typographer/lazy_glyph_atlas.h @@ -19,7 +19,7 @@ class LazyGlyphAtlas { ~LazyGlyphAtlas(); - void AddTextFrame(const TextFrame& frame); + void AddTextFrame(const TextFrame& frame, Scalar scale); std::shared_ptr CreateOrGetGlyphAtlas( GlyphAtlas::Type type, @@ -27,8 +27,8 @@ class LazyGlyphAtlas { std::shared_ptr context) const; private: - std::vector alpha_frames_; - std::vector color_frames_; + FontGlyphPair::Set alpha_set_; + FontGlyphPair::Set color_set_; mutable std::unordered_map> atlas_map_; diff --git a/impeller/typographer/text_frame.cc b/impeller/typographer/text_frame.cc index ed3c97cc82b3e..4191446f05462 100644 --- a/impeller/typographer/text_frame.cc +++ b/impeller/typographer/text_frame.cc @@ -79,4 +79,15 @@ bool TextFrame::MaybeHasOverlapping() const { return false; } +void TextFrame::CollectUniqueFontGlyphPairs(FontGlyphPair::Set& set, + Scalar scale) const { + for (const TextRun& run : GetRuns()) { + const Font& font = run.GetFont(); + for (const TextRun::GlyphPosition& glyph_position : + run.GetGlyphPositions()) { + set.insert({font, glyph_position.glyph, scale}); + } + } +} + } // namespace impeller diff --git a/impeller/typographer/text_frame.h b/impeller/typographer/text_frame.h index a47e4c0e2252a..512f7b705e3e3 100644 --- a/impeller/typographer/text_frame.h +++ b/impeller/typographer/text_frame.h @@ -22,6 +22,8 @@ class TextFrame { ~TextFrame(); + void CollectUniqueFontGlyphPairs(FontGlyphPair::Set& set, Scalar scale) const; + //---------------------------------------------------------------------------- /// @brief The conservative bounding box for this text frame. /// diff --git a/impeller/typographer/text_render_context.cc b/impeller/typographer/text_render_context.cc index 8cc8dbf00a02e..1b7aba10a7b74 100644 --- a/impeller/typographer/text_render_context.cc +++ b/impeller/typographer/text_render_context.cc @@ -26,19 +26,4 @@ const std::shared_ptr& TextRenderContext::GetContext() const { return context_; } -std::shared_ptr TextRenderContext::CreateGlyphAtlas( - GlyphAtlas::Type type, - std::shared_ptr atlas_context, - const TextFrame& frame) const { - size_t count = 0; - FrameIterator iterator = [&]() -> const TextFrame* { - count++; - if (count == 1) { - return &frame; - } - return nullptr; - }; - return CreateGlyphAtlas(type, std::move(atlas_context), iterator); -} - } // namespace impeller diff --git a/impeller/typographer/text_render_context.h b/impeller/typographer/text_render_context.h index c63ac912a1fa8..d909388105f93 100644 --- a/impeller/typographer/text_render_context.h +++ b/impeller/typographer/text_render_context.h @@ -37,20 +37,13 @@ class TextRenderContext { /// const std::shared_ptr& GetContext() const; - using FrameIterator = std::function; - // TODO(dnfield): Callers should not need to know which type of atlas to // create. https://github.com/flutter/flutter/issues/111640 virtual std::shared_ptr CreateGlyphAtlas( GlyphAtlas::Type type, std::shared_ptr atlas_context, - FrameIterator iterator) const = 0; - - std::shared_ptr CreateGlyphAtlas( - GlyphAtlas::Type type, - std::shared_ptr atlas_context, - const TextFrame& frame) const; + const FontGlyphPair::Set& font_glyph_pairs) const = 0; protected: //---------------------------------------------------------------------------- diff --git a/impeller/typographer/typographer_unittests.cc b/impeller/typographer/typographer_unittests.cc index e807ac8a26d74..e800ea258b44e 100644 --- a/impeller/typographer/typographer_unittests.cc +++ b/impeller/typographer/typographer_unittests.cc @@ -23,6 +23,17 @@ namespace testing { using TypographerTest = PlaygroundTest; INSTANTIATE_PLAYGROUND_SUITE(TypographerTest); +static std::shared_ptr CreateGlyphAtlas( + const TextRenderContext* context, + GlyphAtlas::Type type, + Scalar scale, + const std::shared_ptr& atlas_context, + const TextFrame& frame) { + FontGlyphPair::Set set; + frame.CollectUniqueFontGlyphPairs(set, scale); + return context->CreateGlyphAtlas(type, atlas_context, set); +} + TEST_P(TypographerTest, CanConvertTextBlob) { SkFont font; auto blob = SkTextBlob::MakeFromString( @@ -49,8 +60,8 @@ TEST_P(TypographerTest, CanCreateGlyphAtlas) { auto blob = SkTextBlob::MakeFromString("hello", sk_font); ASSERT_TRUE(blob); auto atlas = - context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, - TextFrameFromTextBlob(blob)); + CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, + atlas_context, TextFrameFromTextBlob(blob)); ASSERT_NE(atlas, nullptr); ASSERT_NE(atlas->GetTexture(), nullptr); ASSERT_EQ(atlas->GetType(), GlyphAtlas::Type::kAlphaBitmap); @@ -102,13 +113,13 @@ TEST_P(TypographerTest, LazyAtlasTracksColor) { LazyGlyphAtlas lazy_atlas; - lazy_atlas.AddTextFrame(frame); + lazy_atlas.AddTextFrame(frame, 1.0f); frame = TextFrameFromTextBlob(SkTextBlob::MakeFromString("😀 ", emoji_font)); ASSERT_TRUE(frame.GetAtlasType() == GlyphAtlas::Type::kColorBitmap); - lazy_atlas.AddTextFrame(frame); + lazy_atlas.AddTextFrame(frame, 1.0f); // Creates different atlases for color and alpha bitmap. auto color_context = std::make_shared(); @@ -130,8 +141,8 @@ TEST_P(TypographerTest, GlyphAtlasWithOddUniqueGlyphSize) { auto blob = SkTextBlob::MakeFromString("AGH", sk_font); ASSERT_TRUE(blob); auto atlas = - context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, - TextFrameFromTextBlob(blob)); + CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, + atlas_context, TextFrameFromTextBlob(blob)); ASSERT_NE(atlas, nullptr); ASSERT_NE(atlas->GetTexture(), nullptr); @@ -147,8 +158,8 @@ TEST_P(TypographerTest, GlyphAtlasIsRecycledIfUnchanged) { auto blob = SkTextBlob::MakeFromString("spooky skellingtons", sk_font); ASSERT_TRUE(blob); auto atlas = - context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, - TextFrameFromTextBlob(blob)); + CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, + atlas_context, TextFrameFromTextBlob(blob)); ASSERT_NE(atlas, nullptr); ASSERT_NE(atlas->GetTexture(), nullptr); ASSERT_EQ(atlas, atlas_context->GetGlyphAtlas()); @@ -156,8 +167,8 @@ TEST_P(TypographerTest, GlyphAtlasIsRecycledIfUnchanged) { // now attempt to re-create an atlas with the same text blob. auto next_atlas = - context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, - TextFrameFromTextBlob(blob)); + CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, + atlas_context, TextFrameFromTextBlob(blob)); ASSERT_EQ(atlas, next_atlas); ASSERT_EQ(atlas_context->GetGlyphAtlas(), atlas); } @@ -166,7 +177,6 @@ TEST_P(TypographerTest, GlyphAtlasWithLotsOfdUniqueGlyphSize) { auto context = TextRenderContext::Create(GetContext()); auto atlas_context = std::make_shared(); ASSERT_TRUE(context && context->IsValid()); - SkFont sk_font; const char* test_string = "QWERTYUIOPASDFGHJKLZXCVBNMqewrtyuiopasdfghjklzxcvbnm,.<>[]{};':" @@ -174,22 +184,17 @@ TEST_P(TypographerTest, GlyphAtlasWithLotsOfdUniqueGlyphSize) { "œ∑´®†¥¨ˆøπ““‘‘åß∂ƒ©˙∆˚¬…æ≈ç√∫˜µ≤≥≥≥≥÷¡™£¢∞§¶•ªº–≠⁄€‹›fifl‡°·‚—±Œ„´‰Á¨Ø∏”’/" "* Í˝ */¸˛Ç◊ı˜Â¯˘¿"; + SkFont sk_font; auto blob = SkTextBlob::MakeFromString(test_string, sk_font); ASSERT_TRUE(blob); - TextFrame frame; - size_t count = 0; - const int size_count = 8; - TextRenderContext::FrameIterator iterator = [&]() -> const TextFrame* { - if (count < size_count) { - count++; - frame = TextFrameFromTextBlob(blob, 0.6 * count); - return &frame; - } - return nullptr; + FontGlyphPair::Set set; + size_t size_count = 8; + for (size_t index = 0; index < size_count; index += 1) { + TextFrameFromTextBlob(blob).CollectUniqueFontGlyphPairs(set, 0.6 * index); }; auto atlas = context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, - atlas_context, iterator); + std::move(atlas_context), set); ASSERT_NE(atlas, nullptr); ASSERT_NE(atlas->GetTexture(), nullptr); @@ -217,8 +222,8 @@ TEST_P(TypographerTest, GlyphAtlasTextureIsRecycledIfUnchanged) { auto blob = SkTextBlob::MakeFromString("spooky 1", sk_font); ASSERT_TRUE(blob); auto atlas = - context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, - TextFrameFromTextBlob(blob)); + CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, + atlas_context, TextFrameFromTextBlob(blob)); auto old_packer = atlas_context->GetRectPacker(); ASSERT_NE(atlas, nullptr); @@ -231,8 +236,8 @@ TEST_P(TypographerTest, GlyphAtlasTextureIsRecycledIfUnchanged) { auto blob2 = SkTextBlob::MakeFromString("spooky 2", sk_font); auto next_atlas = - context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, - TextFrameFromTextBlob(blob2)); + CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, + atlas_context, TextFrameFromTextBlob(blob2)); ASSERT_EQ(atlas, next_atlas); auto* second_texture = next_atlas->GetTexture().get(); @@ -250,8 +255,8 @@ TEST_P(TypographerTest, GlyphAtlasTextureIsRecreatedIfTypeChanges) { auto blob = SkTextBlob::MakeFromString("spooky 1", sk_font); ASSERT_TRUE(blob); auto atlas = - context->CreateGlyphAtlas(GlyphAtlas::Type::kAlphaBitmap, atlas_context, - TextFrameFromTextBlob(blob)); + CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kAlphaBitmap, 1.0f, + atlas_context, TextFrameFromTextBlob(blob)); auto old_packer = atlas_context->GetRectPacker(); ASSERT_NE(atlas, nullptr); @@ -265,8 +270,8 @@ TEST_P(TypographerTest, GlyphAtlasTextureIsRecreatedIfTypeChanges) { auto blob2 = SkTextBlob::MakeFromString("spooky 1", sk_font); auto next_atlas = - context->CreateGlyphAtlas(GlyphAtlas::Type::kColorBitmap, atlas_context, - TextFrameFromTextBlob(blob2)); + CreateGlyphAtlas(context.get(), GlyphAtlas::Type::kColorBitmap, 1.0f, + atlas_context, TextFrameFromTextBlob(blob2)); ASSERT_NE(atlas, next_atlas); auto* second_texture = next_atlas->GetTexture().get(); From 0bba1942835266d9fc238756a835fdf2c5f6a8ef Mon Sep 17 00:00:00 2001 From: Yegor Date: Fri, 14 Jul 2023 16:59:04 -0700 Subject: [PATCH 072/211] [web] always add secondary role managers (#43663) Always add secondary role managers irrespective of the initial state of the semantic node, and have role manager decide whether it applies to the node or not. Fixes https://github.com/flutter/flutter/issues/130546 --- .../lib/src/engine/semantics/dialog.dart | 4 + .../lib/src/engine/semantics/focusable.dart | 23 ++++- .../src/engine/semantics/label_and_value.dart | 1 - .../lib/src/engine/semantics/live_region.dart | 4 + .../lib/src/engine/semantics/semantics.dart | 35 ++----- .../lib/src/engine/semantics/tappable.dart | 5 +- .../test/engine/semantics/semantics_test.dart | 93 ++++++++++++++++++- 7 files changed, 130 insertions(+), 35 deletions(-) diff --git a/lib/web_ui/lib/src/engine/semantics/dialog.dart b/lib/web_ui/lib/src/engine/semantics/dialog.dart index 7e8f58ec6c73d..8155ba4838415 100644 --- a/lib/web_ui/lib/src/engine/semantics/dialog.dart +++ b/lib/web_ui/lib/src/engine/semantics/dialog.dart @@ -76,6 +76,10 @@ class RouteName extends RoleManager { // semantics code. Since reparenting can be done with no update to either // the Dialog or RouteName we'd have to scan intermediate nodes for // structural changes. + if (!semanticsObject.namesRoute) { + return; + } + if (semanticsObject.isLabelDirty) { final Dialog? dialog = _dialog; if (dialog != null) { diff --git a/lib/web_ui/lib/src/engine/semantics/focusable.dart b/lib/web_ui/lib/src/engine/semantics/focusable.dart index 4de57af1c6948..4b3285dbdf399 100644 --- a/lib/web_ui/lib/src/engine/semantics/focusable.dart +++ b/lib/web_ui/lib/src/engine/semantics/focusable.dart @@ -30,15 +30,20 @@ import 'semantics.dart'; class Focusable extends RoleManager { Focusable(SemanticsObject semanticsObject) : _focusManager = AccessibilityFocusManager(semanticsObject.owner), - super(Role.focusable, semanticsObject) { - _focusManager.manage(semanticsObject.id, semanticsObject.element); - } + super(Role.focusable, semanticsObject); final AccessibilityFocusManager _focusManager; @override void update() { - _focusManager.changeFocus(semanticsObject.hasFocus && (!semanticsObject.hasEnabledState || semanticsObject.isEnabled)); + if (semanticsObject.isFocusable) { + if (!_focusManager.isManaging) { + _focusManager.manage(semanticsObject.id, semanticsObject.element); + } + _focusManager.changeFocus(semanticsObject.hasFocus && (!semanticsObject.hasEnabledState || semanticsObject.isEnabled)); + } else { + _focusManager.stopManaging(); + } } @override @@ -79,6 +84,9 @@ class AccessibilityFocusManager { _FocusTarget? _target; + /// Whether this focus manager is managing a focusable target. + bool get isManaging => _target != null; + /// Starts managing the focus of the given [element]. /// /// The "focus" and "blur" DOM events are forwarded to the framework-side @@ -127,6 +135,7 @@ class AccessibilityFocusManager { /// Stops managing the focus of the current element, if any. void stopManaging() { final _FocusTarget? target = _target; + _target = null; if (target == null) { /// Nothing is being managed. Just return. @@ -135,7 +144,11 @@ class AccessibilityFocusManager { target.element.removeEventListener('focus', target.domFocusListener); target.element.removeEventListener('blur', target.domBlurListener); - _target = null; + + // Blur the element after removing listeners. If this method is being called + // it indicates that the framework already knows that this node should not + // have focus, and there's no need to notify it. + target.element.blur(); } void _setFocusFromDom(bool acquireFocus) { diff --git a/lib/web_ui/lib/src/engine/semantics/label_and_value.dart b/lib/web_ui/lib/src/engine/semantics/label_and_value.dart index 643f305fc7287..23421e13590d1 100644 --- a/lib/web_ui/lib/src/engine/semantics/label_and_value.dart +++ b/lib/web_ui/lib/src/engine/semantics/label_and_value.dart @@ -68,7 +68,6 @@ class LabelAndValue extends RoleManager { void _cleanUpDom() { semanticsObject.element.removeAttribute('aria-label'); - semanticsObject.clearAriaRole(); } @override diff --git a/lib/web_ui/lib/src/engine/semantics/live_region.dart b/lib/web_ui/lib/src/engine/semantics/live_region.dart index 239b9b600a13d..c922cddd717b7 100644 --- a/lib/web_ui/lib/src/engine/semantics/live_region.dart +++ b/lib/web_ui/lib/src/engine/semantics/live_region.dart @@ -22,6 +22,10 @@ class LiveRegion extends RoleManager { @override void update() { + if (!semanticsObject.isLiveRegion) { + return; + } + // Avoid announcing the same message over and over. if (_lastAnnouncement != semanticsObject.label) { _lastAnnouncement = semanticsObject.label; diff --git a/lib/web_ui/lib/src/engine/semantics/semantics.dart b/lib/web_ui/lib/src/engine/semantics/semantics.dart index 8e3971b6dfc1b..8f19b2ef10e72 100644 --- a/lib/web_ui/lib/src/engine/semantics/semantics.dart +++ b/lib/web_ui/lib/src/engine/semantics/semantics.dart @@ -449,39 +449,29 @@ abstract class PrimaryRoleManager { @visibleForTesting List get debugSecondaryRoles => _secondaryRoleManagers?.map((RoleManager manager) => manager.role).toList() ?? const []; - /// Adds generic focus management features, if applicable. + /// Adds generic focus management features. void addFocusManagement() { - if (semanticsObject.isFocusable) { - addSecondaryRole(Focusable(semanticsObject)); - } + addSecondaryRole(Focusable(semanticsObject)); } - /// Adds generic live region features, if applicable. + /// Adds generic live region features. void addLiveRegion() { - if (semanticsObject.isLiveRegion) { - addSecondaryRole(LiveRegion(semanticsObject)); - } + addSecondaryRole(LiveRegion(semanticsObject)); } - /// Adds generic route name features, if applicable. + /// Adds generic route name features. void addRouteName() { - if (semanticsObject.namesRoute) { - addSecondaryRole(RouteName(semanticsObject)); - } + addSecondaryRole(RouteName(semanticsObject)); } - /// Adds generic label features, if applicable. + /// Adds generic label features. void addLabelAndValue() { - if (semanticsObject.hasLabel || semanticsObject.hasValue || semanticsObject.hasTooltip) { - addSecondaryRole(LabelAndValue(semanticsObject)); - } + addSecondaryRole(LabelAndValue(semanticsObject)); } /// Adds generic functionality for handling taps and clicks. void addTappable() { - if (semanticsObject.isTappable) { - addSecondaryRole(Tappable(semanticsObject)); - } + addSecondaryRole(Tappable(semanticsObject)); } /// Adds a secondary role to this primary role manager. @@ -531,7 +521,7 @@ abstract class PrimaryRoleManager { /// gesture mode changes. @mustCallSuper void dispose() { - semanticsObject.clearAriaRole(); + semanticsObject.element.removeAttribute('role'); _isDisposed = true; } } @@ -1464,11 +1454,6 @@ class SemanticsObject { element.setAttribute('role', ariaRoleName); } - /// Removes the `role` HTML attribue, if any. - void clearAriaRole() { - element.removeAttribute('role'); - } - /// The primary role of this node. /// /// The primary role is assigned by [updateSelf] based on the combination of diff --git a/lib/web_ui/lib/src/engine/semantics/tappable.dart b/lib/web_ui/lib/src/engine/semantics/tappable.dart index 39362f9976a0a..259a9c7d55669 100644 --- a/lib/web_ui/lib/src/engine/semantics/tappable.dart +++ b/lib/web_ui/lib/src/engine/semantics/tappable.dart @@ -40,8 +40,7 @@ class Tappable extends RoleManager { @override void update() { - final DomElement element = semanticsObject.element; - if (semanticsObject.enabledState() == EnabledState.disabled || !semanticsObject.isTappable) { + if (!semanticsObject.isTappable || semanticsObject.enabledState() == EnabledState.disabled) { _stopListening(); } else { if (_clickListener == null) { @@ -52,7 +51,7 @@ class Tappable extends RoleManager { EnginePlatformDispatcher.instance.invokeOnSemanticsAction( semanticsObject.id, ui.SemanticsAction.tap, null); }); - element.addEventListener('click', _clickListener); + semanticsObject.element.addEventListener('click', _clickListener); } } } diff --git a/lib/web_ui/test/engine/semantics/semantics_test.dart b/lib/web_ui/test/engine/semantics/semantics_test.dart index 03a030358a74c..4c4f51eb0a49b 100644 --- a/lib/web_ui/test/engine/semantics/semantics_test.dart +++ b/lib/web_ui/test/engine/semantics/semantics_test.dart @@ -44,6 +44,9 @@ void runSemanticsTests() { group('longestIncreasingSubsequence', () { _testLongestIncreasingSubsequence(); }); + group('Role managers', () { + _testRoleManagerLifecycle(); + }); group('container', () { _testContainer(); }); @@ -91,6 +94,60 @@ void runSemanticsTests() { }); } +void _testRoleManagerLifecycle() { + test('Secondary role managers are added upon node initialization', () { + semantics() + ..debugOverrideTimestampFunction(() => _testTime) + ..semanticsEnabled = true; + + // Check that roles are initialized immediately + { + final SemanticsTester tester = SemanticsTester(semantics()); + tester.updateNode( + id: 0, + isButton: true, + rect: const ui.Rect.fromLTRB(0, 0, 100, 50), + ); + tester.apply(); + + expectSemanticsTree(''); + + final SemanticsObject node = semantics().debugSemanticsTree![0]!; + expect(node.primaryRole?.role, PrimaryRole.button); + expect( + node.primaryRole?.debugSecondaryRoles, + containsAll([Role.focusable, Role.tappable, Role.labelAndValue]), + ); + expect(tester.getSemanticsObject(0).element.tabIndex, -1); + } + + // Check that roles apply their functionality upon update. + { + final SemanticsTester tester = SemanticsTester(semantics()); + tester.updateNode( + id: 0, + label: 'a label', + isFocusable: true, + isButton: true, + rect: const ui.Rect.fromLTRB(0, 0, 100, 50), + ); + tester.apply(); + + expectSemanticsTree(''); + + final SemanticsObject node = semantics().debugSemanticsTree![0]!; + expect(node.primaryRole?.role, PrimaryRole.button); + expect( + node.primaryRole?.debugSecondaryRoles, + containsAll([Role.focusable, Role.tappable, Role.labelAndValue]), + ); + expect(tester.getSemanticsObject(0).element.tabIndex, 0); + } + + semantics().semanticsEnabled = false; + }); +} + void _testEngineAccessibilityBuilder() { final EngineAccessibilityFeaturesBuilder builder = EngineAccessibilityFeaturesBuilder(0); @@ -2681,28 +2738,62 @@ void _testFocusable() { expect(element.tabIndex, -1); domDocument.body!.append(element); + // Start managing element manager.manage(1, element); expect(element.tabIndex, 0); expect(capturedActions, isEmpty); + expect(domDocument.activeElement, isNot(element)); + // Request focus manager.changeFocus(true); pumpSemantics(); // triggers post-update callbacks + expect(domDocument.activeElement, element); expect(capturedActions, [ (1, ui.SemanticsAction.didGainAccessibilityFocus, null), ]); capturedActions.clear(); + // Give up focus manager.changeFocus(false); pumpSemantics(); // triggers post-update callbacks expect(capturedActions, [ (1, ui.SemanticsAction.didLoseAccessibilityFocus, null), ]); capturedActions.clear(); + expect(domDocument.activeElement, isNot(element)); + + // Request focus again + manager.changeFocus(true); + pumpSemantics(); // triggers post-update callbacks + expect(domDocument.activeElement, element); + expect(capturedActions, [ + (1, ui.SemanticsAction.didGainAccessibilityFocus, null), + ]); + capturedActions.clear(); + // Stop managing manager.stopManaging(); + pumpSemantics(); // triggers post-update callbacks + expect( + reason: 'Even though the element was blurred after stopManaging there ' + 'should be no notification to the framework because the framework ' + 'should already know. Otherwise, it would not have asked to stop ' + 'managing the node.', + capturedActions, + isEmpty, + ); + expect(domDocument.activeElement, isNot(element)); + + // Attempt to request focus when not managing an element. manager.changeFocus(true); pumpSemantics(); // triggers post-update callbacks - expect(capturedActions, isEmpty); + expect( + reason: 'Attempting to request focus on a node that is not managed should ' + 'not result in any notifications to the framework.', + capturedActions, + isEmpty, + ); + expect(domDocument.activeElement, isNot(element)); semantics().semanticsEnabled = false; }); From 42f3d451c21c0e003d91e49dff193673d53b41d9 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 14 Jul 2023 18:21:09 -0700 Subject: [PATCH 073/211] Move ViewConfiguration ownership to FlutterView (#43701) This makes the FlutterView object a little bit less brittle by not depending on the PlatformDispatcher so much. --- lib/ui/fixtures/ui_test.dart | 28 +--------- lib/ui/platform_dispatcher.dart | 71 ++++++++----------------- lib/ui/window.dart | 24 ++++++--- lib/ui/window/platform_configuration.cc | 1 + testing/dart/window_test.dart | 6 +++ 5 files changed, 46 insertions(+), 84 deletions(-) diff --git a/lib/ui/fixtures/ui_test.dart b/lib/ui/fixtures/ui_test.dart index 09caf203097dd..0aff1775688b7 100644 --- a/lib/ui/fixtures/ui_test.dart +++ b/lib/ui/fixtures/ui_test.dart @@ -539,33 +539,7 @@ void hooksTests() async { }); await test('PlatformDispatcher.view getter returns view with provided ID', () { - const int viewId = 123456789; - _callHook( - '_updateWindowMetrics', - 21, - viewId, // window Id - 1.0, // devicePixelRatio - 800.0, // width - 600.0, // height - 50.0, // paddingTop - 0.0, // paddingRight - 40.0, // paddingBottom - 0.0, // paddingLeft - 0.0, // insetTop - 0.0, // insetRight - 0.0, // insetBottom - 0.0, // insetLeft - 0.0, // systemGestureInsetTop - 0.0, // systemGestureInsetRight - 0.0, // systemGestureInsetBottom - 0.0, // systemGestureInsetLeft - 22.0, // physicalTouchSlop - [], // display features bounds - [], // display features types - [], // display features states - 0, // Display ID - ); - + const int viewId = 0; expectEquals(PlatformDispatcher.instance.view(id: viewId)?.viewId, viewId); }); diff --git a/lib/ui/platform_dispatcher.dart b/lib/ui/platform_dispatcher.dart index 47eb65cab3363..d529fac09e1d7 100644 --- a/lib/ui/platform_dispatcher.dart +++ b/lib/ui/platform_dispatcher.dart @@ -66,6 +66,14 @@ typedef ErrorCallback = bool Function(Object exception, StackTrace stackTrace); // A gesture setting value that indicates it has not been set by the engine. const double _kUnsetGestureSetting = -1.0; +// The view ID of PlatformDispatcher.implicitView. This is an +// implementation detail that may change at any time. Apps +// should always use PlatformDispatcher.implicitView to determine +// the current implicit view, if any. +// +// Keep this in sync with kImplicitViewId in window/platform_configuration.cc. +const int _kImplicitViewId = 0; + // A message channel to receive KeyData from the platform. // // See embedder.cc::kFlutterKeyDataChannel for more information. @@ -185,9 +193,6 @@ class PlatformDispatcher { /// otherwise. FlutterView? view({required int id}) => _views[id]; - // A map of opaque platform view identifiers to view configurations. - final Map _viewConfigurations = {}; - /// The [FlutterView] provided by the engine if the platform is unable to /// create windows, or, for backwards compatibility. /// @@ -213,7 +218,7 @@ class PlatformDispatcher { /// * [View.of], for accessing the current view. /// * [PlatformDispatcher.views] for a list of all [FlutterView]s provided /// by the platform. - FlutterView? get implicitView => _implicitViewEnabled() ? _views[0] : null; + FlutterView? get implicitView => _implicitViewEnabled() ? _views[_kImplicitViewId] : null; @Native(symbol: 'PlatformConfigurationNativeApi::ImplicitViewEnabled') external static bool _implicitViewEnabled(); @@ -281,13 +286,7 @@ class PlatformDispatcher { List displayFeaturesState, int displayId, ) { - final _ViewConfiguration previousConfiguration = - _viewConfigurations[id] ?? const _ViewConfiguration(); - if (!_views.containsKey(id)) { - _views[id] = FlutterView._(id, this); - } - _viewConfigurations[id] = previousConfiguration.copyWith( - view: _views[id], + final _ViewConfiguration viewConfiguration = _ViewConfiguration( devicePixelRatio: devicePixelRatio, geometry: Rect.fromLTWH(0.0, 0.0, width, height), viewPadding: ViewPadding._( @@ -314,7 +313,6 @@ class PlatformDispatcher { bottom: math.max(0.0, systemGestureInsetBottom), left: math.max(0.0, systemGestureInsetLeft), ), - // -1 is used as a sentinel for an undefined touch slop gestureSettings: GestureSettings( physicalTouchSlop: physicalTouchSlop == _kUnsetGestureSetting ? null : physicalTouchSlop, ), @@ -326,6 +324,17 @@ class PlatformDispatcher { ), displayId: displayId, ); + + final FlutterView? view = _views[id]; + if (id == _kImplicitViewId && view == null) { + // TODO(goderbauer): Remove the implicit creation of the implicit view + // when we have an addView API and the implicit view is added via that. + _views[id] = FlutterView._(id, this, viewConfiguration); + } else { + assert(view != null); + view!._viewConfiguration = viewConfiguration; + } + _invoke(onMetricsChanged, _onMetricsChangedZone); } @@ -1362,10 +1371,8 @@ class _PlatformConfiguration { /// An immutable view configuration. class _ViewConfiguration { const _ViewConfiguration({ - this.view, this.devicePixelRatio = 1.0, this.geometry = Rect.zero, - this.visible = false, this.viewInsets = ViewPadding.zero, this.viewPadding = ViewPadding.zero, this.systemGestureInsets = ViewPadding.zero, @@ -1375,37 +1382,6 @@ class _ViewConfiguration { this.displayId = 0, }); - /// Copy this configuration with some fields replaced. - _ViewConfiguration copyWith({ - FlutterView? view, - double? devicePixelRatio, - Rect? geometry, - bool? visible, - ViewPadding? viewInsets, - ViewPadding? viewPadding, - ViewPadding? systemGestureInsets, - ViewPadding? padding, - GestureSettings? gestureSettings, - List? displayFeatures, - int? displayId, - }) { - return _ViewConfiguration( - view: view ?? this.view, - devicePixelRatio: devicePixelRatio ?? this.devicePixelRatio, - geometry: geometry ?? this.geometry, - visible: visible ?? this.visible, - viewInsets: viewInsets ?? this.viewInsets, - viewPadding: viewPadding ?? this.viewPadding, - systemGestureInsets: systemGestureInsets ?? this.systemGestureInsets, - padding: padding ?? this.padding, - gestureSettings: gestureSettings ?? this.gestureSettings, - displayFeatures: displayFeatures ?? this.displayFeatures, - displayId: displayId ?? this.displayId, - ); - } - - final FlutterView? view; - /// The identifier for a display for this view, in /// [PlatformDispatcher._displays]. final int displayId; @@ -1417,9 +1393,6 @@ class _ViewConfiguration { /// window, in logical pixels. final Rect geometry; - /// Whether or not the view is currently visible on the screen. - final bool visible; - /// The number of physical pixels on each side of the display rectangle into /// which the view can render, but over which the operating system will likely /// place system UI, such as the keyboard, that fully obscures any content. @@ -1488,7 +1461,7 @@ class _ViewConfiguration { @override String toString() { - return '$runtimeType[view: $view, geometry: $geometry]'; + return '$runtimeType[geometry: $geometry]'; } } diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 321e1a792aa9f..63b7f74b8b5a7 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -86,7 +86,7 @@ class Display { /// that in the [padding], which is always safe to use for such /// calculations. class FlutterView { - FlutterView._(this.viewId, this.platformDispatcher); + FlutterView._(this.viewId, this.platformDispatcher, this._viewConfiguration); /// The opaque ID for this view. final int viewId; @@ -96,10 +96,8 @@ class FlutterView { final PlatformDispatcher platformDispatcher; /// The configuration of this view. - _ViewConfiguration get _viewConfiguration { - assert(platformDispatcher._viewConfigurations.containsKey(viewId)); - return platformDispatcher._viewConfigurations[viewId]!; - } + // TODO(goderbauer): remove ignore when https://github.com/dart-lang/linter/issues/4562 is fixed. + _ViewConfiguration _viewConfiguration; // ignore: prefer_final_fields /// The [Display] this view is drawn in. Display get display { @@ -373,6 +371,9 @@ class FlutterView { @Native)>(symbol: 'PlatformConfigurationNativeApi::UpdateSemantics') external static void _updateSemantics(_NativeSemanticsUpdate update); + + @override + String toString() => 'FlutterView(id: $viewId)'; } /// Deprecated. Will be removed in a future version of Flutter. @@ -405,8 +406,15 @@ class SingletonFlutterWindow extends FlutterView { 'Deprecated to prepare for the upcoming multi-window support. ' 'This feature was deprecated after v3.7.0-32.0.pre.' ) - SingletonFlutterWindow._(super.windowId, super.platformDispatcher) - : super._(); + SingletonFlutterWindow._() : super._( + _kImplicitViewId, + PlatformDispatcher.instance, + const _ViewConfiguration(), + ); + + // Gets its configuration from the FlutterView with the same ID if it exists. + @override + _ViewConfiguration get _viewConfiguration => platformDispatcher._views[viewId]?._viewConfiguration ?? super._viewConfiguration; /// A callback that is invoked whenever the [devicePixelRatio], /// [physicalSize], [padding], [viewInsets], [PlatformDispatcher.views], or @@ -1016,7 +1024,7 @@ enum Brightness { 'Deprecated to prepare for the upcoming multi-window support. ' 'This feature was deprecated after v3.7.0-32.0.pre.' ) -final SingletonFlutterWindow window = SingletonFlutterWindow._(0, PlatformDispatcher.instance); +final SingletonFlutterWindow window = SingletonFlutterWindow._(); /// Additional data available on each flutter frame. class FrameData { diff --git a/lib/ui/window/platform_configuration.cc b/lib/ui/window/platform_configuration.cc index fe6ff03d62b69..8d11b747fd53b 100644 --- a/lib/ui/window/platform_configuration.cc +++ b/lib/ui/window/platform_configuration.cc @@ -22,6 +22,7 @@ namespace flutter { namespace { +// Keep this in sync with _kImplicitViewId in ../platform_dispatcher.dart. constexpr int kImplicitViewId = 0; Dart_Handle ToByteData(const fml::Mapping& buffer) { diff --git a/testing/dart/window_test.dart b/testing/dart/window_test.dart index f51c6501cf29c..a0c98c441ea3e 100644 --- a/testing/dart/window_test.dart +++ b/testing/dart/window_test.dart @@ -89,4 +89,10 @@ void main() { expect(display.refreshRate, 60); expect(display.size, implicitView.physicalSize); }); + + test('FlutterView.toString contains the viewId', () { + final FlutterView flutterView = PlatformDispatcher.instance.implicitView!; + expect(flutterView.viewId, 0); + expect(flutterView.toString(), 'FlutterView(id: 0)'); + }); } From e8cf1d55598868c37027f15dab4f5a6ac9284307 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Jul 2023 21:43:17 -0400 Subject: [PATCH 074/211] Roll Skia from 271b2b6d5aaa to 975eb1250431 (2 revisions) (#43712) https://skia.googlesource.com/skia.git/+log/271b2b6d5aaa..975eb1250431 2023-07-15 johnstiles@google.com Fix error on tree about unused backbuffer variable. 2023-07-14 nigeltao@google.com SkWuffsCodec: allow Wuffs versions >= v0.3.1 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index afc8f7ee64239..063a205f5a1df 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '271b2b6d5aaa62e39eba9b526292782842236186', + 'skia_revision': '975eb12504312c00cddad640dcbc01ce41a71dd7', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d552e8c3fe870..a03f09b3546a0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5cc56e9dd46382c8e24c6b3a20b7b3b9 +Signature: c25e6a306f4ed0359e6b0ed93e35dbfb ==================================================================================================== LIBRARY: etc1 From a1edc6bcf0fbca8bf2e5ffc164343b6feb0a998a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 00:52:04 -0400 Subject: [PATCH 075/211] Roll Fuchsia Mac SDK from Z-1lzZAOYHvVrdjQ8... to oeYLDNShuD-FTgGwU... (#43714) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 063a205f5a1df..8f32ca7a3e9a9 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'Z-1lzZAOYHvVrdjQ8BvAyXjjPHDVMAdLAAxqb4caxGQC' + 'version': 'oeYLDNShuD-FTgGwUslapBKTerxUBlDZtVqgt6L8pIYC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From bec686ba6151b7e301c4196c3db2554726d680e3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 01:42:14 -0400 Subject: [PATCH 076/211] Roll Dart SDK from d1fcadf22aad to 671bbdf6c542 (2 revisions) (#43715) https://dart.googlesource.com/sdk.git/+log/d1fcadf22aad..671bbdf6c542 2023-07-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-314.0.dev 2023-07-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-313.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8f32ca7a3e9a9..747f2a60f981b 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'd1fcadf22aad99ab24ef432eada2517b4ccf9696', + 'dart_revision': '671bbdf6c542d9983d525eb187c093be6684f544', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 3e3af2eb51d08..f2977690a3d4a 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: a8f08398e316fc3484d369e3d45c6192 +Signature: 020a62eaf6a32a473be05d6959fde453 ==================================================================================================== LIBRARY: angle @@ -41948,6 +41948,7 @@ ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_uns ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/closure.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/date_patch_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_array.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_unsafe_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_string.dart + ../../../third_party/dart/LICENSE @@ -41985,6 +41986,7 @@ FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_unsaf FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/closure.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/date_patch_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_array.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_unsafe_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_string.dart From d9667d45a3f5e4f928bee6acc2813ca6fb2e1e40 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 01:47:08 -0400 Subject: [PATCH 077/211] Roll Skia from 975eb1250431 to 6fb535aede4e (1 revision) (#43716) https://skia.googlesource.com/skia.git/+log/975eb1250431..6fb535aede4e 2023-07-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from fcbe6bbcf4a8 to 831910dbe1f3 (5 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 747f2a60f981b..550d6df8fe4ee 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '975eb12504312c00cddad640dcbc01ce41a71dd7', + 'skia_revision': '6fb535aede4e570e97fd0623d57e10c0f9af948b', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From fc5b32b955577428e9c4eec9dc33c30b7ffe0fc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rulong=20Chen=EF=BC=88=E9=99=88=E6=B1=9D=E9=BE=99=EF=BC=89?= <26625149+0xZOne@users.noreply.github.com> Date: Sat, 15 Jul 2023 16:44:04 +0800 Subject: [PATCH 078/211] Optimizing performance by avoiding multiple GC operations caused by multiple surface destruction notifications (#43587) Fixes: https://github.com/flutter/flutter/issues/130379 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- .../engine/renderer/FlutterRenderer.java | 23 ++++++++++--------- .../engine/renderer/FlutterRendererTest.java | 16 +++++++++++++ 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java index e9559b4383b08..1eac92546a659 100644 --- a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java +++ b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java @@ -370,19 +370,20 @@ public void surfaceChanged(int width, int height) { * android.view.TextureView.SurfaceTextureListener} */ public void stopRenderingToSurface() { - flutterJNI.onSurfaceDestroyed(); - - surface = null; + if (surface != null) { + flutterJNI.onSurfaceDestroyed(); + + // TODO(mattcarroll): the source of truth for this call should be FlutterJNI, which is where + // the call to onFlutterUiDisplayed() comes from. However, no such native callback exists yet, + // so until the engine and FlutterJNI are configured to call us back when rendering stops, + // we will manually monitor that change here. + if (isDisplayingFlutterUi) { + flutterUiDisplayListener.onFlutterUiNoLongerDisplayed(); + } - // TODO(mattcarroll): the source of truth for this call should be FlutterJNI, which is where - // the call to onFlutterUiDisplayed() comes from. However, no such native callback exists yet, - // so until the engine and FlutterJNI are configured to call us back when rendering stops, - // we will manually monitor that change here. - if (isDisplayingFlutterUi) { - flutterUiDisplayListener.onFlutterUiNoLongerDisplayed(); + isDisplayingFlutterUi = false; + surface = null; } - - isDisplayingFlutterUi = false; } /** diff --git a/shell/platform/android/test/io/flutter/embedding/engine/renderer/FlutterRendererTest.java b/shell/platform/android/test/io/flutter/embedding/engine/renderer/FlutterRendererTest.java index e7b0d0daa1c03..b1f4d3f76fd5f 100644 --- a/shell/platform/android/test/io/flutter/embedding/engine/renderer/FlutterRendererTest.java +++ b/shell/platform/android/test/io/flutter/embedding/engine/renderer/FlutterRendererTest.java @@ -393,4 +393,20 @@ public void onTrimMemory(int level) { // Verify behavior under test. assertEquals(1, invocationCount.get()); } + + @Test + public void itDoesDispatchSurfaceDestructionNotificationOnlyOnce() { + // Setup the test. + FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI); + + flutterRenderer.startRenderingToSurface(fakeSurface, /*keepCurrentSurface=*/ false); + + // Execute the behavior under test. + // Simulate calling |FlutterRenderer#stopRenderingToSurface| twice with different code paths. + flutterRenderer.stopRenderingToSurface(); + flutterRenderer.stopRenderingToSurface(); + + // Verify behavior under test. + verify(fakeFlutterJNI, times(1)).onSurfaceDestroyed(); + } } From a0fb644288025c8e539a651b1a9fc8a42a31036e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 08:24:59 -0400 Subject: [PATCH 079/211] Roll Dart SDK from 671bbdf6c542 to 0bd185c282d2 (1 revision) (#43719) https://dart.googlesource.com/sdk.git/+log/671bbdf6c542..0bd185c282d2 2023-07-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-315.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 550d6df8fe4ee..7672ee8566484 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '671bbdf6c542d9983d525eb187c093be6684f544', + 'dart_revision': '0bd185c282d2e2bd0d2069c88458ae366467a8b7', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From f1344071d5b08987b9bc7e8262d0cd88214c1376 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 09:33:12 -0400 Subject: [PATCH 080/211] Roll Clang from 6d667d4b261e to ebd0b8a0472b (#43673) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/clang-flutter-engine Please CC rmistry@google.com,zanderso@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Clang: https://bugs.fuchsia.dev/p/fuchsia/issues/list?q=component%3AToolchain To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 7672ee8566484..22ec5a87029fc 100644 --- a/DEPS +++ b/DEPS @@ -39,7 +39,7 @@ vars = { # The list of revisions for these tools comes from Fuchsia, here: # https://fuchsia.googlesource.com/integration/+/HEAD/toolchain # If there are problems with the toolchain, contact fuchsia-toolchain@. - 'clang_version': 'git_revision:6d667d4b261e81f325756fdfd5bb43b3b3d2451d', + 'clang_version': 'git_revision:ebd0b8a0472b865b7eb6e1a32af97ae31d829033', # The goma version and the clang version can be tightly coupled. If goma # stops working on a clang roll, this may need to be updated using the value From 066dd6bad4649b67eaa5e5dad3e883827f552e4b Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Sat, 15 Jul 2023 07:14:10 -0700 Subject: [PATCH 081/211] Revert "Reland "add non-rendering operation culling to DisplayListBuilder" (#41463)" (#43721) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts flutter/engine#43698 A framework tree test started failing on the engine roll with this PR: https://github.com/flutter/flutter/pull/130643 The test failure is in https://ci.chromium.org/ui/p/flutter/builders/prod/Linux_android%20hybrid_android_views_integration_test/8517/overview ``` [2023-07-14 19:33:21.980926] [STDOUT] stdout: [ +6 ms] I/PlatformViewsController( 9988): Using hybrid composition for platform view: 5 [2023-07-14 19:33:22.767236] [STDOUT] stdout: [ +786 ms] 00:19 +4 -1: Flutter surface with hybrid composition Uses FlutterImageView when Android view is on the screen [E] [2023-07-14 19:33:22.767765] [STDOUT] stdout: [ ] Expected: '|-FlutterView\n' [2023-07-14 19:33:22.767815] [STDOUT] stdout: [ ] ' |-FlutterSurfaceView\n' [2023-07-14 19:33:22.767924] [STDOUT] stdout: [ ] ' |-FlutterImageView\n' [2023-07-14 19:33:22.768084] [STDOUT] stdout: [ ] ' |-ViewGroup\n' [2023-07-14 19:33:22.768162] [STDOUT] stdout: [ ] ' |-ViewGroup\n' [2023-07-14 19:33:22.768800] [STDOUT] stdout: [ ] ' |-FlutterImageView\n' [2023-07-14 19:33:22.768835] [STDOUT] stdout: [ ] '' [2023-07-14 19:33:22.768853] [STDOUT] stdout: [ ] Actual: '|-FlutterView\n' [2023-07-14 19:33:22.768882] [STDOUT] stdout: [ ] ' |-FlutterSurfaceView\n' [2023-07-14 19:33:22.768900] [STDOUT] stdout: [ ] ' |-FlutterImageView\n' [2023-07-14 19:33:22.768917] [STDOUT] stdout: [ ] ' |-ViewGroup\n' [2023-07-14 19:33:22.768956] [STDOUT] stdout: [ ] ' |-ViewGroup\n' [2023-07-14 19:33:22.769119] [STDOUT] stdout: [ ] '' [2023-07-14 19:33:22.769156] [STDOUT] stdout: [ ] Which: is different. Both strings start the same, but the actual value is missing the following trailing characters: |-Flutte ... [2023-07-14 19:33:22.779280] [STDOUT] stdout: [ +10 ms] package:matcher/src/expect/expect.dart 149:31 fail [2023-07-14 19:33:22.779326] [STDOUT] stdout: [ ] package:matcher/src/expect/expect.dart 144:3 _expect [2023-07-14 19:33:22.780315] [STDOUT] stdout: [ ] package:matcher/src/expect/expect.dart 56:3 expect [2023-07-14 19:33:22.780345] [STDOUT] stdout: [ ] test_driver/main_test.dart 124:7 main.. [2023-07-14 19:33:22.780356] [STDOUT] stdout: [ ] ===== asynchronous gap =========================== [2023-07-14 19:33:22.780365] [STDOUT] stdout: [ ] package:test_api/src/backend/declarer.dart 215:9 Declarer.test.. [2023-07-14 19:33:22.780376] [STDOUT] stdout: [ ] ===== asynchronous gap =========================== [2023-07-14 19:33:22.780385] [STDOUT] stdout: [ ] package:test_api/src/backend/declarer.dart 213:7 Declarer.test. [2023-07-14 19:33:22.780395] [STDOUT] stdout: [ ] ===== asynchronous gap =========================== [2023-07-14 19:33:22.780405] [STDOUT] stdout: [ ] package:test_api/src/backend/invoker.dart 258:9 Invoker._waitForOutstandingCallbacks. [2023-07-14 19:33:22.780415] [STDOUT] stdout: [ ] 00:19 +4 -1: Flutter surface with hybrid composition (tearDownAll) [2023-07-14 19:33:22.907295] [STDOUT] stdout: [ +126 ms] 00:19 +4 -1: (tearDownAll) [2023-07-14 19:33:22.947855] [STDOUT] stdout: [ +41 ms] 00:19 +4 -1: Some tests failed. ``` This change in that roll looks like it may be related. --- .../benchmarking/dl_complexity_unittests.cc | 2 +- display_list/display_list.cc | 5 +- display_list/display_list.h | 16 - display_list/display_list_unittests.cc | 160 ----- display_list/dl_builder.cc | 627 +++++------------- display_list/dl_builder.h | 70 +- display_list/dl_color.h | 32 +- display_list/dl_paint.h | 1 - .../testing/dl_rendering_unittests.cc | 393 +---------- display_list/testing/dl_test_snippets.cc | 2 +- display_list/testing/dl_test_snippets.h | 6 +- display_list/utils/dl_matrix_clip_tracker.h | 4 +- flow/diff_context_unittests.cc | 2 +- flow/layers/container_layer_unittests.cc | 12 +- flow/layers/display_list_layer_unittests.cc | 19 +- flow/layers/opacity_layer_unittests.cc | 4 +- flow/testing/diff_context_test.cc | 2 +- flow/testing/diff_context_test.h | 3 +- impeller/display_list/dl_unittests.cc | 16 +- shell/common/dl_op_spy_unittests.cc | 202 ++---- 20 files changed, 311 insertions(+), 1267 deletions(-) diff --git a/display_list/benchmarking/dl_complexity_unittests.cc b/display_list/benchmarking/dl_complexity_unittests.cc index eee77ac9bdf55..4ec6111485d88 100644 --- a/display_list/benchmarking/dl_complexity_unittests.cc +++ b/display_list/benchmarking/dl_complexity_unittests.cc @@ -423,7 +423,7 @@ TEST(DisplayListComplexity, DrawAtlas) { std::vector xforms; for (int i = 0; i < 10; i++) { rects.push_back(SkRect::MakeXYWH(0, 0, 10, 10)); - xforms.push_back(SkRSXform::Make(1, 0, 0, 0)); + xforms.push_back(SkRSXform::Make(0, 0, 0, 0)); } DisplayListBuilder builder; diff --git a/display_list/display_list.cc b/display_list/display_list.cc index e06bcf246d3d4..378f86804f260 100644 --- a/display_list/display_list.cc +++ b/display_list/display_list.cc @@ -22,8 +22,7 @@ DisplayList::DisplayList() unique_id_(0), bounds_({0, 0, 0, 0}), can_apply_group_opacity_(true), - is_ui_thread_safe_(true), - modifies_transparent_black_(false) {} + is_ui_thread_safe_(true) {} DisplayList::DisplayList(DisplayListStorage&& storage, size_t byte_count, @@ -33,7 +32,6 @@ DisplayList::DisplayList(DisplayListStorage&& storage, const SkRect& bounds, bool can_apply_group_opacity, bool is_ui_thread_safe, - bool modifies_transparent_black, sk_sp rtree) : storage_(std::move(storage)), byte_count_(byte_count), @@ -44,7 +42,6 @@ DisplayList::DisplayList(DisplayListStorage&& storage, bounds_(bounds), can_apply_group_opacity_(can_apply_group_opacity), is_ui_thread_safe_(is_ui_thread_safe), - modifies_transparent_black_(modifies_transparent_black), rtree_(std::move(rtree)) {} DisplayList::~DisplayList() { diff --git a/display_list/display_list.h b/display_list/display_list.h index 668a247d5596f..4a6f339fdea0d 100644 --- a/display_list/display_list.h +++ b/display_list/display_list.h @@ -265,19 +265,6 @@ class DisplayList : public SkRefCnt { bool can_apply_group_opacity() const { return can_apply_group_opacity_; } bool isUIThreadSafe() const { return is_ui_thread_safe_; } - /// @brief Indicates if there are any rendering operations in this - /// DisplayList that will modify a surface of transparent black - /// pixels. - /// - /// This condition can be used to determine whether to create a cleared - /// surface, render a DisplayList into it, and then composite the - /// result into a scene. It is not uncommon for code in the engine to - /// come across such degenerate DisplayList objects when slicing up a - /// frame between platform views. - bool modifies_transparent_black() const { - return modifies_transparent_black_; - } - private: DisplayList(DisplayListStorage&& ptr, size_t byte_count, @@ -287,7 +274,6 @@ class DisplayList : public SkRefCnt { const SkRect& bounds, bool can_apply_group_opacity, bool is_ui_thread_safe, - bool modifies_transparent_black, sk_sp rtree); static uint32_t next_unique_id(); @@ -306,8 +292,6 @@ class DisplayList : public SkRefCnt { const bool can_apply_group_opacity_; const bool is_ui_thread_safe_; - const bool modifies_transparent_black_; - const sk_sp rtree_; void Dispatch(DlOpReceiver& ctx, diff --git a/display_list/display_list_unittests.cc b/display_list/display_list_unittests.cc index 9bead1ee8ff76..4c16f6e4438dc 100644 --- a/display_list/display_list_unittests.cc +++ b/display_list/display_list_unittests.cc @@ -24,7 +24,6 @@ #include "third_party/skia/include/core/SkBBHFactory.h" #include "third_party/skia/include/core/SkColorFilter.h" #include "third_party/skia/include/core/SkPictureRecorder.h" -#include "third_party/skia/include/core/SkRSXform.h" #include "third_party/skia/include/core/SkSurface.h" namespace flutter { @@ -3019,164 +3018,5 @@ TEST_F(DisplayListTest, DrawUnorderedRoundRectPathCCW) { check_inverted_bounds(renderer, "DrawRoundRectPath Counter-Clockwise"); } -TEST_F(DisplayListTest, NopOperationsOmittedFromRecords) { - auto run_tests = [](const std::string& name, - void init(DisplayListBuilder & builder, DlPaint & paint), - uint32_t expected_op_count = 0u) { - auto run_one_test = - [init](const std::string& name, - void build(DisplayListBuilder & builder, DlPaint & paint), - uint32_t expected_op_count = 0u) { - DisplayListBuilder builder; - DlPaint paint; - init(builder, paint); - build(builder, paint); - auto list = builder.Build(); - if (list->op_count() != expected_op_count) { - FML_LOG(ERROR) << *list; - } - ASSERT_EQ(list->op_count(), expected_op_count) << name; - ASSERT_TRUE(list->bounds().isEmpty()) << name; - }; - run_one_test( - name + " DrawColor", - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.DrawColor(paint.getColor(), paint.getBlendMode()); - }, - expected_op_count); - run_one_test( - name + " DrawPaint", - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.DrawPaint(paint); - }, - expected_op_count); - run_one_test( - name + " DrawRect", - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.DrawRect({10, 10, 20, 20}, paint); - }, - expected_op_count); - run_one_test( - name + " Other Draw Ops", - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.DrawLine({10, 10}, {20, 20}, paint); - builder.DrawOval({10, 10, 20, 20}, paint); - builder.DrawCircle({50, 50}, 20, paint); - builder.DrawRRect(SkRRect::MakeRectXY({10, 10, 20, 20}, 5, 5), paint); - builder.DrawDRRect(SkRRect::MakeRectXY({5, 5, 100, 100}, 5, 5), - SkRRect::MakeRectXY({10, 10, 20, 20}, 5, 5), - paint); - builder.DrawPath(kTestPath1, paint); - builder.DrawArc({10, 10, 20, 20}, 45, 90, true, paint); - SkPoint pts[] = {{10, 10}, {20, 20}}; - builder.DrawPoints(PointMode::kLines, 2, pts, paint); - builder.DrawVertices(TestVertices1, DlBlendMode::kSrcOver, paint); - builder.DrawImage(TestImage1, {10, 10}, DlImageSampling::kLinear, - &paint); - builder.DrawImageRect(TestImage1, SkRect{0.0f, 0.0f, 10.0f, 10.0f}, - SkRect{10.0f, 10.0f, 25.0f, 25.0f}, - DlImageSampling::kLinear, &paint); - builder.DrawImageNine(TestImage1, {10, 10, 20, 20}, - {10, 10, 100, 100}, DlFilterMode::kLinear, - &paint); - SkRSXform xforms[] = {{1, 0, 10, 10}, {0, 1, 10, 10}}; - SkRect rects[] = {{10, 10, 20, 20}, {10, 20, 30, 20}}; - builder.DrawAtlas(TestImage1, xforms, rects, nullptr, 2, - DlBlendMode::kSrcOver, DlImageSampling::kLinear, - nullptr, &paint); - builder.DrawTextBlob(TestBlob1, 10, 10, paint); - - // Dst mode eliminates most rendering ops except for - // the following two, so we'll prune those manually... - if (paint.getBlendMode() != DlBlendMode::kDst) { - builder.DrawDisplayList(TestDisplayList1, paint.getOpacity()); - builder.DrawShadow(kTestPath1, paint.getColor(), 1, true, 1); - } - }, - expected_op_count); - run_one_test( - name + " SaveLayer", - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.SaveLayer(nullptr, &paint, nullptr); - builder.DrawRect({10, 10, 20, 20}, DlPaint()); - builder.Restore(); - }, - expected_op_count); - run_one_test( - name + " inside Save", - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.Save(); - builder.DrawRect({10, 10, 20, 20}, paint); - builder.Restore(); - }, - expected_op_count); - }; - run_tests("transparent color", // - [](DisplayListBuilder& builder, DlPaint& paint) { - paint.setColor(DlColor::kTransparent()); - }); - run_tests("0 alpha", // - [](DisplayListBuilder& builder, DlPaint& paint) { - // The transparent test above already tested transparent - // black (all 0s), we set White color here so we can test - // the case of all 1s with a 0 alpha - paint.setColor(DlColor::kWhite()); - paint.setAlpha(0); - }); - run_tests("BlendMode::kDst", // - [](DisplayListBuilder& builder, DlPaint& paint) { - paint.setBlendMode(DlBlendMode::kDst); - }); - run_tests("Empty rect clip", // - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.ClipRect(SkRect::MakeEmpty(), ClipOp::kIntersect, false); - }); - run_tests("Empty rrect clip", // - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.ClipRRect(SkRRect::MakeEmpty(), ClipOp::kIntersect, - false); - }); - run_tests("Empty path clip", // - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.ClipPath(SkPath(), ClipOp::kIntersect, false); - }); - run_tests("Transparent SaveLayer", // - [](DisplayListBuilder& builder, DlPaint& paint) { - DlPaint save_paint; - save_paint.setColor(DlColor::kTransparent()); - builder.SaveLayer(nullptr, &save_paint); - }); - run_tests("0 alpha SaveLayer", // - [](DisplayListBuilder& builder, DlPaint& paint) { - DlPaint save_paint; - // The transparent test above already tested transparent - // black (all 0s), we set White color here so we can test - // the case of all 1s with a 0 alpha - save_paint.setColor(DlColor::kWhite()); - save_paint.setAlpha(0); - builder.SaveLayer(nullptr, &save_paint); - }); - run_tests("Dst blended SaveLayer", // - [](DisplayListBuilder& builder, DlPaint& paint) { - DlPaint save_paint; - save_paint.setBlendMode(DlBlendMode::kDst); - builder.SaveLayer(nullptr, &save_paint); - }); - run_tests( - "Nop inside SaveLayer", - [](DisplayListBuilder& builder, DlPaint& paint) { - builder.SaveLayer(nullptr, nullptr); - paint.setBlendMode(DlBlendMode::kDst); - }, - 2u); - run_tests("DrawImage inside Culled SaveLayer", // - [](DisplayListBuilder& builder, DlPaint& paint) { - DlPaint save_paint; - save_paint.setColor(DlColor::kTransparent()); - builder.SaveLayer(nullptr, &save_paint); - builder.DrawImage(TestImage1, {10, 10}, DlImageSampling::kLinear); - }); -} - } // namespace testing } // namespace flutter diff --git a/display_list/dl_builder.cc b/display_list/dl_builder.cc index 266a8609ec5ed..ea2a132580780 100644 --- a/display_list/dl_builder.cc +++ b/display_list/dl_builder.cc @@ -6,12 +6,10 @@ #include "flutter/display_list/display_list.h" #include "flutter/display_list/dl_blend_mode.h" -#include "flutter/display_list/dl_op_flags.h" #include "flutter/display_list/dl_op_records.h" #include "flutter/display_list/effects/dl_color_source.h" #include "flutter/display_list/utils/dl_bounds_accumulator.h" #include "fml/logging.h" -#include "third_party/skia/include/core/SkScalar.h" namespace flutter { @@ -72,22 +70,20 @@ sk_sp DisplayListBuilder::Build() { int count = render_op_count_; size_t nested_bytes = nested_bytes_; int nested_count = nested_op_count_; - bool compatible = current_layer_->is_group_opacity_compatible(); + bool compatible = layer_stack_.back().is_group_opacity_compatible(); bool is_safe = is_ui_thread_safe_; - bool affects_transparency = current_layer_->affects_transparent_layer(); used_ = allocated_ = render_op_count_ = op_index_ = 0; nested_bytes_ = nested_op_count_ = 0; - is_ui_thread_safe_ = true; storage_.realloc(bytes); layer_stack_.pop_back(); layer_stack_.emplace_back(); tracker_.reset(); current_ = DlPaint(); - return sk_sp(new DisplayList( - std::move(storage_), bytes, count, nested_bytes, nested_count, bounds(), - compatible, is_safe, affects_transparency, rtree())); + return sk_sp( + new DisplayList(std::move(storage_), bytes, count, nested_bytes, + nested_count, bounds(), compatible, is_safe, rtree())); } DisplayListBuilder::DisplayListBuilder(const SkRect& cull_rect, @@ -393,11 +389,9 @@ void DisplayListBuilder::checkForDeferredSave() { } void DisplayListBuilder::Save() { - bool is_nop = current_layer_->is_nop_; layer_stack_.emplace_back(); current_layer_ = &layer_stack_.back(); current_layer_->has_deferred_save_op_ = true; - current_layer_->is_nop_ = is_nop; tracker_.save(); accumulator()->save(); } @@ -484,16 +478,18 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, const SaveLayerOptions in_options, const DlImageFilter* backdrop) { SaveLayerOptions options = in_options.without_optimizations(); - DisplayListAttributeFlags flags = options.renders_with_attributes() - ? kSaveLayerWithPaintFlags - : kSaveLayerFlags; - OpResult result = PaintResult(current_, flags); - if (result == OpResult::kNoEffect) { - save(); - current_layer_->is_nop_ = true; - return; - } size_t save_layer_offset = used_; + if (backdrop) { + bounds // + ? Push(0, 1, options, *bounds, backdrop) + : Push(0, 1, options, backdrop); + } else { + bounds // + ? Push(0, 1, options, *bounds) + : Push(0, 1, options); + } + CheckLayerOpacityCompatibility(options.renders_with_attributes()); + if (options.renders_with_attributes()) { // The actual flood of the outer layer clip will occur after the // (eventual) corresponding restore is called, but rather than @@ -504,41 +500,17 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, // with its full bounds and the right op_index so that it doesn't // get culled during rendering. if (!paint_nops_on_transparency()) { - // We will fill the clip of the outer layer when we restore. - // Accumulate should always return true here because if the - // clip was empty then that would have been caught up above - // when we tested the PaintResult. - [[maybe_unused]] bool unclipped = AccumulateUnbounded(); - FML_DCHECK(unclipped); + // We will fill the clip of the outer layer when we restore + AccumulateUnbounded(); } - CheckLayerOpacityCompatibility(true); layer_stack_.emplace_back(save_layer_offset, true, current_.getImageFilter()); } else { - CheckLayerOpacityCompatibility(false); layer_stack_.emplace_back(save_layer_offset, true, nullptr); } - current_layer_ = &layer_stack_.back(); - tracker_.save(); accumulator()->save(); - - if (backdrop) { - // A backdrop will affect up to the entire surface, bounded by the clip - // Accumulate should always return true here because if the - // clip was empty then that would have been caught up above - // when we tested the PaintResult. - [[maybe_unused]] bool unclipped = AccumulateUnbounded(); - FML_DCHECK(unclipped); - bounds // - ? Push(0, 1, options, *bounds, backdrop) - : Push(0, 1, options, backdrop); - } else { - bounds // - ? Push(0, 1, options, *bounds) - : Push(0, 1, options); - } - + current_layer_ = &layer_stack_.back(); if (options.renders_with_attributes()) { // |current_opacity_compatibility_| does not take an ImageFilter into // account because an individual primitive with an ImageFilter can apply @@ -549,7 +521,6 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, UpdateLayerOpacityCompatibility(false); } } - UpdateLayerResult(result); // Even though Skia claims that the bounds are only a hint, they actually // use them as the temporary layer bounds during rendering the layer, so @@ -557,6 +528,10 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, if (bounds) { tracker_.clipRect(*bounds, ClipOp::kIntersect, false); } + if (backdrop) { + // A backdrop will affect up to the entire surface, bounded by the clip + AccumulateUnbounded(); + } } void DisplayListBuilder::SaveLayer(const SkRect* bounds, const DlPaint* paint, @@ -679,11 +654,6 @@ void DisplayListBuilder::ClipRect(const SkRect& rect, if (!rect.isFinite()) { return; } - tracker_.clipRect(rect, clip_op, is_aa); - if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { - current_layer_->is_nop_ = true; - return; - } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -693,6 +663,7 @@ void DisplayListBuilder::ClipRect(const SkRect& rect, Push(0, 1, rect, is_aa); break; } + tracker_.clipRect(rect, clip_op, is_aa); } void DisplayListBuilder::ClipRRect(const SkRRect& rrect, ClipOp clip_op, @@ -700,11 +671,6 @@ void DisplayListBuilder::ClipRRect(const SkRRect& rrect, if (rrect.isRect()) { clipRect(rrect.rect(), clip_op, is_aa); } else { - tracker_.clipRRect(rrect, clip_op, is_aa); - if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { - current_layer_->is_nop_ = true; - return; - } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -714,6 +680,7 @@ void DisplayListBuilder::ClipRRect(const SkRRect& rrect, Push(0, 1, rrect, is_aa); break; } + tracker_.clipRRect(rrect, clip_op, is_aa); } } void DisplayListBuilder::ClipPath(const SkPath& path, @@ -736,11 +703,6 @@ void DisplayListBuilder::ClipPath(const SkPath& path, return; } } - tracker_.clipPath(path, clip_op, is_aa); - if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { - current_layer_->is_nop_ = true; - return; - } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -750,6 +712,7 @@ void DisplayListBuilder::ClipPath(const SkPath& path, Push(0, 1, path, is_aa); break; } + tracker_.clipPath(path, clip_op, is_aa); } bool DisplayListBuilder::QuickReject(const SkRect& bounds) const { @@ -757,36 +720,27 @@ bool DisplayListBuilder::QuickReject(const SkRect& bounds) const { } void DisplayListBuilder::drawPaint() { - OpResult result = PaintResult(current_, kDrawPaintFlags); - if (result != OpResult::kNoEffect && AccumulateUnbounded()) { - Push(0, 1); - CheckLayerOpacityCompatibility(); - UpdateLayerResult(result); - } + Push(0, 1); + CheckLayerOpacityCompatibility(); + AccumulateUnbounded(); } void DisplayListBuilder::DrawPaint(const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawPaintFlags); drawPaint(); } void DisplayListBuilder::DrawColor(DlColor color, DlBlendMode mode) { - OpResult result = PaintResult(DlPaint(color).setBlendMode(mode)); - if (result != OpResult::kNoEffect && AccumulateUnbounded()) { - Push(0, 1, color, mode); - CheckLayerOpacityCompatibility(mode); - UpdateLayerResult(result); - } + Push(0, 1, color, mode); + CheckLayerOpacityCompatibility(mode); + AccumulateUnbounded(); } void DisplayListBuilder::drawLine(const SkPoint& p0, const SkPoint& p1) { + Push(0, 1, p0, p1); + CheckLayerOpacityCompatibility(); SkRect bounds = SkRect::MakeLTRB(p0.fX, p0.fY, p1.fX, p1.fY).makeSorted(); DisplayListAttributeFlags flags = (bounds.width() > 0.0f && bounds.height() > 0.0f) ? kDrawLineFlags : kDrawHVLineFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect && AccumulateOpBounds(bounds, flags)) { - Push(0, 1, p0, p1); - CheckLayerOpacityCompatibility(); - UpdateLayerResult(result); - } + AccumulateOpBounds(bounds, flags); } void DisplayListBuilder::DrawLine(const SkPoint& p0, const SkPoint& p1, @@ -795,45 +749,29 @@ void DisplayListBuilder::DrawLine(const SkPoint& p0, drawLine(p0, p1); } void DisplayListBuilder::drawRect(const SkRect& rect) { - DisplayListAttributeFlags flags = kDrawRectFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect && - AccumulateOpBounds(rect.makeSorted(), flags)) { - Push(0, 1, rect); - CheckLayerOpacityCompatibility(); - UpdateLayerResult(result); - } + Push(0, 1, rect); + CheckLayerOpacityCompatibility(); + AccumulateOpBounds(rect.makeSorted(), kDrawRectFlags); } void DisplayListBuilder::DrawRect(const SkRect& rect, const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawRectFlags); drawRect(rect); } void DisplayListBuilder::drawOval(const SkRect& bounds) { - DisplayListAttributeFlags flags = kDrawOvalFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect && - AccumulateOpBounds(bounds.makeSorted(), flags)) { - Push(0, 1, bounds); - CheckLayerOpacityCompatibility(); - UpdateLayerResult(result); - } + Push(0, 1, bounds); + CheckLayerOpacityCompatibility(); + AccumulateOpBounds(bounds.makeSorted(), kDrawOvalFlags); } void DisplayListBuilder::DrawOval(const SkRect& bounds, const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawOvalFlags); drawOval(bounds); } void DisplayListBuilder::drawCircle(const SkPoint& center, SkScalar radius) { - DisplayListAttributeFlags flags = kDrawCircleFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect) { - SkRect bounds = SkRect::MakeLTRB(center.fX - radius, center.fY - radius, - center.fX + radius, center.fY + radius); - if (AccumulateOpBounds(bounds, flags)) { - Push(0, 1, center, radius); - CheckLayerOpacityCompatibility(); - UpdateLayerResult(result); - } - } + Push(0, 1, center, radius); + CheckLayerOpacityCompatibility(); + AccumulateOpBounds(SkRect::MakeLTRB(center.fX - radius, center.fY - radius, + center.fX + radius, center.fY + radius), + kDrawCircleFlags); } void DisplayListBuilder::DrawCircle(const SkPoint& center, SkScalar radius, @@ -847,14 +785,9 @@ void DisplayListBuilder::drawRRect(const SkRRect& rrect) { } else if (rrect.isOval()) { drawOval(rrect.rect()); } else { - DisplayListAttributeFlags flags = kDrawRRectFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect && - AccumulateOpBounds(rrect.getBounds(), flags)) { - Push(0, 1, rrect); - CheckLayerOpacityCompatibility(); - UpdateLayerResult(result); - } + Push(0, 1, rrect); + CheckLayerOpacityCompatibility(); + AccumulateOpBounds(rrect.getBounds(), kDrawRRectFlags); } } void DisplayListBuilder::DrawRRect(const SkRRect& rrect, const DlPaint& paint) { @@ -863,14 +796,9 @@ void DisplayListBuilder::DrawRRect(const SkRRect& rrect, const DlPaint& paint) { } void DisplayListBuilder::drawDRRect(const SkRRect& outer, const SkRRect& inner) { - DisplayListAttributeFlags flags = kDrawDRRectFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect && - AccumulateOpBounds(outer.getBounds(), flags)) { - Push(0, 1, outer, inner); - CheckLayerOpacityCompatibility(); - UpdateLayerResult(result); - } + Push(0, 1, outer, inner); + CheckLayerOpacityCompatibility(); + AccumulateOpBounds(outer.getBounds(), kDrawDRRectFlags); } void DisplayListBuilder::DrawDRRect(const SkRRect& outer, const SkRRect& inner, @@ -879,17 +807,12 @@ void DisplayListBuilder::DrawDRRect(const SkRRect& outer, drawDRRect(outer, inner); } void DisplayListBuilder::drawPath(const SkPath& path) { - DisplayListAttributeFlags flags = kDrawPathFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect) { - bool is_visible = path.isInverseFillType() - ? AccumulateUnbounded() - : AccumulateOpBounds(path.getBounds(), flags); - if (is_visible) { - Push(0, 1, path); - CheckLayerOpacityHairlineCompatibility(); - UpdateLayerResult(result); - } + Push(0, 1, path); + CheckLayerOpacityHairlineCompatibility(); + if (path.isInverseFillType()) { + AccumulateUnbounded(); + } else { + AccumulateOpBounds(path.getBounds(), kDrawPathFlags); } } void DisplayListBuilder::DrawPath(const SkPath& path, const DlPaint& paint) { @@ -901,23 +824,19 @@ void DisplayListBuilder::drawArc(const SkRect& bounds, SkScalar start, SkScalar sweep, bool useCenter) { - DisplayListAttributeFlags flags = // - useCenter // - ? kDrawArcWithCenterFlags - : kDrawArcNoCenterFlags; - OpResult result = PaintResult(current_, flags); + Push(0, 1, bounds, start, sweep, useCenter); + if (useCenter) { + CheckLayerOpacityHairlineCompatibility(); + } else { + CheckLayerOpacityCompatibility(); + } // This could be tighter if we compute where the start and end // angles are and then also consider the quadrants swept and // the center if specified. - if (result != OpResult::kNoEffect && AccumulateOpBounds(bounds, flags)) { - Push(0, 1, bounds, start, sweep, useCenter); - if (useCenter) { - CheckLayerOpacityHairlineCompatibility(); - } else { - CheckLayerOpacityCompatibility(); - } - UpdateLayerResult(result); - } + AccumulateOpBounds(bounds, + useCenter // + ? kDrawArcWithCenterFlags + : kDrawArcNoCenterFlags); } void DisplayListBuilder::DrawArc(const SkRect& bounds, SkScalar start, @@ -928,31 +847,14 @@ void DisplayListBuilder::DrawArc(const SkRect& bounds, paint, useCenter ? kDrawArcWithCenterFlags : kDrawArcNoCenterFlags); drawArc(bounds, start, sweep, useCenter); } - -DisplayListAttributeFlags DisplayListBuilder::FlagsForPointMode( - PointMode mode) { - switch (mode) { - case DlCanvas::PointMode::kPoints: - return kDrawPointsAsPointsFlags; - case PointMode::kLines: - return kDrawPointsAsLinesFlags; - case PointMode::kPolygon: - return kDrawPointsAsPolygonFlags; - } - FML_UNREACHABLE(); -} void DisplayListBuilder::drawPoints(PointMode mode, uint32_t count, const SkPoint pts[]) { if (count == 0) { return; } - DisplayListAttributeFlags flags = FlagsForPointMode(mode); - OpResult result = PaintResult(current_, flags); - if (result == OpResult::kNoEffect) { - return; - } + void* data_ptr; FML_DCHECK(count < DlOpReceiver::kMaxDrawPointsCount); int bytes = count * sizeof(SkPoint); RectBoundsAccumulator ptBounds; @@ -960,23 +862,21 @@ void DisplayListBuilder::drawPoints(PointMode mode, ptBounds.accumulate(pts[i]); } SkRect point_bounds = ptBounds.bounds(); - if (!AccumulateOpBounds(point_bounds, flags)) { - return; - } - - void* data_ptr; switch (mode) { case PointMode::kPoints: data_ptr = Push(bytes, 1, count); + AccumulateOpBounds(point_bounds, kDrawPointsAsPointsFlags); break; case PointMode::kLines: data_ptr = Push(bytes, 1, count); + AccumulateOpBounds(point_bounds, kDrawPointsAsLinesFlags); break; case PointMode::kPolygon: data_ptr = Push(bytes, 1, count); + AccumulateOpBounds(point_bounds, kDrawPointsAsPolygonFlags); break; default: - FML_UNREACHABLE(); + FML_DCHECK(false); return; } CopyV(data_ptr, pts, count); @@ -986,30 +886,39 @@ void DisplayListBuilder::drawPoints(PointMode mode, // bounds of every sub-primitive. // See: https://fiddle.skia.org/c/228459001d2de8db117ce25ef5cedb0c UpdateLayerOpacityCompatibility(false); - UpdateLayerResult(result); } void DisplayListBuilder::DrawPoints(PointMode mode, uint32_t count, const SkPoint pts[], const DlPaint& paint) { - SetAttributesFromPaint(paint, FlagsForPointMode(mode)); + const DisplayListAttributeFlags* flags; + switch (mode) { + case PointMode::kPoints: + flags = &DisplayListOpFlags::kDrawPointsAsPointsFlags; + break; + case PointMode::kLines: + flags = &DisplayListOpFlags::kDrawPointsAsLinesFlags; + break; + case PointMode::kPolygon: + flags = &DisplayListOpFlags::kDrawPointsAsPolygonFlags; + break; + default: + FML_DCHECK(false); + return; + } + SetAttributesFromPaint(paint, *flags); drawPoints(mode, count, pts); } void DisplayListBuilder::drawVertices(const DlVertices* vertices, DlBlendMode mode) { - DisplayListAttributeFlags flags = kDrawVerticesFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect && - AccumulateOpBounds(vertices->bounds(), flags)) { - void* pod = Push(vertices->size(), 1, mode); - new (pod) DlVertices(vertices); - // DrawVertices applies its colors to the paint so we have no way - // of controlling opacity using the current paint attributes. - // Although, examination of the |mode| might find some predictable - // cases. - UpdateLayerOpacityCompatibility(false); - UpdateLayerResult(result); - } + void* pod = Push(vertices->size(), 1, mode); + new (pod) DlVertices(vertices); + // DrawVertices applies its colors to the paint so we have no way + // of controlling opacity using the current paint attributes. + // Although, examination of the |mode| might find some predictable + // cases. + UpdateLayerOpacityCompatibility(false); + AccumulateOpBounds(vertices->bounds(), kDrawVerticesFlags); } void DisplayListBuilder::DrawVertices(const DlVertices* vertices, DlBlendMode mode, @@ -1022,23 +931,17 @@ void DisplayListBuilder::drawImage(const sk_sp image, const SkPoint point, DlImageSampling sampling, bool render_with_attributes) { + render_with_attributes + ? Push(0, 1, image, point, sampling) + : Push(0, 1, image, point, sampling); + CheckLayerOpacityCompatibility(render_with_attributes); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); + SkRect bounds = SkRect::MakeXYWH(point.fX, point.fY, // + image->width(), image->height()); DisplayListAttributeFlags flags = render_with_attributes // ? kDrawImageWithPaintFlags : kDrawImageFlags; - OpResult result = PaintResult(current_, flags); - if (result == OpResult::kNoEffect) { - return; - } - SkRect bounds = SkRect::MakeXYWH(point.fX, point.fY, // - image->width(), image->height()); - if (AccumulateOpBounds(bounds, flags)) { - render_with_attributes - ? Push(0, 1, image, point, sampling) - : Push(0, 1, image, point, sampling); - CheckLayerOpacityCompatibility(render_with_attributes); - UpdateLayerResult(result); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); - } + AccumulateOpBounds(bounds, flags); } void DisplayListBuilder::DrawImage(const sk_sp& image, const SkPoint point, @@ -1058,17 +961,14 @@ void DisplayListBuilder::drawImageRect(const sk_sp image, DlImageSampling sampling, bool render_with_attributes, SrcRectConstraint constraint) { + Push(0, 1, image, src, dst, sampling, render_with_attributes, + constraint); + CheckLayerOpacityCompatibility(render_with_attributes); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); DisplayListAttributeFlags flags = render_with_attributes ? kDrawImageRectWithPaintFlags : kDrawImageRectFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect && AccumulateOpBounds(dst, flags)) { - Push(0, 1, image, src, dst, sampling, - render_with_attributes, constraint); - CheckLayerOpacityCompatibility(render_with_attributes); - UpdateLayerResult(result); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); - } + AccumulateOpBounds(dst, flags); } void DisplayListBuilder::DrawImageRect(const sk_sp& image, const SkRect& src, @@ -1089,18 +989,15 @@ void DisplayListBuilder::drawImageNine(const sk_sp image, const SkRect& dst, DlFilterMode filter, bool render_with_attributes) { + render_with_attributes + ? Push(0, 1, image, center, dst, filter) + : Push(0, 1, image, center, dst, filter); + CheckLayerOpacityCompatibility(render_with_attributes); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); DisplayListAttributeFlags flags = render_with_attributes ? kDrawImageNineWithPaintFlags : kDrawImageNineFlags; - OpResult result = PaintResult(current_, flags); - if (result != OpResult::kNoEffect && AccumulateOpBounds(dst, flags)) { - render_with_attributes - ? Push(0, 1, image, center, dst, filter) - : Push(0, 1, image, center, dst, filter); - CheckLayerOpacityCompatibility(render_with_attributes); - UpdateLayerResult(result); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); - } + AccumulateOpBounds(dst, flags); } void DisplayListBuilder::DrawImageNine(const sk_sp& image, const SkIRect& center, @@ -1124,27 +1021,6 @@ void DisplayListBuilder::drawAtlas(const sk_sp atlas, DlImageSampling sampling, const SkRect* cull_rect, bool render_with_attributes) { - DisplayListAttributeFlags flags = render_with_attributes // - ? kDrawAtlasWithPaintFlags - : kDrawAtlasFlags; - OpResult result = PaintResult(current_, flags); - if (result == OpResult::kNoEffect) { - return; - } - SkPoint quad[4]; - RectBoundsAccumulator atlasBounds; - for (int i = 0; i < count; i++) { - const SkRect& src = tex[i]; - xform[i].toQuad(src.width(), src.height(), quad); - for (int j = 0; j < 4; j++) { - atlasBounds.accumulate(quad[j]); - } - } - if (atlasBounds.is_empty() || - !AccumulateOpBounds(atlasBounds.bounds(), flags)) { - return; - } - int bytes = count * (sizeof(SkRSXform) + sizeof(SkRect)); void* data_ptr; if (colors != nullptr) { @@ -1173,8 +1049,23 @@ void DisplayListBuilder::drawAtlas(const sk_sp atlas, // on it to distribute the opacity without overlap without checking all // of the transforms and texture rectangles. UpdateLayerOpacityCompatibility(false); - UpdateLayerResult(result); is_ui_thread_safe_ = is_ui_thread_safe_ && atlas->isUIThreadSafe(); + + SkPoint quad[4]; + RectBoundsAccumulator atlasBounds; + for (int i = 0; i < count; i++) { + const SkRect& src = tex[i]; + xform[i].toQuad(src.width(), src.height(), quad); + for (int j = 0; j < 4; j++) { + atlasBounds.accumulate(quad[j]); + } + } + if (atlasBounds.is_not_empty()) { + DisplayListAttributeFlags flags = render_with_attributes // + ? kDrawAtlasWithPaintFlags + : kDrawAtlasFlags; + AccumulateOpBounds(atlasBounds.bounds(), flags); + } } void DisplayListBuilder::DrawAtlas(const sk_sp& atlas, const SkRSXform xform[], @@ -1198,49 +1089,35 @@ void DisplayListBuilder::DrawAtlas(const sk_sp& atlas, void DisplayListBuilder::DrawDisplayList(const sk_sp display_list, SkScalar opacity) { - if (!SkScalarIsFinite(opacity) || opacity <= SK_ScalarNearlyZero || - display_list->op_count() == 0 || display_list->bounds().isEmpty() || - current_layer_->is_nop_) { - return; - } + DlPaint current_paint = current_; + Push(0, 1, display_list, opacity); + is_ui_thread_safe_ = is_ui_thread_safe_ && display_list->isUIThreadSafe(); + // Not really necessary if the developer is interacting with us via + // our attribute-state-less DlCanvas methods, but this avoids surprises + // for those who may have been using the stateful Dispatcher methods. + SetAttributesFromPaint(current_paint, + DisplayListOpFlags::kSaveLayerWithPaintFlags); + const SkRect bounds = display_list->bounds(); - bool accumulated; switch (accumulator()->type()) { case BoundsAccumulatorType::kRect: - accumulated = AccumulateOpBounds(bounds, kDrawDisplayListFlags); + AccumulateOpBounds(bounds, kDrawDisplayListFlags); break; case BoundsAccumulatorType::kRTree: auto rtree = display_list->rtree(); if (rtree) { std::list rects = rtree->searchAndConsolidateRects(bounds, false); - accumulated = false; for (const SkRect& rect : rects) { // TODO (https://github.com/flutter/flutter/issues/114919): Attributes // are not necessarily `kDrawDisplayListFlags`. - if (AccumulateOpBounds(rect, kDrawDisplayListFlags)) { - accumulated = true; - } + AccumulateOpBounds(rect, kDrawDisplayListFlags); } } else { - accumulated = AccumulateOpBounds(bounds, kDrawDisplayListFlags); + AccumulateOpBounds(bounds, kDrawDisplayListFlags); } break; } - if (!accumulated) { - return; - } - - DlPaint current_paint = current_; - Push(0, 1, display_list, - opacity < SK_Scalar1 ? opacity : SK_Scalar1); - is_ui_thread_safe_ = is_ui_thread_safe_ && display_list->isUIThreadSafe(); - // Not really necessary if the developer is interacting with us via - // our attribute-state-less DlCanvas methods, but this avoids surprises - // for those who may have been using the stateful Dispatcher methods. - SetAttributesFromPaint(current_paint, - DisplayListOpFlags::kSaveLayerWithPaintFlags); - // The non-nested op count accumulated in the |Push| method will include // this call to |drawDisplayList| for non-nested op count metrics. // But, for nested op count metrics we want the |drawDisplayList| call itself @@ -1250,38 +1127,18 @@ void DisplayListBuilder::DrawDisplayList(const sk_sp display_list, nested_op_count_ += display_list->op_count(true) - 1; nested_bytes_ += display_list->bytes(true); UpdateLayerOpacityCompatibility(display_list->can_apply_group_opacity()); - // Nop DisplayLists are eliminated above so we either affect transparent - // pixels or we do not. We should not have [kNoEffect]. - UpdateLayerResult(display_list->modifies_transparent_black() - ? OpResult::kAffectsAll - : OpResult::kPreservesTransparency); } void DisplayListBuilder::drawTextBlob(const sk_sp blob, SkScalar x, SkScalar y) { - DisplayListAttributeFlags flags = kDrawTextBlobFlags; - OpResult result = PaintResult(current_, flags); - if (result == OpResult::kNoEffect) { - return; - } - bool unclipped = AccumulateOpBounds(blob->bounds().makeOffset(x, y), flags); - // TODO(https://github.com/flutter/flutter/issues/82202): Remove once the - // unit tests can use Fuchsia's font manager instead of the empty default. - // Until then we might encounter empty bounds for otherwise valid text and - // thus we ignore the results from AccumulateOpBounds. -#if defined(OS_FUCHSIA) - unclipped = true; -#endif // OS_FUCHSIA - if (unclipped) { - Push(0, 1, blob, x, y); - // There is no way to query if the glyphs of a text blob overlap and - // there are no current guarantees from either Skia or Impeller that - // they will protect overlapping glyphs from the effects of overdraw - // so we must make the conservative assessment that this DL layer is - // not compatible with group opacity inheritance. - UpdateLayerOpacityCompatibility(false); - UpdateLayerResult(result); - } + Push(0, 1, blob, x, y); + AccumulateOpBounds(blob->bounds().makeOffset(x, y), kDrawTextBlobFlags); + // There is no way to query if the glyphs of a text blob overlap and + // there are no current guarantees from either Skia or Impeller that + // they will protect overlapping glyphs from the effects of overdraw + // so we must make the conservative assessment that this DL layer is + // not compatible with group opacity inheritance. + UpdateLayerOpacityCompatibility(false); } void DisplayListBuilder::DrawTextBlob(const sk_sp& blob, SkScalar x, @@ -1295,19 +1152,14 @@ void DisplayListBuilder::DrawShadow(const SkPath& path, const SkScalar elevation, bool transparent_occluder, SkScalar dpr) { - OpResult result = PaintResult(DlPaint(color)); - if (result != OpResult::kNoEffect) { - SkRect shadow_bounds = - DlCanvas::ComputeShadowBounds(path, elevation, dpr, GetTransform()); - if (AccumulateOpBounds(shadow_bounds, kDrawShadowFlags)) { - transparent_occluder // - ? Push(0, 1, path, color, elevation, - dpr) - : Push(0, 1, path, color, elevation, dpr); - UpdateLayerOpacityCompatibility(false); - UpdateLayerResult(result); - } - } + transparent_occluder // + ? Push(0, 1, path, color, elevation, dpr) + : Push(0, 1, path, color, elevation, dpr); + + SkRect shadow_bounds = + DlCanvas::ComputeShadowBounds(path, elevation, dpr, GetTransform()); + AccumulateOpBounds(shadow_bounds, kDrawShadowFlags); + UpdateLayerOpacityCompatibility(false); } bool DisplayListBuilder::ComputeFilteredBounds(SkRect& bounds, @@ -1377,40 +1229,31 @@ bool DisplayListBuilder::AdjustBoundsForPaint(SkRect& bounds, return true; } -bool DisplayListBuilder::AccumulateUnbounded() { - SkRect clip = tracker_.device_cull_rect(); - if (clip.isEmpty()) { - return false; - } - accumulator()->accumulate(clip, op_index_); - return true; +void DisplayListBuilder::AccumulateUnbounded() { + accumulator()->accumulate(tracker_.device_cull_rect(), op_index_ - 1); } -bool DisplayListBuilder::AccumulateOpBounds(SkRect& bounds, +void DisplayListBuilder::AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags) { if (AdjustBoundsForPaint(bounds, flags)) { - return AccumulateBounds(bounds); + AccumulateBounds(bounds); } else { - return AccumulateUnbounded(); + AccumulateUnbounded(); } } -bool DisplayListBuilder::AccumulateBounds(SkRect& bounds) { - if (!bounds.isEmpty()) { - tracker_.mapRect(&bounds); - if (bounds.intersect(tracker_.device_cull_rect())) { - accumulator()->accumulate(bounds, op_index_); - return true; - } +void DisplayListBuilder::AccumulateBounds(SkRect& bounds) { + tracker_.mapRect(&bounds); + if (bounds.intersect(tracker_.device_cull_rect())) { + accumulator()->accumulate(bounds, op_index_ - 1); } - return false; } bool DisplayListBuilder::paint_nops_on_transparency() { // SkImageFilter::canComputeFastBounds tests for transparency behavior // This test assumes that the blend mode checked down below will // NOP on transparent black. - if (current_.getImageFilterPtr() && - current_.getImageFilterPtr()->modifies_transparent_black()) { + if (current_.getImageFilter() && + current_.getImageFilter()->modifies_transparent_black()) { return false; } @@ -1420,8 +1263,8 @@ bool DisplayListBuilder::paint_nops_on_transparency() { // save layer untouched out to the edge of the output surface. // This test assumes that the blend mode checked down below will // NOP on transparent black. - if (current_.getColorFilterPtr() && - current_.getColorFilterPtr()->modifies_transparent_black()) { + if (current_.getColorFilter() && + current_.getColorFilter()->modifies_transparent_black()) { return false; } @@ -1478,130 +1321,4 @@ bool DisplayListBuilder::paint_nops_on_transparency() { break; } } - -DlColor DisplayListBuilder::GetEffectiveColor(const DlPaint& paint, - DisplayListAttributeFlags flags) { - DlColor color; - if (flags.applies_color()) { - const DlColorSource* source = paint.getColorSourcePtr(); - if (source) { - if (source->asColor()) { - color = source->asColor()->color(); - } else { - color = source->is_opaque() ? DlColor::kBlack() : kAnyColor; - } - } else { - color = paint.getColor(); - } - } else if (flags.applies_alpha()) { - // If the operation applies alpha, but not color, then the only impact - // of the alpha is to modulate the output towards transparency. - // We can not guarantee an opaque source even if the alpha is opaque - // since that would require knowing something about the colors that - // the alpha is modulating, but we can guarantee a transparent source - // if the alpha is 0. - color = (paint.getAlpha() == 0) ? DlColor::kTransparent() : kAnyColor; - } else { - color = kAnyColor; - } - if (flags.applies_image_filter()) { - auto filter = paint.getImageFilterPtr(); - if (filter) { - if (!color.isTransparent() || filter->modifies_transparent_black()) { - color = kAnyColor; - } - } - } - if (flags.applies_color_filter()) { - auto filter = paint.getColorFilterPtr(); - if (filter) { - if (!color.isTransparent() || filter->modifies_transparent_black()) { - color = kAnyColor; - } - } - } - return color; -} - -DisplayListBuilder::OpResult DisplayListBuilder::PaintResult( - const DlPaint& paint, - DisplayListAttributeFlags flags) { - if (current_layer_->is_nop_) { - return OpResult::kNoEffect; - } - if (flags.applies_blend()) { - switch (paint.getBlendMode()) { - // Nop blend mode (singular, there is only one) - case DlBlendMode::kDst: - return OpResult::kNoEffect; - - // Always clears pixels blend mode (singular, there is only one) - case DlBlendMode::kClear: - return OpResult::kPreservesTransparency; - - case DlBlendMode::kHue: - case DlBlendMode::kSaturation: - case DlBlendMode::kColor: - case DlBlendMode::kLuminosity: - case DlBlendMode::kColorBurn: - return GetEffectiveColor(paint, flags).isTransparent() - ? OpResult::kNoEffect - : OpResult::kAffectsAll; - - // kSrcIn modifies pixels towards transparency - case DlBlendMode::kSrcIn: - return OpResult::kPreservesTransparency; - - // These blend modes preserve destination alpha - case DlBlendMode::kSrcATop: - case DlBlendMode::kDstOut: - return GetEffectiveColor(paint, flags).isTransparent() - ? OpResult::kNoEffect - : OpResult::kPreservesTransparency; - - // Always destructive blend modes, potentially not affecting transparency - case DlBlendMode::kSrc: - case DlBlendMode::kSrcOut: - case DlBlendMode::kDstATop: - return GetEffectiveColor(paint, flags).isTransparent() - ? OpResult::kPreservesTransparency - : OpResult::kAffectsAll; - - // The kDstIn blend mode modifies the destination unless the - // source color is opaque. - case DlBlendMode::kDstIn: - return GetEffectiveColor(paint, flags).isOpaque() - ? OpResult::kNoEffect - : OpResult::kPreservesTransparency; - - // The next group of blend modes modifies the destination unless the - // source color is transparent. - case DlBlendMode::kSrcOver: - case DlBlendMode::kDstOver: - case DlBlendMode::kXor: - case DlBlendMode::kPlus: - case DlBlendMode::kScreen: - case DlBlendMode::kMultiply: - case DlBlendMode::kOverlay: - case DlBlendMode::kDarken: - case DlBlendMode::kLighten: - case DlBlendMode::kColorDodge: - case DlBlendMode::kHardLight: - case DlBlendMode::kSoftLight: - case DlBlendMode::kDifference: - case DlBlendMode::kExclusion: - return GetEffectiveColor(paint, flags).isTransparent() - ? OpResult::kNoEffect - : OpResult::kAffectsAll; - - // Modulate only leaves the pixel alone when the source is white. - case DlBlendMode::kModulate: - return GetEffectiveColor(paint, flags) == DlColor::kWhite() - ? OpResult::kNoEffect - : OpResult::kPreservesTransparency; - } - } - return OpResult::kAffectsAll; -} - } // namespace flutter diff --git a/display_list/dl_builder.h b/display_list/dl_builder.h index ab0bce0db3c38..1d9cb8eb12299 100644 --- a/display_list/dl_builder.h +++ b/display_list/dl_builder.h @@ -506,13 +506,15 @@ class DisplayListBuilder final : public virtual DlCanvas, class LayerInfo { public: - explicit LayerInfo( - size_t save_offset = 0, - bool has_layer = false, - const std::shared_ptr& filter = nullptr) + explicit LayerInfo(size_t save_offset = 0, + bool has_layer = false, + std::shared_ptr filter = nullptr) : save_offset_(save_offset), has_layer_(has_layer), - filter_(filter) {} + cannot_inherit_opacity_(false), + has_compatible_op_(false), + filter_(filter), + is_unbounded_(false) {} // The offset into the memory buffer where the saveLayer DLOp record // for this saveLayer() call is placed. This may be needed if the @@ -525,9 +527,6 @@ class DisplayListBuilder final : public virtual DlCanvas, bool has_layer() const { return has_layer_; } bool cannot_inherit_opacity() const { return cannot_inherit_opacity_; } bool has_compatible_op() const { return has_compatible_op_; } - bool affects_transparent_layer() const { - return affects_transparent_layer_; - } bool is_group_opacity_compatible() const { return !cannot_inherit_opacity_; @@ -550,12 +549,6 @@ class DisplayListBuilder final : public virtual DlCanvas, } } - // Records that the current layer contains an op that produces visible - // output on a transparent surface. - void add_visible_op() { - affects_transparent_layer_ = true; - } - // The filter to apply to the layer bounds when it is restored std::shared_ptr filter() { return filter_; } @@ -590,13 +583,11 @@ class DisplayListBuilder final : public virtual DlCanvas, private: size_t save_offset_; bool has_layer_; - bool cannot_inherit_opacity_ = false; - bool has_compatible_op_ = false; + bool cannot_inherit_opacity_; + bool has_compatible_op_; std::shared_ptr filter_; - bool is_unbounded_ = false; + bool is_unbounded_; bool has_deferred_save_op_ = false; - bool is_nop_ = false; - bool affects_transparent_layer_ = false; friend class DisplayListBuilder; }; @@ -710,40 +701,9 @@ class DisplayListBuilder final : public virtual DlCanvas, return accumulator_->rtree(); } - static DisplayListAttributeFlags FlagsForPointMode(PointMode mode); - - enum class OpResult { - kNoEffect, - kPreservesTransparency, - kAffectsAll, - }; - bool paint_nops_on_transparency(); - OpResult PaintResult(const DlPaint& paint, - DisplayListAttributeFlags flags = kDrawPaintFlags); - - void UpdateLayerResult(OpResult result) { - switch (result) { - case OpResult::kNoEffect: - case OpResult::kPreservesTransparency: - break; - case OpResult::kAffectsAll: - current_layer_->add_visible_op(); - break; - } - } - - // kAnyColor is a non-opaque and non-transparent color that will not - // trigger any short-circuit tests about the results of a blend. - static constexpr DlColor kAnyColor = DlColor::kMidGrey().withAlpha(0x80); - static_assert(!kAnyColor.isOpaque()); - static_assert(!kAnyColor.isTransparent()); - static DlColor GetEffectiveColor(const DlPaint& paint, - DisplayListAttributeFlags flags); // Computes the bounds of an operation adjusted for a given ImageFilter - // and returns whether the computation was possible. If the method - // returns false then the caller should assume the worst about the bounds. static bool ComputeFilteredBounds(SkRect& bounds, const DlImageFilter* filter); @@ -753,24 +713,24 @@ class DisplayListBuilder final : public virtual DlCanvas, // Records the fact that we encountered an op that either could not // estimate its bounds or that fills all of the destination space. - bool AccumulateUnbounded(); + void AccumulateUnbounded(); // Records the bounds for an op after modifying them according to the // supplied attribute flags and transforming by the current matrix. - bool AccumulateOpBounds(const SkRect& bounds, + void AccumulateOpBounds(const SkRect& bounds, DisplayListAttributeFlags flags) { SkRect safe_bounds = bounds; - return AccumulateOpBounds(safe_bounds, flags); + AccumulateOpBounds(safe_bounds, flags); } // Records the bounds for an op after modifying them according to the // supplied attribute flags and transforming by the current matrix // and clipping against the current clip. - bool AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags); + void AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags); // Records the given bounds after transforming by the current matrix // and clipping against the current clip. - bool AccumulateBounds(SkRect& bounds); + void AccumulateBounds(SkRect& bounds); DlPaint current_; }; diff --git a/display_list/dl_color.h b/display_list/dl_color.h index 92a39150d2f2e..d926e58c3b818 100644 --- a/display_list/dl_color.h +++ b/display_list/dl_color.h @@ -34,20 +34,20 @@ struct DlColor { uint32_t argb; - constexpr bool isOpaque() const { return getAlpha() == 0xFF; } - constexpr bool isTransparent() const { return getAlpha() == 0; } + bool isOpaque() const { return getAlpha() == 0xFF; } + bool isTransparent() const { return getAlpha() == 0; } - constexpr int getAlpha() const { return argb >> 24; } - constexpr int getRed() const { return (argb >> 16) & 0xFF; } - constexpr int getGreen() const { return (argb >> 8) & 0xFF; } - constexpr int getBlue() const { return argb & 0xFF; } + int getAlpha() const { return argb >> 24; } + int getRed() const { return (argb >> 16) & 0xFF; } + int getGreen() const { return (argb >> 8) & 0xFF; } + int getBlue() const { return argb & 0xFF; } - constexpr float getAlphaF() const { return toF(getAlpha()); } - constexpr float getRedF() const { return toF(getRed()); } - constexpr float getGreenF() const { return toF(getGreen()); } - constexpr float getBlueF() const { return toF(getBlue()); } + float getAlphaF() const { return toF(getAlpha()); } + float getRedF() const { return toF(getRed()); } + float getGreenF() const { return toF(getGreen()); } + float getBlueF() const { return toF(getBlue()); } - constexpr uint32_t premultipliedArgb() const { + uint32_t premultipliedArgb() const { if (isOpaque()) { return argb; } @@ -58,20 +58,20 @@ struct DlColor { toC(getBlueF() * f); } - constexpr DlColor withAlpha(uint8_t alpha) const { // + DlColor withAlpha(uint8_t alpha) const { // return (argb & 0x00FFFFFF) | (alpha << 24); } - constexpr DlColor withRed(uint8_t red) const { // + DlColor withRed(uint8_t red) const { // return (argb & 0xFF00FFFF) | (red << 16); } - constexpr DlColor withGreen(uint8_t green) const { // + DlColor withGreen(uint8_t green) const { // return (argb & 0xFFFF00FF) | (green << 8); } - constexpr DlColor withBlue(uint8_t blue) const { // + DlColor withBlue(uint8_t blue) const { // return (argb & 0xFFFFFF00) | (blue << 0); } - constexpr DlColor modulateOpacity(float opacity) const { + DlColor modulateOpacity(float opacity) const { return opacity <= 0 ? withAlpha(0) : opacity >= 1 ? *this : withAlpha(round(getAlpha() * opacity)); diff --git a/display_list/dl_paint.h b/display_list/dl_paint.h index 3d9220f57e3d6..77619a2567164 100644 --- a/display_list/dl_paint.h +++ b/display_list/dl_paint.h @@ -83,7 +83,6 @@ class DlPaint { color_.argb = alpha << 24 | (color_.argb & 0x00FFFFFF); return *this; } - SkScalar getOpacity() const { return color_.getAlphaF(); } DlPaint& setOpacity(SkScalar opacity) { setAlpha(SkScalarRoundToInt(opacity * 0xff)); return *this; diff --git a/display_list/testing/dl_rendering_unittests.cc b/display_list/testing/dl_rendering_unittests.cc index ddf205a98c658..55afd24d806d6 100644 --- a/display_list/testing/dl_rendering_unittests.cc +++ b/display_list/testing/dl_rendering_unittests.cc @@ -9,7 +9,6 @@ #include "flutter/display_list/dl_op_flags.h" #include "flutter/display_list/dl_sampling_options.h" #include "flutter/display_list/skia/dl_sk_canvas.h" -#include "flutter/display_list/skia/dl_sk_conversions.h" #include "flutter/display_list/skia/dl_sk_dispatcher.h" #include "flutter/display_list/testing/dl_test_surface_provider.h" #include "flutter/display_list/utils/dl_comparable.h" @@ -284,26 +283,20 @@ using BackendType = DlSurfaceProvider::BackendType; class RenderResult { public: - explicit RenderResult(const sk_sp& surface, - bool take_snapshot = false) { + explicit RenderResult(const sk_sp& surface) { SkImageInfo info = surface->imageInfo(); info = SkImageInfo::MakeN32Premul(info.dimensions()); addr_ = malloc(info.computeMinByteSize() * info.height()); pixmap_.reset(info, addr_, info.minRowBytes()); - surface->readPixels(pixmap_, 0, 0); - if (take_snapshot) { - image_ = surface->makeImageSnapshot(); - } + EXPECT_TRUE(surface->readPixels(pixmap_, 0, 0)); } ~RenderResult() { free(addr_); } - sk_sp image() const { return image_; } int width() const { return pixmap_.width(); } int height() const { return pixmap_.height(); } const uint32_t* addr32(int x, int y) const { return pixmap_.addr32(x, y); } private: - sk_sp image_; SkPixmap pixmap_; void* addr_ = nullptr; }; @@ -919,14 +912,7 @@ class CanvasCompareTester { }; DlRenderer dl_safe_restore = [=](DlCanvas* cv, const DlPaint& p) { // Draw another primitive to disable peephole optimizations - // As the rendering op rejection in the DisplayList Builder - // gets smarter and smarter, this operation has had to get - // sneakier and sneakier about specifying an operation that - // won't practically show up in the output, but technically - // can't be culled. - cv->DrawRect( - SkRect::MakeXYWH(kRenderCenterX, kRenderCenterY, 0.0001, 0.0001), - DlPaint()); + cv->DrawRect(kRenderBounds.makeOffset(500, 500), DlPaint()); cv->Restore(); }; SkRenderer sk_opt_restore = [=](SkCanvas* cv, const SkPaint& p) { @@ -3799,6 +3785,7 @@ TEST_F(DisplayListCanvas, MatrixColorFilterOpacityCommuteCheck) { } #define FOR_EACH_BLEND_MODE_ENUM(FUNC) \ + FUNC(kSrc) \ FUNC(kClear) \ FUNC(kSrc) \ FUNC(kDst) \ @@ -3829,18 +3816,6 @@ TEST_F(DisplayListCanvas, MatrixColorFilterOpacityCommuteCheck) { FUNC(kColor) \ FUNC(kLuminosity) -// This function serves both to enhance error output below and to double -// check that the macro supplies all modes (otherwise it won't compile) -static std::string BlendModeToString(DlBlendMode mode) { - switch (mode) { -#define MODE_CASE(m) \ - case DlBlendMode::m: \ - return #m; - FOR_EACH_BLEND_MODE_ENUM(MODE_CASE) -#undef MODE_CASE - } -} - TEST_F(DisplayListCanvas, BlendColorFilterModifyTransparencyCheck) { std::vector> environments; for (auto& provider : CanvasCompareTester::kTestProviders) { @@ -3851,8 +3826,7 @@ TEST_F(DisplayListCanvas, BlendColorFilterModifyTransparencyCheck) { auto test_mode_color = [&environments](DlBlendMode mode, DlColor color) { std::stringstream desc_str; - std::string mode_string = BlendModeToString(mode); - desc_str << "blend[" << mode_string << ", " << color << "]"; + desc_str << "blend[" << mode << ", " << color << "]"; std::string desc = desc_str.str(); DlBlendColorFilter filter(color, mode); if (filter.modifies_transparent_black()) { @@ -3913,8 +3887,7 @@ TEST_F(DisplayListCanvas, BlendColorFilterOpacityCommuteCheck) { auto test_mode_color = [&environments](DlBlendMode mode, DlColor color) { std::stringstream desc_str; - std::string mode_string = BlendModeToString(mode); - desc_str << "blend[" << mode_string << ", " << color << "]"; + desc_str << "blend[" << mode << ", " << color << "]"; std::string desc = desc_str.str(); DlBlendColorFilter filter(color, mode); if (filter.can_commute_with_opacity()) { @@ -3973,359 +3946,7 @@ TEST_F(DisplayListCanvas, BlendColorFilterOpacityCommuteCheck) { #undef TEST_MODE } -class DisplayListNopTest : public DisplayListCanvas { - // The following code uses the acronym MTB for "modifies_transparent_black" - - protected: - DisplayListNopTest() : DisplayListCanvas() { - test_src_colors = { - DlColor::kBlack().withAlpha(0), // transparent black - DlColor::kBlack().withAlpha(0x7f), // half transparent black - DlColor::kWhite().withAlpha(0x7f), // half transparent white - DlColor::kBlack(), // opaque black - DlColor::kWhite(), // opaque white - DlColor::kRed(), // opaque red - DlColor::kGreen(), // opaque green - DlColor::kBlue(), // opaque blue - DlColor::kDarkGrey(), // dark grey - DlColor::kLightGrey(), // light grey - }; - - // We test against a color cube of 3x3x3 colors [55,aa,ff] - // plus transparency as the first color/pixel - test_dst_colors.push_back(DlColor::kTransparent()); - const int step = 0x55; - static_assert(step * 3 == 255); - for (int a = step; a < 256; a += step) { - for (int r = step; r < 256; r += step) { - for (int g = step; g < 256; g += step) { - for (int b = step; b < 256; b += step) { - test_dst_colors.push_back(DlColor(a << 24 | r << 16 | g << 8 | b)); - } - } - } - } - - static constexpr float color_filter_matrix_nomtb[] = { - 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // - 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // - 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // - 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // - }; - static constexpr float color_filter_matrix_mtb[] = { - 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // - 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // - 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // - 0.0001, 0.0001, 0.0001, 0.9997, 0.1, // - }; - color_filter_nomtb = DlMatrixColorFilter::Make(color_filter_matrix_nomtb); - color_filter_mtb = DlMatrixColorFilter::Make(color_filter_matrix_mtb); - EXPECT_FALSE(color_filter_nomtb->modifies_transparent_black()); - EXPECT_TRUE(color_filter_mtb->modifies_transparent_black()); - - test_data = - get_output(test_dst_colors.size(), 1, true, [this](SkCanvas* canvas) { - int x = 0; - for (DlColor color : test_dst_colors) { - SkPaint paint; - paint.setColor(color); - paint.setBlendMode(SkBlendMode::kSrc); - canvas->drawRect(SkRect::MakeXYWH(x, 0, 1, 1), paint); - x++; - } - }); - - // For image-on-image tests, the src and dest images will have repeated - // rows/columns that have every color, but laid out at right angles to - // each other so we see an interaction with every test color against - // every other test color. - int data_count = test_data->image()->width(); - test_image_dst_data = get_output( - data_count, data_count, true, [this, data_count](SkCanvas* canvas) { - ASSERT_EQ(test_data->width(), data_count); - ASSERT_EQ(test_data->height(), 1); - for (int y = 0; y < data_count; y++) { - canvas->drawImage(test_data->image().get(), 0, y); - } - }); - test_image_src_data = get_output( - data_count, data_count, true, [this, data_count](SkCanvas* canvas) { - ASSERT_EQ(test_data->width(), data_count); - ASSERT_EQ(test_data->height(), 1); - canvas->translate(data_count, 0); - canvas->rotate(90); - for (int y = 0; y < data_count; y++) { - canvas->drawImage(test_data->image().get(), 0, y); - } - }); - // Double check that the pixel data is laid out in orthogonal stripes - for (int y = 0; y < data_count; y++) { - for (int x = 0; x < data_count; x++) { - EXPECT_EQ(*test_image_dst_data->addr32(x, y), *test_data->addr32(x, 0)); - EXPECT_EQ(*test_image_src_data->addr32(x, y), *test_data->addr32(y, 0)); - } - } - } - - // These flags are 0 by default until they encounter a counter-example - // result and get set. - static constexpr int kWasNotNop = 0x1; // Some tested pixel was modified - static constexpr int kWasMTB = 0x2; // A transparent pixel was modified - - std::vector test_src_colors; - std::vector test_dst_colors; - - std::shared_ptr color_filter_nomtb; - std::shared_ptr color_filter_mtb; - - // A 1-row image containing every color in test_dst_colors - std::unique_ptr test_data; - - // A square image containing test_data duplicated in each row - std::unique_ptr test_image_dst_data; - - // A square image containing test_data duplicated in each column - std::unique_ptr test_image_src_data; - - std::unique_ptr get_output( - int w, - int h, - bool snapshot, - const std::function& renderer) { - auto surface = SkSurfaces::Raster(SkImageInfo::MakeN32Premul(w, h)); - SkCanvas* canvas = surface->getCanvas(); - renderer(canvas); - canvas->flush(); - surface->flushAndSubmit(true); - return std::make_unique(surface, snapshot); - } - - int check_color_result(DlColor dst_color, - DlColor result_color, - const sk_sp& dl, - const std::string& desc) { - int ret = 0; - bool is_error = false; - if (dst_color.isTransparent() && !result_color.isTransparent()) { - ret |= kWasMTB; - is_error = !dl->modifies_transparent_black(); - } - if (result_color != dst_color) { - ret |= kWasNotNop; - is_error = (dl->op_count() == 0u); - } - if (is_error) { - FML_LOG(ERROR) << std::hex << dst_color << " filters to " << result_color - << desc; - } - return ret; - } - - int check_image_result(const std::unique_ptr& dst_data, - const std::unique_ptr& result_data, - const sk_sp& dl, - const std::string& desc) { - EXPECT_EQ(dst_data->width(), result_data->width()); - EXPECT_EQ(dst_data->height(), result_data->height()); - int all_flags = 0; - for (int y = 0; y < dst_data->height(); y++) { - const uint32_t* dst_pixels = dst_data->addr32(0, y); - const uint32_t* result_pixels = result_data->addr32(0, y); - for (int x = 0; x < dst_data->width(); x++) { - all_flags |= - check_color_result(dst_pixels[x], result_pixels[x], dl, desc); - } - } - return all_flags; - } - - void report_results(int all_flags, - const sk_sp& dl, - const std::string& desc) { - if (!dl->modifies_transparent_black()) { - EXPECT_TRUE((all_flags & kWasMTB) == 0); - } else if ((all_flags & kWasMTB) == 0) { - FML_LOG(INFO) << "combination does not affect transparency: " << desc; - } - if (dl->op_count() == 0u) { - EXPECT_TRUE((all_flags & kWasNotNop) == 0); - } else if ((all_flags & kWasNotNop) == 0) { - FML_LOG(INFO) << "combination could be classified as a nop: " << desc; - } - }; - - void test_mode_color_via_filter(DlBlendMode mode, DlColor color) { - std::stringstream desc_stream; - desc_stream << " using SkColorFilter::filterColor() with: "; - desc_stream << BlendModeToString(mode); - desc_stream << "/" << color; - std::string desc = desc_stream.str(); - DisplayListBuilder builder({0.0f, 0.0f, 100.0f, 100.0f}); - DlPaint paint = DlPaint(color).setBlendMode(mode); - builder.DrawRect({0.0f, 0.0f, 10.0f, 10.0f}, paint); - auto dl = builder.Build(); - if (dl->modifies_transparent_black()) { - ASSERT_TRUE(dl->op_count() != 0u); - } - - auto sk_mode = static_cast(mode); - auto sk_color_filter = SkColorFilters::Blend(color, sk_mode); - int all_flags = 0; - if (sk_color_filter) { - for (DlColor dst_color : test_dst_colors) { - DlColor result = sk_color_filter->filterColor(dst_color); - all_flags |= check_color_result(dst_color, result, dl, desc); - } - if ((all_flags & kWasMTB) != 0) { - EXPECT_FALSE(sk_color_filter->isAlphaUnchanged()); - } - } - report_results(all_flags, dl, desc); - }; - - void test_mode_color_via_rendering(DlBlendMode mode, DlColor color) { - std::stringstream desc_stream; - desc_stream << " rendering with: "; - desc_stream << BlendModeToString(mode); - desc_stream << "/" << color; - std::string desc = desc_stream.str(); - auto test_image = test_data->image(); - SkRect test_bounds = - SkRect::MakeWH(test_image->width(), test_image->height()); - DisplayListBuilder builder(test_bounds); - DlPaint dl_paint = DlPaint(color).setBlendMode(mode); - builder.DrawRect(test_bounds, dl_paint); - auto dl = builder.Build(); - bool dl_is_elided = dl->op_count() == 0u; - bool dl_affects_transparent_pixels = dl->modifies_transparent_black(); - ASSERT_TRUE(!dl_is_elided || !dl_affects_transparent_pixels); - - auto sk_mode = static_cast(mode); - SkPaint sk_paint; - sk_paint.setBlendMode(sk_mode); - sk_paint.setColor(color); - for (auto& provider : CanvasCompareTester::kTestProviders) { - auto result_surface = provider->MakeOffscreenSurface( - test_image->width(), test_image->height(), - DlSurfaceProvider::kN32Premul_PixelFormat); - SkCanvas* result_canvas = result_surface->sk_surface()->getCanvas(); - result_canvas->clear(SK_ColorTRANSPARENT); - result_canvas->drawImage(test_image.get(), 0, 0); - result_canvas->drawRect(test_bounds, sk_paint); - result_canvas->flush(); - result_surface->sk_surface()->flushAndSubmit(true); - auto result_pixels = - std::make_unique(result_surface->sk_surface()); - - int all_flags = check_image_result(test_data, result_pixels, dl, desc); - report_results(all_flags, dl, desc); - } - }; - - void test_attributes_image(DlBlendMode mode, - DlColor color, - DlColorFilter* color_filter, - DlImageFilter* image_filter) { - // if (true) { return; } - std::stringstream desc_stream; - desc_stream << " rendering with: "; - desc_stream << BlendModeToString(mode); - desc_stream << "/" << color; - std::string cf_mtb = color_filter - ? color_filter->modifies_transparent_black() - ? "modifies transparency" - : "preserves transparency" - : "no filter"; - desc_stream << ", CF: " << cf_mtb; - std::string if_mtb = image_filter - ? image_filter->modifies_transparent_black() - ? "modifies transparency" - : "preserves transparency" - : "no filter"; - desc_stream << ", IF: " << if_mtb; - std::string desc = desc_stream.str(); - - DisplayListBuilder builder({0.0f, 0.0f, 100.0f, 100.0f}); - DlPaint paint = DlPaint(color) // - .setBlendMode(mode) // - .setColorFilter(color_filter) // - .setImageFilter(image_filter); - builder.DrawImage(DlImage::Make(test_image_src_data->image()), {0, 0}, - DlImageSampling::kNearestNeighbor, &paint); - auto dl = builder.Build(); - - int w = test_image_src_data->width(); - int h = test_image_src_data->height(); - auto sk_mode = static_cast(mode); - SkPaint sk_paint; - sk_paint.setBlendMode(sk_mode); - sk_paint.setColor(color); - sk_paint.setColorFilter(ToSk(color_filter)); - sk_paint.setImageFilter(ToSk(image_filter)); - for (auto& provider : CanvasCompareTester::kTestProviders) { - auto result_surface = provider->MakeOffscreenSurface( - w, h, DlSurfaceProvider::kN32Premul_PixelFormat); - SkCanvas* result_canvas = result_surface->sk_surface()->getCanvas(); - result_canvas->clear(SK_ColorTRANSPARENT); - result_canvas->drawImage(test_image_dst_data->image(), 0, 0); - result_canvas->drawImage(test_image_src_data->image(), 0, 0, - SkSamplingOptions(), &sk_paint); - result_canvas->flush(); - result_surface->sk_surface()->flushAndSubmit(true); - auto result_pixels = - std::make_unique(result_surface->sk_surface()); - - int all_flags = - check_image_result(test_image_dst_data, result_pixels, dl, desc); - report_results(all_flags, dl, desc); - } - }; -}; - -TEST_F(DisplayListNopTest, BlendModeAndColorViaColorFilter) { - auto test_mode_filter = [this](DlBlendMode mode) { - for (DlColor color : test_src_colors) { - test_mode_color_via_filter(mode, color); - } - }; - -#define TEST_MODE(V) test_mode_filter(DlBlendMode::V); - FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) -#undef TEST_MODE -} - -TEST_F(DisplayListNopTest, BlendModeAndColorByRendering) { - auto test_mode_render = [this](DlBlendMode mode) { - // First check rendering a variety of colors onto image - for (DlColor color : test_src_colors) { - test_mode_color_via_rendering(mode, color); - } - }; - -#define TEST_MODE(V) test_mode_render(DlBlendMode::V); - FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) -#undef TEST_MODE -} - -TEST_F(DisplayListNopTest, BlendModeAndColorAndFiltersByRendering) { - auto test_mode_render = [this](DlBlendMode mode) { - auto image_filter_nomtb = DlColorFilterImageFilter(color_filter_nomtb); - auto image_filter_mtb = DlColorFilterImageFilter(color_filter_mtb); - for (DlColor color : test_src_colors) { - test_attributes_image(mode, color, nullptr, nullptr); - test_attributes_image(mode, color, color_filter_nomtb.get(), nullptr); - test_attributes_image(mode, color, color_filter_mtb.get(), nullptr); - test_attributes_image(mode, color, nullptr, &image_filter_nomtb); - test_attributes_image(mode, color, nullptr, &image_filter_mtb); - } - }; - -#define TEST_MODE(V) test_mode_render(DlBlendMode::V); - FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) -#undef TEST_MODE -} - -#undef FOR_EACH_BLEND_MODE_ENUM +#undef FOR_EACH_ENUM } // namespace testing } // namespace flutter diff --git a/display_list/testing/dl_test_snippets.cc b/display_list/testing/dl_test_snippets.cc index 0a53f0337afd9..4479f63c1d678 100644 --- a/display_list/testing/dl_test_snippets.cc +++ b/display_list/testing/dl_test_snippets.cc @@ -517,7 +517,7 @@ std::vector CreateAllRenderingOps() { }}, {1, 16, 1, 24, [](DlOpReceiver& r) { - r.drawColor(SK_ColorBLUE, DlBlendMode::kDstOut); + r.drawColor(SK_ColorBLUE, DlBlendMode::kDstIn); }}, {1, 16, 1, 24, [](DlOpReceiver& r) { diff --git a/display_list/testing/dl_test_snippets.h b/display_list/testing/dl_test_snippets.h index 536cb224e8ef9..1f05e77dc83c6 100644 --- a/display_list/testing/dl_test_snippets.h +++ b/display_list/testing/dl_test_snippets.h @@ -151,9 +151,9 @@ static const DlBlurImageFilter kTestBlurImageFilter4(5.0, static const DlDilateImageFilter kTestDilateImageFilter1(5.0, 5.0); static const DlDilateImageFilter kTestDilateImageFilter2(6.0, 5.0); static const DlDilateImageFilter kTestDilateImageFilter3(5.0, 6.0); -static const DlErodeImageFilter kTestErodeImageFilter1(4.0, 4.0); -static const DlErodeImageFilter kTestErodeImageFilter2(4.0, 3.0); -static const DlErodeImageFilter kTestErodeImageFilter3(3.0, 4.0); +static const DlErodeImageFilter kTestErodeImageFilter1(5.0, 5.0); +static const DlErodeImageFilter kTestErodeImageFilter2(6.0, 5.0); +static const DlErodeImageFilter kTestErodeImageFilter3(5.0, 6.0); static const DlMatrixImageFilter kTestMatrixImageFilter1( SkMatrix::RotateDeg(45), kNearestSampling); diff --git a/display_list/utils/dl_matrix_clip_tracker.h b/display_list/utils/dl_matrix_clip_tracker.h index 0f613b2508147..a0d74b85f02af 100644 --- a/display_list/utils/dl_matrix_clip_tracker.h +++ b/display_list/utils/dl_matrix_clip_tracker.h @@ -40,7 +40,6 @@ class DisplayListMatrixClipTracker { bool content_culled(const SkRect& content_bounds) const { return current_->content_culled(content_bounds); } - bool is_cull_rect_empty() const { return current_->is_cull_rect_empty(); } void save(); void restore(); @@ -89,10 +88,9 @@ class DisplayListMatrixClipTracker { virtual SkMatrix matrix_3x3() const = 0; virtual SkM44 matrix_4x4() const = 0; - SkRect device_cull_rect() const { return cull_rect_; } + virtual SkRect device_cull_rect() const { return cull_rect_; } virtual SkRect local_cull_rect() const = 0; virtual bool content_culled(const SkRect& content_bounds) const; - bool is_cull_rect_empty() const { return cull_rect_.isEmpty(); } virtual void translate(SkScalar tx, SkScalar ty) = 0; virtual void scale(SkScalar sx, SkScalar sy) = 0; diff --git a/flow/diff_context_unittests.cc b/flow/diff_context_unittests.cc index d8b78a94070c0..e981258ef1a03 100644 --- a/flow/diff_context_unittests.cc +++ b/flow/diff_context_unittests.cc @@ -10,7 +10,7 @@ namespace testing { TEST_F(DiffContextTest, ClipAlignment) { MockLayerTree t1; t1.root()->Add(CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(30, 30, 50, 50)))); + CreateDisplayList(SkRect::MakeLTRB(30, 30, 50, 50), 1))); auto damage = DiffLayerTree(t1, MockLayerTree(), SkIRect::MakeEmpty(), 0, 0); EXPECT_EQ(damage.frame_damage, SkIRect::MakeLTRB(30, 30, 50, 50)); EXPECT_EQ(damage.buffer_damage, SkIRect::MakeLTRB(30, 30, 50, 50)); diff --git a/flow/layers/container_layer_unittests.cc b/flow/layers/container_layer_unittests.cc index 206be009966a7..42317ff9541a2 100644 --- a/flow/layers/container_layer_unittests.cc +++ b/flow/layers/container_layer_unittests.cc @@ -564,9 +564,9 @@ using ContainerLayerDiffTest = DiffContextTest; // Insert PictureLayer amongst container layers TEST_F(ContainerLayerDiffTest, PictureLayerInsertion) { - auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50)); - auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50)); - auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50)); + auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50), 1); + auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50), 1); + auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50), 1); MockLayerTree t1; @@ -616,9 +616,9 @@ TEST_F(ContainerLayerDiffTest, PictureLayerInsertion) { // Insert picture layer amongst other picture layers TEST_F(ContainerLayerDiffTest, PictureInsertion) { - auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50)); - auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50)); - auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50)); + auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50), 1); + auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50), 1); + auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50), 1); MockLayerTree t1; t1.root()->Add(CreateDisplayListLayer(pic1)); diff --git a/flow/layers/display_list_layer_unittests.cc b/flow/layers/display_list_layer_unittests.cc index 2791577666b8d..fccfe7b4ab044 100644 --- a/flow/layers/display_list_layer_unittests.cc +++ b/flow/layers/display_list_layer_unittests.cc @@ -355,7 +355,7 @@ TEST_F(DisplayListLayerTest, RasterCachePreservesRTree) { using DisplayListLayerDiffTest = DiffContextTest; TEST_F(DisplayListLayerDiffTest, SimpleDisplayList) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); MockLayerTree tree1; tree1.root()->Add(CreateDisplayListLayer(display_list)); @@ -375,7 +375,7 @@ TEST_F(DisplayListLayerDiffTest, SimpleDisplayList) { } TEST_F(DisplayListLayerDiffTest, FractionalTranslation) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); MockLayerTree tree1; tree1.root()->Add( @@ -388,7 +388,7 @@ TEST_F(DisplayListLayerDiffTest, FractionalTranslation) { } TEST_F(DisplayListLayerDiffTest, FractionalTranslationWithRasterCache) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); MockLayerTree tree1; tree1.root()->Add( @@ -402,25 +402,21 @@ TEST_F(DisplayListLayerDiffTest, FractionalTranslationWithRasterCache) { TEST_F(DisplayListLayerDiffTest, DisplayListCompare) { MockLayerTree tree1; - auto display_list1 = - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); + auto display_list1 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); tree1.root()->Add(CreateDisplayListLayer(display_list1)); auto damage = DiffLayerTree(tree1, MockLayerTree()); EXPECT_EQ(damage.frame_damage, SkIRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree2; - // same DL, same offset - auto display_list2 = - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); + auto display_list2 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); tree2.root()->Add(CreateDisplayListLayer(display_list2)); damage = DiffLayerTree(tree2, tree1); EXPECT_EQ(damage.frame_damage, SkIRect::MakeEmpty()); MockLayerTree tree3; - auto display_list3 = - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); + auto display_list3 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); // add offset tree3.root()->Add( CreateDisplayListLayer(display_list3, SkPoint::Make(10, 10))); @@ -430,8 +426,7 @@ TEST_F(DisplayListLayerDiffTest, DisplayListCompare) { MockLayerTree tree4; // different color - auto display_list4 = - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kRed()); + auto display_list4 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 2); tree4.root()->Add( CreateDisplayListLayer(display_list4, SkPoint::Make(10, 10))); diff --git a/flow/layers/opacity_layer_unittests.cc b/flow/layers/opacity_layer_unittests.cc index 71ccdc15c8476..ca1f1067e87c3 100644 --- a/flow/layers/opacity_layer_unittests.cc +++ b/flow/layers/opacity_layer_unittests.cc @@ -659,7 +659,7 @@ using OpacityLayerDiffTest = DiffContextTest; TEST_F(OpacityLayerDiffTest, FractionalTranslation) { auto picture = CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60))); + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1)); auto layer = CreateOpacityLater({picture}, 128, SkPoint::Make(0.5, 0.5)); MockLayerTree tree1; @@ -672,7 +672,7 @@ TEST_F(OpacityLayerDiffTest, FractionalTranslation) { TEST_F(OpacityLayerDiffTest, FractionalTranslationWithRasterCache) { auto picture = CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60))); + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1)); auto layer = CreateOpacityLater({picture}, 128, SkPoint::Make(0.5, 0.5)); MockLayerTree tree1; diff --git a/flow/testing/diff_context_test.cc b/flow/testing/diff_context_test.cc index c4c68bb7ab271..20153a0140d5c 100644 --- a/flow/testing/diff_context_test.cc +++ b/flow/testing/diff_context_test.cc @@ -30,7 +30,7 @@ Damage DiffContextTest::DiffLayerTree(MockLayerTree& layer_tree, } sk_sp DiffContextTest::CreateDisplayList(const SkRect& bounds, - DlColor color) { + SkColor color) { DisplayListBuilder builder; builder.DrawRect(bounds, DlPaint().setColor(color)); return builder.Build(); diff --git a/flow/testing/diff_context_test.h b/flow/testing/diff_context_test.h index be10a01b1f7a5..297a2bdf5f7f8 100644 --- a/flow/testing/diff_context_test.h +++ b/flow/testing/diff_context_test.h @@ -45,8 +45,7 @@ class DiffContextTest : public LayerTest { // Create display list consisting of filled rect with given color; Being able // to specify different color is useful to test deep comparison of pictures - sk_sp CreateDisplayList(const SkRect& bounds, - DlColor color = DlColor::kBlack()); + sk_sp CreateDisplayList(const SkRect& bounds, uint32_t color); std::shared_ptr CreateDisplayListLayer( const sk_sp& display_list, diff --git a/impeller/display_list/dl_unittests.cc b/impeller/display_list/dl_unittests.cc index a445684c8b1b4..05a0b5d9b072b 100644 --- a/impeller/display_list/dl_unittests.cc +++ b/impeller/display_list/dl_unittests.cc @@ -856,12 +856,18 @@ TEST_P(DisplayListTest, CanDrawShadow) { } TEST_P(DisplayListTest, TransparentShadowProducesCorrectColor) { + flutter::DisplayListBuilder builder; + { + builder.Save(); + builder.Scale(1.618, 1.618); + builder.DrawShadow(SkPath{}.addRect(SkRect::MakeXYWH(0, 0, 200, 100)), + SK_ColorTRANSPARENT, 15, false, 1); + builder.Restore(); + } + auto dl = builder.Build(); + DlDispatcher dispatcher; - dispatcher.save(); - dispatcher.scale(1.618, 1.618); - dispatcher.drawShadow(SkPath{}.addRect(SkRect::MakeXYWH(0, 0, 200, 100)), - SK_ColorTRANSPARENT, 15, false, 1); - dispatcher.restore(); + dispatcher.drawDisplayList(dl, 1); auto picture = dispatcher.EndRecordingAsPicture(); std::shared_ptr rrect_blur; diff --git a/shell/common/dl_op_spy_unittests.cc b/shell/common/dl_op_spy_unittests.cc index 7aaac1cbe52a8..dba02134238c8 100644 --- a/shell/common/dl_op_spy_unittests.cc +++ b/shell/common/dl_op_spy_unittests.cc @@ -7,40 +7,15 @@ #include "flutter/shell/common/dl_op_spy.h" #include "flutter/testing/testing.h" #include "third_party/skia/include/core/SkBitmap.h" -#include "third_party/skia/include/core/SkRSXform.h" namespace flutter { namespace testing { -// The following macros demonstrate that the DlOpSpy class is equivalent -// to DisplayList::affects_transparent_surface() now that DisplayListBuilder -// implements operation culling. -// See https://github.com/flutter/flutter/issues/125403 -#define ASSERT_DID_DRAW(spy, dl) \ - do { \ - ASSERT_TRUE(spy.did_draw()); \ - ASSERT_TRUE(dl->modifies_transparent_black()); \ - } while (0) - -#define ASSERT_NO_DRAW(spy, dl) \ - do { \ - ASSERT_FALSE(spy.did_draw()); \ - ASSERT_FALSE(dl->modifies_transparent_black()); \ - } while (0) - TEST(DlOpSpy, DidDrawIsFalseByDefault) { DlOpSpy dl_op_spy; ASSERT_FALSE(dl_op_spy.did_draw()); } -TEST(DlOpSpy, EmptyDisplayList) { - DisplayListBuilder builder; - sk_sp dl = builder.Build(); - DlOpSpy dl_op_spy; - dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); -} - TEST(DlOpSpy, SetColor) { { // No Color set. DisplayListBuilder builder; @@ -49,7 +24,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // Set transparent color. DisplayListBuilder builder; @@ -58,7 +33,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } { // Set black color. DisplayListBuilder builder; @@ -67,7 +42,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } } @@ -80,7 +55,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // Set transparent color. DisplayListBuilder builder; @@ -92,7 +67,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } { // Set black color. DisplayListBuilder builder; @@ -104,7 +79,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } } @@ -116,25 +91,16 @@ TEST(DlOpSpy, DrawColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } - { // Transparent color with kSrc. + { // Transparent color source. DisplayListBuilder builder; auto color = DlColor::kTransparent(); builder.DrawColor(color, DlBlendMode::kSrc); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); - } - { // Transparent color with kSrcOver. - DisplayListBuilder builder; - auto color = DlColor::kTransparent(); - builder.DrawColor(color, DlBlendMode::kSrcOver); - sk_sp dl = builder.Build(); - DlOpSpy dl_op_spy; - dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } @@ -146,7 +112,7 @@ TEST(DlOpSpy, DrawPaint) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } { // black color in paint. DisplayListBuilder builder; @@ -155,7 +121,7 @@ TEST(DlOpSpy, DrawPaint) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } } @@ -167,7 +133,7 @@ TEST(DlOpSpy, DrawLine) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent DisplayListBuilder builder; @@ -176,7 +142,7 @@ TEST(DlOpSpy, DrawLine) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } @@ -188,7 +154,7 @@ TEST(DlOpSpy, DrawRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent DisplayListBuilder builder; @@ -197,11 +163,11 @@ TEST(DlOpSpy, DrawRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawOval) { +TEST(DlOpSpy, drawOval) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -209,7 +175,7 @@ TEST(DlOpSpy, DrawOval) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent DisplayListBuilder builder; @@ -218,11 +184,11 @@ TEST(DlOpSpy, DrawOval) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawCircle) { +TEST(DlOpSpy, drawCircle) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -230,7 +196,7 @@ TEST(DlOpSpy, DrawCircle) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent DisplayListBuilder builder; @@ -239,11 +205,11 @@ TEST(DlOpSpy, DrawCircle) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawRRect) { +TEST(DlOpSpy, drawRRect) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -251,7 +217,7 @@ TEST(DlOpSpy, DrawRRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent DisplayListBuilder builder; @@ -260,49 +226,34 @@ TEST(DlOpSpy, DrawRRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawPath) { - { // black line +TEST(DlOpSpy, drawPath) { + { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); - paint.setDrawStyle(DlDrawStyle::kStroke); builder.DrawPath(SkPath::Line(SkPoint::Make(0, 1), SkPoint::Make(1, 1)), paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } - { // triangle - DisplayListBuilder builder; - DlPaint paint(DlColor::kBlack()); - SkPath path; - path.moveTo({0, 0}); - path.lineTo({1, 0}); - path.lineTo({0, 1}); - builder.DrawPath(path, paint); - sk_sp dl = builder.Build(); - DlOpSpy dl_op_spy; - dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); - } - { // transparent line + { // transparent DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); - paint.setDrawStyle(DlDrawStyle::kStroke); builder.DrawPath(SkPath::Line(SkPoint::Make(0, 1), SkPoint::Make(1, 1)), paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawArc) { +TEST(DlOpSpy, drawArc) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -310,7 +261,7 @@ TEST(DlOpSpy, DrawArc) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent DisplayListBuilder builder; @@ -319,11 +270,11 @@ TEST(DlOpSpy, DrawArc) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawPoints) { +TEST(DlOpSpy, drawPoints) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -332,7 +283,7 @@ TEST(DlOpSpy, DrawPoints) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent DisplayListBuilder builder; @@ -342,62 +293,38 @@ TEST(DlOpSpy, DrawPoints) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawVertices) { +TEST(DlOpSpy, drawVertices) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); - const SkPoint vertices[] = { - SkPoint::Make(5, 5), - SkPoint::Make(5, 15), - SkPoint::Make(15, 5), - }; - const SkPoint texture_coordinates[] = { - SkPoint::Make(5, 5), - SkPoint::Make(15, 5), - SkPoint::Make(5, 15), - }; - const DlColor colors[] = { - DlColor::kBlack(), - DlColor::kRed(), - DlColor::kGreen(), - }; - auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 3, vertices, + const SkPoint vertices[] = {SkPoint::Make(5, 5)}; + const SkPoint texture_coordinates[] = {SkPoint::Make(5, 5)}; + const DlColor colors[] = {DlColor::kBlack()}; + auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 1, vertices, texture_coordinates, colors, 0); builder.DrawVertices(dl_vertices.get(), DlBlendMode::kSrc, paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); - const SkPoint vertices[] = { - SkPoint::Make(5, 5), - SkPoint::Make(5, 15), - SkPoint::Make(15, 5), - }; - const SkPoint texture_coordinates[] = { - SkPoint::Make(5, 5), - SkPoint::Make(15, 5), - SkPoint::Make(5, 15), - }; - const DlColor colors[] = { - DlColor::kBlack(), - DlColor::kRed(), - DlColor::kGreen(), - }; - auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 3, vertices, + const SkPoint vertices[] = {SkPoint::Make(5, 5)}; + const SkPoint texture_coordinates[] = {SkPoint::Make(5, 5)}; + const DlColor colors[] = {DlColor::kBlack()}; + auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 1, vertices, texture_coordinates, colors, 0); builder.DrawVertices(dl_vertices.get(), DlBlendMode::kSrc, paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } @@ -416,7 +343,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // DrawImageRect DisplayListBuilder builder; @@ -432,7 +359,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // DrawImageNine DisplayListBuilder builder; @@ -448,7 +375,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // DrawAtlas DisplayListBuilder builder; @@ -459,19 +386,20 @@ TEST(DlOpSpy, Images) { SkBitmap bitmap; bitmap.allocPixels(info, 0); auto sk_image = SkImages::RasterFromBitmap(bitmap); - const SkRSXform xform[] = {SkRSXform::Make(1, 0, 0, 0)}; - const SkRect tex[] = {SkRect::MakeXYWH(10, 10, 10, 10)}; + const SkRSXform xform[] = {}; + const SkRect tex[] = {}; + const DlColor colors[] = {}; SkRect cull_rect = SkRect::MakeWH(5, 5); - builder.DrawAtlas(DlImage::Make(sk_image), xform, tex, nullptr, 1, + builder.DrawAtlas(DlImage::Make(sk_image), xform, tex, colors, 0, DlBlendMode::kSrc, DlImageSampling::kLinear, &cull_rect); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawDisplayList) { +TEST(DlOpSpy, drawDisplayList) { { // Recursive Transparent DisplayList DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); @@ -486,7 +414,7 @@ TEST(DlOpSpy, DrawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl2); + ASSERT_FALSE(dl_op_spy.did_draw()); } { // Sub non-transparent DisplayList, DisplayListBuilder builder; @@ -502,7 +430,7 @@ TEST(DlOpSpy, DrawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl2); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // Sub non-transparent DisplayList, 0 opacity @@ -519,7 +447,7 @@ TEST(DlOpSpy, DrawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl2); + ASSERT_FALSE(dl_op_spy.did_draw()); } { // Parent non-transparent DisplayList @@ -536,11 +464,11 @@ TEST(DlOpSpy, DrawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl2); + ASSERT_TRUE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawTextBlob) { +TEST(DlOpSpy, drawTextBlob) { { // Non-transparent color. DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -551,7 +479,7 @@ TEST(DlOpSpy, DrawTextBlob) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent color. DisplayListBuilder builder; @@ -563,11 +491,11 @@ TEST(DlOpSpy, DrawTextBlob) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } -TEST(DlOpSpy, DrawShadow) { +TEST(DlOpSpy, drawShadow) { { // valid shadow DisplayListBuilder builder; DlPaint paint; @@ -577,7 +505,7 @@ TEST(DlOpSpy, DrawShadow) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_DID_DRAW(dl_op_spy, dl); + ASSERT_TRUE(dl_op_spy.did_draw()); } { // transparent color DisplayListBuilder builder; @@ -588,7 +516,7 @@ TEST(DlOpSpy, DrawShadow) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_NO_DRAW(dl_op_spy, dl); + ASSERT_FALSE(dl_op_spy.did_draw()); } } From fa1bd1e9e3cc9dae3bb0f98b478b6b149ca9e7bf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 11:22:22 -0400 Subject: [PATCH 082/211] Roll Fuchsia Linux SDK from DEENqWMCYI1SMYsYH... to rmzZN2ZAgpbjAFi5_... (#43722) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 22ec5a87029fc..6b62335189656 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'DEENqWMCYI1SMYsYHT19t95MMYnCDspQKVWozpxeehQC' + 'version': 'rmzZN2ZAgpbjAFi5_CFO_m00MGyay1RhXb6hWI3qKQcC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index b3cc00c5ac349..172479dfa1f9c 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 22064f8efd7e6d86b07ba4528f20d31b +Signature: 0cc3132ae573bc5f6659012dc93380f9 ==================================================================================================== LIBRARY: fuchsia_sdk From 0af0f31bb135282c10af6834b28ef6863acb70af Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 13:28:17 -0400 Subject: [PATCH 083/211] Roll Fuchsia Mac SDK from oeYLDNShuD-FTgGwU... to 4pmlR2uz3SrLRNNSG... (#43723) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 6b62335189656..37cdbb0e0af6a 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'oeYLDNShuD-FTgGwUslapBKTerxUBlDZtVqgt6L8pIYC' + 'version': '4pmlR2uz3SrLRNNSGJUgtfzIlmD0avPeLcIiZpma7gYC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From e6026d652e856598440db0ec622d735bff319325 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 13:52:10 -0400 Subject: [PATCH 084/211] Roll Dart SDK from 0bd185c282d2 to d34f04f4a152 (1 revision) (#43724) https://dart.googlesource.com/sdk.git/+log/0bd185c282d2..d34f04f4a152 2023-07-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-316.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 37cdbb0e0af6a..07e97a24b7d87 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '0bd185c282d2e2bd0d2069c88458ae366467a8b7', + 'dart_revision': 'd34f04f4a152881159a228cfbf9a06d225f5728a', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From ab4205abad6703f12f506d1c4379e2cf657987aa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 14:54:18 -0400 Subject: [PATCH 085/211] Roll Skia from 6fb535aede4e to 0768501cd267 (3 revisions) (#43726) https://skia.googlesource.com/skia.git/+log/6fb535aede4e..0768501cd267 2023-07-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 831910dbe1f3 to fd07bdfdaf46 (1 revision) 2023-07-15 brianosman@google.com Revert "Remove #ifdefs related to SkMesh and SkSL-dependent code." 2023-07-15 brianosman@google.com Revert "Decouple SkMesh from Ganesh backend" If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/DEPS b/DEPS index 07e97a24b7d87..dbfdfce5a2c76 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '6fb535aede4e570e97fd0623d57e10c0f9af948b', + 'skia_revision': '0768501cd267b8c4ca9200cc68e62f6361d9e731', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a03f09b3546a0..ba1f3c5f8a5d6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c25e6a306f4ed0359e6b0ed93e35dbfb +Signature: ac76c9389d7ee1e69c8300664dcafc5c ==================================================================================================== LIBRARY: etc1 @@ -386,7 +386,6 @@ FILE: ../../../third_party/skia/modules/skparagraph/test.html FILE: ../../../third_party/skia/package-lock.json FILE: ../../../third_party/skia/relnotes/canvas_flush.md FILE: ../../../third_party/skia/relnotes/const_context.md -FILE: ../../../third_party/skia/relnotes/mesh_ganesh.md FILE: ../../../third_party/skia/relnotes/runtimeeffect_const.md FILE: ../../../third_party/skia/relnotes/runtimeeffect_image.md FILE: ../../../third_party/skia/relnotes/tiledimages.md @@ -8902,7 +8901,6 @@ ORIGIN: ../../../third_party/skia/include/core/SkTextureCompressionType.h + ../. ORIGIN: ../../../third_party/skia/include/core/SkTiledImageUtils.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/GrExternalTextureGenerator.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkImageGanesh.h + ../../../third_party/skia/LICENSE -ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkMeshGanesh.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkSurfaceGanesh.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/graphite/BackendSemaphore.h + ../../../third_party/skia/LICENSE @@ -8975,8 +8973,6 @@ ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListPriv.h + . ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListRecorder.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.h + ../../../third_party/skia/LICENSE -ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.cpp + ../../../third_party/skia/LICENSE -ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrPromiseImageTexture.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.h + ../../../third_party/skia/LICENSE @@ -9108,7 +9104,6 @@ FILE: ../../../third_party/skia/include/core/SkTextureCompressionType.h FILE: ../../../third_party/skia/include/core/SkTiledImageUtils.h FILE: ../../../third_party/skia/include/gpu/ganesh/GrExternalTextureGenerator.h FILE: ../../../third_party/skia/include/gpu/ganesh/SkImageGanesh.h -FILE: ../../../third_party/skia/include/gpu/ganesh/SkMeshGanesh.h FILE: ../../../third_party/skia/include/gpu/ganesh/SkSurfaceGanesh.h FILE: ../../../third_party/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h FILE: ../../../third_party/skia/include/gpu/graphite/BackendSemaphore.h @@ -9181,8 +9176,6 @@ FILE: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListPriv.h FILE: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListRecorder.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.h -FILE: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.cpp -FILE: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.h FILE: ../../../third_party/skia/src/gpu/ganesh/GrPromiseImageTexture.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.h From 070fb798370d44f852f43c90f3d90689f68a3b75 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Jul 2023 15:55:09 -0400 Subject: [PATCH 086/211] Roll Skia from 0768501cd267 to ee4369879cc0 (1 revision) (#43728) https://skia.googlesource.com/skia.git/+log/0768501cd267..ee4369879cc0 2023-07-15 brianosman@google.com Revert "Add forgotten more drawMesh implementations" If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index dbfdfce5a2c76..a9cb60743e875 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '0768501cd267b8c4ca9200cc68e62f6361d9e731', + 'skia_revision': 'ee4369879cc032e410817c11163be7d6a00a0517', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ba1f3c5f8a5d6..376f8399a7415 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ac76c9389d7ee1e69c8300664dcafc5c +Signature: e54275fd4c933f9c5e7b2984b083817f ==================================================================================================== LIBRARY: etc1 From 1f3b392bb2cc0b56a4b492ad7a6adadcae0423ab Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Sat, 15 Jul 2023 16:23:08 -0700 Subject: [PATCH 087/211] [Impeller] fix some OpenGL Linux desktop issues. (#43727) Fixes https://github.com/flutter/flutter/issues/130514 The context wasn't current so we couldn't get the GL version. The extension lookup was throwing an invalid enum error, the desktop opengl docs say to use a different method. --- .../renderer/backend/gles/description_gles.cc | 32 +++++++++++++++---- .../renderer/backend/gles/proc_table_gles.h | 1 + .../embedder/embedder_surface_gl_impeller.cc | 4 +++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/impeller/renderer/backend/gles/description_gles.cc b/impeller/renderer/backend/gles/description_gles.cc index cc86b7fd8ec32..08817abb5546c 100644 --- a/impeller/renderer/backend/gles/description_gles.cc +++ b/impeller/renderer/backend/gles/description_gles.cc @@ -26,6 +26,16 @@ static std::string GetGLString(const ProcTableGLES& gl, GLenum name) { return reinterpret_cast(str); } +static std::string GetGLStringi(const ProcTableGLES& gl, + GLenum name, + int index) { + auto str = gl.GetStringi(name, index); + if (str == nullptr) { + return ""; + } + return reinterpret_cast(str); +} + static bool DetermineIfES(const std::string& version) { return HasPrefix(version, "OpenGL ES"); } @@ -70,15 +80,23 @@ DescriptionGLES::DescriptionGLES(const ProcTableGLES& gl) renderer_(GetGLString(gl, GL_RENDERER)), gl_version_string_(GetGLString(gl, GL_VERSION)), sl_version_string_(GetGLString(gl, GL_SHADING_LANGUAGE_VERSION)) { - const auto extensions = GetGLString(gl, GL_EXTENSIONS); - std::stringstream extensions_stream(extensions); - std::string extension; - while (std::getline(extensions_stream, extension, ' ')) { - extensions_.insert(extension); - } - is_es_ = DetermineIfES(gl_version_string_); + if (is_es_) { + const auto extensions = GetGLString(gl, GL_EXTENSIONS); + std::stringstream extensions_stream(extensions); + std::string extension; + while (std::getline(extensions_stream, extension, ' ')) { + extensions_.insert(extension); + } + } else { + int extension_count = 0; + gl.GetIntegerv(GL_NUM_EXTENSIONS, &extension_count); + for (auto i = 0; i < extension_count; i++) { + extensions_.insert(GetGLStringi(gl, GL_EXTENSIONS, i)); + } + } + auto gl_version = DetermineVersion(gl_version_string_); if (!gl_version.has_value()) { VALIDATION_LOG << "Could not determine GL version."; diff --git a/impeller/renderer/backend/gles/proc_table_gles.h b/impeller/renderer/backend/gles/proc_table_gles.h index 46d275cd7a23e..0af40009cdf13 100644 --- a/impeller/renderer/backend/gles/proc_table_gles.h +++ b/impeller/renderer/backend/gles/proc_table_gles.h @@ -139,6 +139,7 @@ struct GLProc { PROC(GetShaderInfoLog); \ PROC(GetShaderiv); \ PROC(GetString); \ + PROC(GetStringi); \ PROC(GetUniformLocation); \ PROC(IsBuffer); \ PROC(IsFramebuffer); \ diff --git a/shell/platform/embedder/embedder_surface_gl_impeller.cc b/shell/platform/embedder/embedder_surface_gl_impeller.cc index 7a4c3ddf1524b..4d03bff292811 100644 --- a/shell/platform/embedder/embedder_surface_gl_impeller.cc +++ b/shell/platform/embedder/embedder_surface_gl_impeller.cc @@ -57,6 +57,10 @@ EmbedderSurfaceGLImpeller::EmbedderSurfaceGLImpeller( !gl_dispatch_table_.gl_proc_resolver) { return; } + // Certain GL backends need to made current before any GL + // state can be accessed. + gl_dispatch_table_.gl_make_current_callback(); + std::vector> shader_mappings = { std::make_shared( impeller_entity_shaders_gles_data, From 7dcf9806449e0ba7c5f978344bbe244f039e9447 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Sat, 15 Jul 2023 18:32:21 -0700 Subject: [PATCH 088/211] [Impeller] Fix pipeline stats traced to the timeline. (#43729) The trace counter was missing the series name and ID. --- impeller/renderer/backend/vulkan/pipeline_library_vk.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/impeller/renderer/backend/vulkan/pipeline_library_vk.cc b/impeller/renderer/backend/vulkan/pipeline_library_vk.cc index 27efb372a1ed8..b47c9d57237ac 100644 --- a/impeller/renderer/backend/vulkan/pipeline_library_vk.cc +++ b/impeller/renderer/backend/vulkan/pipeline_library_vk.cc @@ -205,7 +205,10 @@ static void ReportPipelineCreationFeedbackToTrace( gPipelineCacheMisses++; } gPipelines++; + static constexpr int64_t kImpellerPipelineTraceID = 1988; FML_TRACE_COUNTER("impeller", // + "PipelineCache", // series name + kImpellerPipelineTraceID, // series ID "PipelineCacheHits", gPipelineCacheHits, // "PipelineCacheMisses", gPipelineCacheMisses, // "TotalPipelines", gPipelines // From 2b13b8cc838f3a14a8bbb114ee95cd3108ea8222 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 16 Jul 2023 00:10:05 -0400 Subject: [PATCH 089/211] Roll Fuchsia Linux SDK from rmzZN2ZAgpbjAFi5_... to Buo0mx6dVLK5kvgQ3... (#43730) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index a9cb60743e875..0a39ba168175c 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'rmzZN2ZAgpbjAFi5_CFO_m00MGyay1RhXb6hWI3qKQcC' + 'version': 'Buo0mx6dVLK5kvgQ3U5YTxISQGTsnaPC4axo699B5oEC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', From 680a8c5bd85c1a9563cfc9fa131c99d6aaeea38f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 16 Jul 2023 01:46:02 -0400 Subject: [PATCH 090/211] Roll Dart SDK from d34f04f4a152 to 827259dfffb9 (1 revision) (#43731) https://dart.googlesource.com/sdk.git/+log/d34f04f4a152..827259dfffb9 2023-07-16 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-317.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 0a39ba168175c..98c2791210dee 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'd34f04f4a152881159a228cfbf9a06d225f5728a', + 'dart_revision': '827259dfffb99b72f53374fc7254a20a6a5a0e06', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From e819429a16ea2bf260ac0324e57b172b556811f4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 16 Jul 2023 02:24:54 -0400 Subject: [PATCH 091/211] Roll Fuchsia Mac SDK from 4pmlR2uz3SrLRNNSG... to VYjne_BEm9inQ5fnq... (#43732) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 98c2791210dee..e24a4a7435ceb 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '4pmlR2uz3SrLRNNSGJUgtfzIlmD0avPeLcIiZpma7gYC' + 'version': 'VYjne_BEm9inQ5fnqh_RhYSoT2s9UYazyEBvyVCzB2QC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From 7df583d029296a6284584a24146cda1ce26ecf9a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 16 Jul 2023 04:55:38 -0400 Subject: [PATCH 092/211] Roll Skia from ee4369879cc0 to 288c98d7ef0b (1 revision) (#43733) https://skia.googlesource.com/skia.git/+log/ee4369879cc0..288c98d7ef0b 2023-07-16 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update SKP version If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,kjlubick@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index e24a4a7435ceb..84cea43aefff4 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'ee4369879cc032e410817c11163be7d6a00a0517', + 'skia_revision': '288c98d7ef0bd05bacb805a5997a7cce52d8080a', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From e8831945e6d21ee736a601f0ccb5d3c65c75dfba Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 12:12:16 -0400 Subject: [PATCH 093/211] Roll Fuchsia Linux SDK from Buo0mx6dVLK5kvgQ3... to WZt3P7Fm3_GUvAaDv... (#43734) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 84cea43aefff4..1d22ed5e0ef0a 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'Buo0mx6dVLK5kvgQ3U5YTxISQGTsnaPC4axo699B5oEC' + 'version': 'WZt3P7Fm3_GUvAaDvmnYWul_8lnAYZ6MB5ZCdcp5VhsC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', From d3d9069876ff9e8ec18ed7482a5349e9be3287b5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 12:12:19 -0400 Subject: [PATCH 094/211] Roll Dart SDK from 827259dfffb9 to c1bfb2689f6f (1 revision) (#43735) https://dart.googlesource.com/sdk.git/+log/827259dfffb9..c1bfb2689f6f 2023-07-16 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-318.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 1d22ed5e0ef0a..9a91eef07ecd2 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '827259dfffb99b72f53374fc7254a20a6a5a0e06', + 'dart_revision': 'c1bfb2689f6f153d0205f43b45d3738b2fd1d877', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 31a1f664f210d7a6da382c4f6caa79081738c928 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 12:15:42 -0400 Subject: [PATCH 095/211] Roll Fuchsia Mac SDK from VYjne_BEm9inQ5fnq... to jtvD_HgQVBqadF3jX... (#43736) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 9a91eef07ecd2..3181ceac84b64 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'VYjne_BEm9inQ5fnqh_RhYSoT2s9UYazyEBvyVCzB2QC' + 'version': 'jtvD_HgQVBqadF3jXnPpEmHqe25HQIpLG8fS4CBsD_MC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From cfc9d1b687f0318bdb8d5df7d9682b609fd30f0c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 12:17:00 -0400 Subject: [PATCH 096/211] Roll Skia from 288c98d7ef0b to 4ec9f2497be1 (1 revision) (#43738) https://skia.googlesource.com/skia.git/+log/288c98d7ef0b..4ec9f2497be1 2023-07-17 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 845e8105edb3 to 59a5e9ba0f61 (3 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3181ceac84b64..db76ea450cab2 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '288c98d7ef0bd05bacb805a5997a7cce52d8080a', + 'skia_revision': '4ec9f2497be1430bc21ca1846e8ab653247e4375', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 376f8399a7415..7e4e12e293a5e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e54275fd4c933f9c5e7b2984b083817f +Signature: b462ea80e8db186a7fced6a85552bd2f ==================================================================================================== LIBRARY: etc1 From 87945dc1cdf716688c0b2c51e52ed11448c793c9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 13:09:16 -0400 Subject: [PATCH 097/211] Roll Skia from 4ec9f2497be1 to dc93f341ec38 (10 revisions) (#43739) https://skia.googlesource.com/skia.git/+log/4ec9f2497be1..dc93f341ec38 2023-07-17 herb@google.com check bounds and lengths in SkSpan 2023-07-17 kjlubick@google.com Remove SkCanvas::flush() call from skottielib 2023-07-17 michaelludwig@google.com [skif] Remove legacy Tile implementation 2023-07-17 kjlubick@google.com Revert "Revert "Decouple SkMesh from Ganesh backend"" 2023-07-17 johnstiles@google.com Replace SK_WARN_UNUSED_RESULT with C++17 [[nodiscard]]. 2023-07-17 kjlubick@google.com Reland "Remove #ifdefs related to SkMesh and SkSL-dependent code." 2023-07-17 johnstiles@google.com Replace SK_UNUSED with C++17 [[maybe_unused]]. 2023-07-17 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn from eb355bb3edcf to 2060ca2e3d59 (15 revisions) 2023-07-17 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 6ffd0d20684d to 507f67ccff45 (14 revisions) 2023-07-17 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from 59a5e9ba0f61 to fe667086d4ee If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index db76ea450cab2..1eec5a48eecfe 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '4ec9f2497be1430bc21ca1846e8ab653247e4375', + 'skia_revision': 'dc93f341ec38b6ecfd24dafabe3bea4e84c57dd0', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7e4e12e293a5e..6715cc8c2f74e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b462ea80e8db186a7fced6a85552bd2f +Signature: 53dba6cb422a2f1e3fd3fb1b130f17b8 ==================================================================================================== LIBRARY: etc1 @@ -386,6 +386,7 @@ FILE: ../../../third_party/skia/modules/skparagraph/test.html FILE: ../../../third_party/skia/package-lock.json FILE: ../../../third_party/skia/relnotes/canvas_flush.md FILE: ../../../third_party/skia/relnotes/const_context.md +FILE: ../../../third_party/skia/relnotes/mesh_ganesh.md FILE: ../../../third_party/skia/relnotes/runtimeeffect_const.md FILE: ../../../third_party/skia/relnotes/runtimeeffect_image.md FILE: ../../../third_party/skia/relnotes/tiledimages.md @@ -8901,6 +8902,7 @@ ORIGIN: ../../../third_party/skia/include/core/SkTextureCompressionType.h + ../. ORIGIN: ../../../third_party/skia/include/core/SkTiledImageUtils.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/GrExternalTextureGenerator.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkImageGanesh.h + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkMeshGanesh.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/SkSurfaceGanesh.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/graphite/BackendSemaphore.h + ../../../third_party/skia/LICENSE @@ -8973,6 +8975,8 @@ ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListPriv.h + . ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListRecorder.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.h + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/GrPromiseImageTexture.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.h + ../../../third_party/skia/LICENSE @@ -9104,6 +9108,7 @@ FILE: ../../../third_party/skia/include/core/SkTextureCompressionType.h FILE: ../../../third_party/skia/include/core/SkTiledImageUtils.h FILE: ../../../third_party/skia/include/gpu/ganesh/GrExternalTextureGenerator.h FILE: ../../../third_party/skia/include/gpu/ganesh/SkImageGanesh.h +FILE: ../../../third_party/skia/include/gpu/ganesh/SkMeshGanesh.h FILE: ../../../third_party/skia/include/gpu/ganesh/SkSurfaceGanesh.h FILE: ../../../third_party/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h FILE: ../../../third_party/skia/include/gpu/graphite/BackendSemaphore.h @@ -9176,6 +9181,8 @@ FILE: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListPriv.h FILE: ../../../third_party/skia/src/gpu/ganesh/GrDeferredDisplayListRecorder.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/GrFragmentProcessors.h +FILE: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.cpp +FILE: ../../../third_party/skia/src/gpu/ganesh/GrMeshBuffers.h FILE: ../../../third_party/skia/src/gpu/ganesh/GrPromiseImageTexture.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.cpp FILE: ../../../third_party/skia/src/gpu/ganesh/effects/GrColorTableEffect.h From 0c4e172ecb932c1c843c7b39bb6c9e9ac9b32fd2 Mon Sep 17 00:00:00 2001 From: Caroline Liu <10456171+caroqliu@users.noreply.github.com> Date: Mon, 17 Jul 2023 13:16:13 -0400 Subject: [PATCH 098/211] [fuchsia] flutter-embedder-test and touch-input-test use Flatland Test UI Stack (#43562) This change also: - removes reliance from both tests on `fuchsia.ui.scenic.Scenic` protocols - migrates `touch-input-test` to get display info from `fuchsia.ui.display.singleton.Info` instead of `fuchsia.ui.gfx.DisplayInfo` - adds support for `fuchsia.ui.display.singleton.Info` in `portable_ui_test` to support the above - migrates `flutter-embedder-test` to capture screenshots using `fuchsia.ui.composition.Screenshot` instead of `fuchsia.ui.scenic.Screenshot` - updates screenshot tooling accordingly - removes the embedding view hit test disabled case from `touch-input test`, since disabling the hit region is not currently supported in Flutter's integration with Flatland afaict ([this logic](https://github.com/flutter/engine/blob/0f0436b28430bd79e854f2294a60aa33417068fa/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc#L411-L434) appears to set hit regions to the full view size by default, and Flatland appears to drop the value [here](https://github.com/flutter/engine/blob/0f0436b28430bd79e854f2294a60aa33417068fa/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc#L578)) - removes hit test configurability on `touch-input-test` and `flutter-embedder-test` embedding views Bug: fxbug.dev/125514 --- .../tests/integration/embedder/BUILD.gn | 2 +- .../embedder/flutter-embedder-test.cc | 124 +++++++++-------- .../embedder/meta/flutter-embedder-test.cml | 1 + .../embedder/parent-view/lib/parent_view.dart | 21 ++- .../tests/integration/text-input/BUILD.gn | 2 - .../tests/integration/touch-input/BUILD.gn | 1 + .../lib/embedding-flutter-view.dart | 17 +-- .../touch-input/meta/touch-input-test.cml | 1 - .../touch-input/touch-input-test.cc | 103 +++++---------- .../flutter/tests/integration/utils/BUILD.gn | 11 +- .../flutter/tests/integration/utils/color.cc | 17 --- .../flutter/tests/integration/utils/color.h | 38 ------ .../integration/utils/portable_ui_test.cc | 1 + .../integration/utils/portable_ui_test.h | 1 + .../tests/integration/utils/screenshot.cc | 125 +++++++++++------- .../tests/integration/utils/screenshot.h | 114 +++++++++++----- 16 files changed, 286 insertions(+), 293 deletions(-) delete mode 100644 shell/platform/fuchsia/flutter/tests/integration/utils/color.cc delete mode 100644 shell/platform/fuchsia/flutter/tests/integration/utils/color.h diff --git a/shell/platform/fuchsia/flutter/tests/integration/embedder/BUILD.gn b/shell/platform/fuchsia/flutter/tests/integration/embedder/BUILD.gn index 392a271be85ec..9b60781b571fa 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/embedder/BUILD.gn +++ b/shell/platform/fuchsia/flutter/tests/integration/embedder/BUILD.gn @@ -27,6 +27,7 @@ executable("flutter-embedder-test-bin") { "$fuchsia_sdk_root/fidl:fuchsia.tracing.provider", "$fuchsia_sdk_root/fidl:fuchsia.ui.app", "$fuchsia_sdk_root/fidl:fuchsia.ui.composition", + "$fuchsia_sdk_root/fidl:fuchsia.ui.display.singleton", "$fuchsia_sdk_root/fidl:fuchsia.ui.observation.geometry", "$fuchsia_sdk_root/fidl:fuchsia.ui.scenic", "$fuchsia_sdk_root/fidl:fuchsia.ui.test.input", @@ -39,7 +40,6 @@ executable("flutter-embedder-test-bin") { "$fuchsia_sdk_root/pkg:zx", "//flutter/fml", "//flutter/shell/platform/fuchsia/flutter/tests/integration/utils:check_view", - "//flutter/shell/platform/fuchsia/flutter/tests/integration/utils:color", "//flutter/shell/platform/fuchsia/flutter/tests/integration/utils:screenshot", "//third_party/googletest:gtest", "//third_party/googletest:gtest_main", diff --git a/shell/platform/fuchsia/flutter/tests/integration/embedder/flutter-embedder-test.cc b/shell/platform/fuchsia/flutter/tests/integration/embedder/flutter-embedder-test.cc index 02b8da8c051a2..6135912ed310c 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/embedder/flutter-embedder-test.cc +++ b/shell/platform/fuchsia/flutter/tests/integration/embedder/flutter-embedder-test.cc @@ -6,8 +6,8 @@ #include #include #include +#include #include -#include #include #include #include @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include @@ -27,7 +26,6 @@ #include "gtest/gtest.h" #include "flutter/shell/platform/fuchsia/flutter/tests/integration/utils/check_view.h" -#include "flutter/shell/platform/fuchsia/flutter/tests/integration/utils/color.h" #include "flutter/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.h" namespace flutter_embedder_test { @@ -66,7 +64,8 @@ constexpr char kChildViewUrl[] = constexpr char kParentViewUrl[] = "fuchsia-pkg://fuchsia.com/parent-view#meta/parent-view.cm"; static constexpr auto kTestUiStackUrl = - "fuchsia-pkg://fuchsia.com/test-ui-stack#meta/test-ui-stack.cm"; + "fuchsia-pkg://fuchsia.com/flatland-scene-manager-test-ui-stack#meta/" + "test-ui-stack.cm"; constexpr auto kFlutterRunnerEnvironment = "flutter_runner_env"; constexpr auto kFlutterJitRunner = "flutter_jit_runner"; @@ -84,36 +83,26 @@ constexpr auto kParentViewRef = ChildRef{kParentView}; constexpr auto kTestUiStack = "ui"; constexpr auto kTestUiStackRef = ChildRef{kTestUiStack}; -constexpr fuchsia_test_utils::Color kParentBackgroundColor = {0x00, 0x00, 0xFF, - 0xFF}; // Blue -constexpr fuchsia_test_utils::Color kChildBackgroundColor = {0xFF, 0x00, 0xFF, - 0xFF}; // Pink - -// TODO(fxb/64201): Remove forced opacity colors when Flatland is enabled. -constexpr fuchsia_test_utils::Color kOverlayBackgroundColor1 = { - 0x00, 0xFF, 0x0E, 0xFF}; // Green, blended with blue (FEMU local) -constexpr fuchsia_test_utils::Color kOverlayBackgroundColor2 = { - 0x0E, 0xFF, 0x0E, 0xFF}; // Green, blended with pink (FEMU local) -constexpr fuchsia_test_utils::Color kOverlayBackgroundColor3 = { - 0x00, 0xFF, 0x0D, 0xFF}; // Green, blended with blue (AEMU infra) -constexpr fuchsia_test_utils::Color kOverlayBackgroundColor4 = { - 0x0D, 0xFF, 0x0D, 0xFF}; // Green, blended with pink (AEMU infra) -constexpr fuchsia_test_utils::Color kOverlayBackgroundColor5 = { - 0x00, 0xFE, 0x0D, 0xFF}; // Green, blended with blue (NUC) -constexpr fuchsia_test_utils::Color kOverlayBackgroundColor6 = { - 0x0D, 0xFF, 0x00, 0xFF}; // Green, blended with pink (NUC) - -static size_t OverlayPixelCount( - std::map& histogram) { - return histogram[kOverlayBackgroundColor1] + - histogram[kOverlayBackgroundColor2] + - histogram[kOverlayBackgroundColor3] + - histogram[kOverlayBackgroundColor4] + - histogram[kOverlayBackgroundColor5] + - histogram[kOverlayBackgroundColor6]; +// Background and foreground color values. +const fuchsia_test_utils::Pixel kParentBackgroundColor(0xFF, + 0x00, + 0x00, + 0xFF); // Blue +const fuchsia_test_utils::Pixel kChildBackgroundColor(0xFF, + 0x00, + 0xFF, + 0xFF); // Pink +const fuchsia_test_utils::Pixel kFlatlandOverlayColor(0x00, + 0xFF, + 0x00, + 0xFF); // Green + +static uint32_t OverlayPixelCount( + std::map& histogram) { + return histogram[kFlatlandOverlayColor]; } -// Timeout for Scenic's |TakeScreenshot| FIDL call. +// Timeout for |TakeScreenshot| FIDL call. constexpr zx::duration kScreenshotTimeout = zx::sec(10); // Timeout to fail the test if it goes beyond this duration. constexpr zx::duration kTestTimeout = zx::min(1); @@ -151,23 +140,24 @@ class FlutterEmbedderTest : public ::loop_fixture::RealLoop, fuchsia_test_utils::Screenshot TakeScreenshot(); bool TakeScreenshotUntil( - fuchsia_test_utils::Color color, - fit::function)> + fuchsia_test_utils::Pixel color, + fit::function)> callback = nullptr, zx::duration timeout = kTestTimeout); private: - fuchsia::ui::scenic::Scenic* scenic() { return scenic_.get(); } - void SetUpRealmBase(); - fuchsia::ui::scenic::ScenicPtr scenic_; fuchsia::ui::test::scene::ControllerPtr scene_provider_; fuchsia::ui::observation::geometry::ViewTreeWatcherPtr view_tree_watcher_; + fuchsia::ui::composition::ScreenshotPtr screenshot_; // Wrapped in optional since the view is not created until the middle of SetUp component_testing::RealmBuilder realm_builder_; std::unique_ptr realm_; + + uint64_t display_width_ = 0; + uint64_t display_height_ = 0; }; void FlutterEmbedderTest::SetUpRealmBase() { @@ -261,19 +251,20 @@ void FlutterEmbedderTest::SetUpRealmBase() { // Route UI capabilities from test UI stack to flutter runners. realm_builder_.AddRoute(Route{ - .capabilities = {Protocol{fuchsia::ui::composition::Flatland::Name_}, - Protocol{fuchsia::ui::scenic::Scenic::Name_}}, + .capabilities = {Protocol{fuchsia::ui::composition::Allocator::Name_}, + Protocol{fuchsia::ui::composition::Flatland::Name_}}, .source = kTestUiStackRef, .targets = {kFlutterJitRunnerRef, kFlutterJitProductRunnerRef, kFlutterAotRunnerRef, kFlutterAotProductRunnerRef}}); // Route test capabilities from test UI stack to test driver. realm_builder_.AddRoute(Route{ - .capabilities = {Protocol{fuchsia::ui::test::input::Registry::Name_}, + .capabilities = {Protocol{fuchsia::ui::composition::Screenshot::Name_}, + Protocol{fuchsia::ui::test::input::Registry::Name_}, Protocol{fuchsia::ui::test::scene::Controller::Name_}, - Protocol{fuchsia::ui::scenic::Scenic::Name_}}, + Protocol{fuchsia::ui::display::singleton::Info::Name_}}, .source = kTestUiStackRef, - .targets = {ParentRef{}}}); + .targets = {ParentRef()}}); // Route ViewProvider from child to parent, and parent to test. realm_builder_.AddRoute( @@ -328,6 +319,21 @@ void FlutterEmbedderTest::LaunchParentViewInRealm( } realm_ = std::make_unique(realm_builder_.Build()); + // Get the display information using the |fuchsia.ui.display.singleton.Info|. + std::optional display_metrics_obtained; + fuchsia::ui::display::singleton::InfoPtr display_info = + realm_->component().Connect(); + display_info->GetMetrics([this, &display_metrics_obtained](auto info) { + display_width_ = info.extent_in_px().width; + display_height_ = info.extent_in_px().height; + display_metrics_obtained = true; + }); + RunLoopUntil([&display_metrics_obtained] { + return display_metrics_obtained.has_value(); + }); + FML_LOG(INFO) << "Got display_width " << display_width_ << " display_height " + << display_height_; + // Instruct Test UI Stack to present parent-view's View. std::optional view_ref_koid; scene_provider_ = @@ -357,30 +363,34 @@ void FlutterEmbedderTest::LaunchParentViewInRealm( }); FML_LOG(INFO) << "Client view has rendered"; - scenic_ = realm_->component().Connect(); + screenshot_ = + realm_->component().Connect(); FML_LOG(INFO) << "Launched parent-view"; } fuchsia_test_utils::Screenshot FlutterEmbedderTest::TakeScreenshot() { FML_LOG(INFO) << "Taking screenshot... "; - fuchsia::ui::scenic::ScreenshotData screenshot_out; - scenic_->TakeScreenshot( - [this, &screenshot_out](fuchsia::ui::scenic::ScreenshotData screenshot, - bool status) { - EXPECT_TRUE(status) << "Failed to take screenshot"; - screenshot_out = std::move(screenshot); - QuitLoop(); - }); + + fuchsia::ui::composition::ScreenshotTakeRequest request; + request.set_format(fuchsia::ui::composition::ScreenshotFormat::BGRA_RAW); + + std::optional response; + screenshot_->Take(std::move(request), [this, &response](auto screenshot) { + response = std::move(screenshot); + QuitLoop(); + }); + EXPECT_FALSE(RunLoopWithTimeout(kScreenshotTimeout)) << "Timed out waiting for screenshot."; FML_LOG(INFO) << "Screenshot captured."; - return fuchsia_test_utils::Screenshot(screenshot_out); + return fuchsia_test_utils::Screenshot( + response->vmo(), display_width_, display_height_, /*display_rotation*/ 0); } bool FlutterEmbedderTest::TakeScreenshotUntil( - fuchsia_test_utils::Color color, - fit::function)> callback, + fuchsia_test_utils::Pixel color, + fit::function)> callback, zx::duration timeout) { return RunLoopWithTimeoutOrUntil( [this, &callback, &color] { @@ -402,7 +412,7 @@ TEST_F(FlutterEmbedderTest, Embedding) { // Take screenshot until we see the child-view's embedded color. ASSERT_TRUE(TakeScreenshotUntil( kChildBackgroundColor, - [](std::map histogram) { + [](std::map histogram) { // Expect parent and child background colors, with parent color > child // color. EXPECT_GT(histogram[kParentBackgroundColor], 0u); @@ -418,10 +428,10 @@ TEST_F(FlutterEmbedderTest, EmbeddingWithOverlay) { // Take screenshot until we see the child-view's embedded color. ASSERT_TRUE(TakeScreenshotUntil( kChildBackgroundColor, - [](std::map histogram) { + [](std::map histogram) { // Expect parent, overlay and child background colors. // With parent color > child color and overlay color > child color. - const size_t overlay_pixel_count = OverlayPixelCount(histogram); + const uint32_t overlay_pixel_count = OverlayPixelCount(histogram); EXPECT_GT(histogram[kParentBackgroundColor], 0u); EXPECT_GT(overlay_pixel_count, 0u); EXPECT_GT(histogram[kChildBackgroundColor], 0u); diff --git a/shell/platform/fuchsia/flutter/tests/integration/embedder/meta/flutter-embedder-test.cml b/shell/platform/fuchsia/flutter/tests/integration/embedder/meta/flutter-embedder-test.cml index 8ff1e67899ae9..e0f267a348d1b 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/embedder/meta/flutter-embedder-test.cml +++ b/shell/platform/fuchsia/flutter/tests/integration/embedder/meta/flutter-embedder-test.cml @@ -32,6 +32,7 @@ "fuchsia.test": { "deprecated-allowed-packages": [ "child-view", + "flatland-scene-manager-test-ui-stack", "oot_flutter_aot_runner", "oot_flutter_jit_runner", "oot_flutter_jit_product_runner", diff --git a/shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart b/shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart index e94bab84a2243..8cb272e34d91b 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart +++ b/shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart @@ -19,20 +19,16 @@ void main(List args) async { args = args + _GetArgsFromConfigFile(); final parser = ArgParser() ..addFlag('showOverlay', defaultsTo: false) - ..addFlag('hitTestable', defaultsTo: true) - ..addFlag('focusable', defaultsTo: true) - ..addFlag('useFlatland', defaultsTo: false); + ..addFlag('focusable', defaultsTo: true); final arguments = parser.parse(args); for (final option in arguments.options) { print('parent-view: $option: ${arguments[option]}'); } TestApp app; - final useFlatland = arguments['useFlatland']; app = TestApp( - ChildView(await _launchChildView(useFlatland)), + ChildView(await _launchChildView()), showOverlay: arguments['showOverlay'], - hitTestable: arguments['hitTestable'], focusable: arguments['focusable'], ); @@ -45,18 +41,16 @@ class TestApp { final ChildView childView; final bool showOverlay; - final bool hitTestable; final bool focusable; Color _backgroundColor = _blue; TestApp(this.childView, {this.showOverlay = false, - this.hitTestable = true, this.focusable = true}) {} void run() { - childView.create(hitTestable, focusable, (ByteData reply) { + childView.create(focusable, (ByteData reply) { // Set up window allbacks. window.onPointerDataPacket = (PointerDataPacket packet) { for (final data in packet.data) { @@ -150,7 +144,7 @@ class ChildView { ChildView(this.viewId); - void create(bool hitTestable, bool focusable, + void create(bool focusable, PlatformMessageResponseCallback callback) { // Construct the dart:ui platform message to create the view, and when the // return callback is invoked, build the scene. At that point, it is safe @@ -159,7 +153,8 @@ class ChildView { final Map args = { 'viewId': viewId, - 'hitTestable': hitTestable, + // Flatland doesn't support disabling hit testing. + 'hitTestable': true, 'focusable': focusable, 'viewOcclusionHintLTRB': [ viewOcclusionHint.left, @@ -182,8 +177,8 @@ class ChildView { } } -Future _launchChildView(bool useFlatland) async { - final message = Int8List.fromList([useFlatland ? 0x31 : 0x30]); +Future _launchChildView() async { + final message = Int8List.fromList([0x31]); final completer = new Completer(); PlatformDispatcher.instance.sendPlatformMessage( 'fuchsia/child_view', ByteData.sublistView(message), (ByteData reply) { diff --git a/shell/platform/fuchsia/flutter/tests/integration/text-input/BUILD.gn b/shell/platform/fuchsia/flutter/tests/integration/text-input/BUILD.gn index b45ea72458b6b..266cb8cd83ab3 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/text-input/BUILD.gn +++ b/shell/platform/fuchsia/flutter/tests/integration/text-input/BUILD.gn @@ -44,9 +44,7 @@ executable("text-input-test-bin") { "//build/fuchsia/fidl:fuchsia.ui.gfx", "//flutter/fml", "//flutter/shell/platform/fuchsia/flutter/tests/integration/utils:check_view", - "//flutter/shell/platform/fuchsia/flutter/tests/integration/utils:color", "//flutter/shell/platform/fuchsia/flutter/tests/integration/utils:portable_ui_test", - "//flutter/shell/platform/fuchsia/flutter/tests/integration/utils:screenshot", "//third_party/googletest:gtest", "//third_party/googletest:gtest_main", ] diff --git a/shell/platform/fuchsia/flutter/tests/integration/touch-input/BUILD.gn b/shell/platform/fuchsia/flutter/tests/integration/touch-input/BUILD.gn index 051fc40bbf33b..03a92db6e3cd8 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/touch-input/BUILD.gn +++ b/shell/platform/fuchsia/flutter/tests/integration/touch-input/BUILD.gn @@ -33,6 +33,7 @@ executable("touch-input-test-bin") { "$fuchsia_sdk_root/fidl:fuchsia.net.interfaces", "$fuchsia_sdk_root/fidl:fuchsia.tracing.provider", "$fuchsia_sdk_root/fidl:fuchsia.ui.app", + "$fuchsia_sdk_root/fidl:fuchsia.ui.display.singleton", "$fuchsia_sdk_root/fidl:fuchsia.ui.input", "$fuchsia_sdk_root/fidl:fuchsia.ui.pointerinjector", "$fuchsia_sdk_root/fidl:fuchsia.ui.policy", diff --git a/shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart b/shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart index 732e422421c33..4f3613427818b 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart +++ b/shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart @@ -20,7 +20,6 @@ void main(List args) async { args = args + _GetArgsFromConfigFile(); final parser = ArgParser() ..addFlag('showOverlay', defaultsTo: false) - ..addFlag('hitTestable', defaultsTo: true) ..addFlag('focusable', defaultsTo: true); final arguments = parser.parse(args); @@ -28,11 +27,9 @@ void main(List args) async { print('embedding-flutter-view args: $option: ${arguments[option]}'); } - // TODO(fxbug.dev/125514): Support Flatland Child View. TestApp app = TestApp( - ChildView(await _launchChildView(false)), + ChildView(await _launchChildView()), showOverlay: arguments['showOverlay'], - hitTestable: arguments['hitTestable'], focusable: arguments['focusable'], ); @@ -45,7 +42,6 @@ class TestApp { final ChildView childView; final bool showOverlay; - final bool hitTestable; final bool focusable; Color _backgroundColor = _blue; @@ -53,12 +49,11 @@ class TestApp { TestApp( this.childView, {this.showOverlay = false, - this.hitTestable = true, this.focusable = true}) { } void run() { - childView.create(hitTestable, focusable, (ByteData reply) { + childView.create(focusable, (ByteData reply) { // Set up window callbacks. window.onPointerDataPacket = (PointerDataPacket packet) { this.pointerDataPacket(packet); @@ -185,7 +180,6 @@ class ChildView { ChildView(this.viewId); void create( - bool hitTestable, bool focusable, PlatformMessageResponseCallback callback) { // Construct the dart:ui platform message to create the view, and when the @@ -194,7 +188,8 @@ class ChildView { final viewOcclusionHint = Rect.zero; final Map args = { 'viewId': viewId, - 'hitTestable': hitTestable, + // Flatland doesn't support disabling hit testing. + 'hitTestable': true, 'focusable': focusable, 'viewOcclusionHintLTRB': [ viewOcclusionHint.left, @@ -220,8 +215,8 @@ class ChildView { } } -Future _launchChildView(bool useFlatland) async { - final message = Int8List.fromList([useFlatland ? 0x31 : 0x30]); +Future _launchChildView() async { + final message = Int8List.fromList([0x31]); final completer = new Completer(); PlatformDispatcher.instance.sendPlatformMessage( 'fuchsia/child_view', ByteData.sublistView(message), (ByteData reply) { diff --git a/shell/platform/fuchsia/flutter/tests/integration/touch-input/meta/touch-input-test.cml b/shell/platform/fuchsia/flutter/tests/integration/touch-input/meta/touch-input-test.cml index a5a34384e000f..613142eae2803 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/touch-input/meta/touch-input-test.cml +++ b/shell/platform/fuchsia/flutter/tests/integration/touch-input/meta/touch-input-test.cml @@ -55,7 +55,6 @@ "fuchsia.test": { "deprecated-allowed-packages": [ "embedding-flutter-view", - "gfx-scene-manager-test-ui-stack", "flatland-scene-manager-test-ui-stack", "oot_flutter_aot_runner", "oot_flutter_jit_runner", diff --git a/shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-test.cc b/shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-test.cc index d9c1f430cfe41..c2f27251c9e66 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-test.cc +++ b/shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-test.cc @@ -14,9 +14,9 @@ #include #include #include +#include #include #include -#include #include #include #include @@ -26,9 +26,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -127,9 +124,6 @@ using RealmBuilder = component_testing::RealmBuilder; // Set this as low as you can that still works across all test platforms. constexpr zx::duration kTimeout = zx::min(1); -constexpr auto kGfxTestUIStackUrl = - "fuchsia-pkg://fuchsia.com/gfx-scene-manager-test-ui-stack#meta/" - "test-ui-stack.cm"; constexpr auto kTestUIStackUrl = "fuchsia-pkg://fuchsia.com/flatland-scene-manager-test-ui-stack#meta/" "test-ui-stack.cm"; @@ -205,9 +199,7 @@ class TouchInputListenerServer events_received_; }; -class FlutterTapTestBase : public PortableUITest, - public ::testing::Test, - public ::testing::WithParamInterface { +class FlutterTapTestBase : public PortableUITest, public ::testing::Test { protected: ~FlutterTapTestBase() override { FML_CHECK(touch_injection_request_count() > 0) @@ -226,17 +218,22 @@ class FlutterTapTestBase : public PortableUITest, }, kTimeout); - // Get the display dimensions. + // Get the display information using the + // |fuchsia.ui.display.singleton.Info|. FML_LOG(INFO) << "Waiting for scenic display info"; - scenic_ = realm_root()->component().Connect(); - scenic_->GetDisplayInfo([this](fuchsia::ui::gfx::DisplayInfo display_info) { - display_width_ = display_info.width_in_px; - display_height_ = display_info.height_in_px; - FML_LOG(INFO) << "Got display_width = " << display_width_ - << " and display_height = " << display_height_; + std::optional display_metrics_obtained; + fuchsia::ui::display::singleton::InfoPtr display_info = + realm_root() + ->component() + .Connect(); + display_info->GetMetrics([this, &display_metrics_obtained](auto info) { + display_width_ = info.extent_in_px().width; + display_height_ = info.extent_in_px().height; + display_metrics_obtained = true; + }); + RunLoopUntil([&display_metrics_obtained] { + return display_metrics_obtained.has_value(); }); - RunLoopUntil( - [this] { return display_width_ != 0 && display_height_ != 0; }); // Register input injection device. FML_LOG(INFO) << "Registering input injection device"; @@ -287,7 +284,7 @@ class FlutterTapTestBase : public PortableUITest, uint32_t display_width() const { return display_width_; } uint32_t display_height() const { return display_height_; } - ParamType GetTestUIStackUrl() override { return GetParam(); }; + std::string GetTestUIStackUrl() override { return kTestUIStackUrl; }; TouchInputListenerServer* touch_input_listener_server_; }; @@ -345,17 +342,22 @@ class FlutterEmbedTapTest : public FlutterTapTestBase { void LaunchClientWithEmbeddedView() { BuildRealm(); - // Get the display dimensions. + // Get the display information using the + // |fuchsia.ui.display.singleton.Info|. FML_LOG(INFO) << "Waiting for scenic display info"; - scenic_ = realm_root()->component().Connect(); - scenic_->GetDisplayInfo([this](fuchsia::ui::gfx::DisplayInfo display_info) { - display_width_ = display_info.width_in_px; - display_height_ = display_info.height_in_px; - FML_LOG(INFO) << "Got display_width = " << display_width_ - << " and display_height = " << display_height_; + std::optional display_metrics_obtained; + fuchsia::ui::display::singleton::InfoPtr display_info = + realm_root() + ->component() + .Connect(); + display_info->GetMetrics([this, &display_metrics_obtained](auto info) { + display_width_ = info.extent_in_px().width; + display_height_ = info.extent_in_px().height; + display_metrics_obtained = true; + }); + RunLoopUntil([&display_metrics_obtained] { + return display_metrics_obtained.has_value(); }); - RunLoopUntil( - [this] { return display_width_ != 0 && display_height_ != 0; }); // Register input injection device. FML_LOG(INFO) << "Registering input injection device"; @@ -424,16 +426,7 @@ class FlutterEmbedTapTest : public FlutterTapTestBase { } }; -// Makes use of gtest's parameterized testing, allowing us -// to test different combinations of test-ui-stack + runners. Currently, there -// are both GFX and Flatland variants. Documentation: -// http://go/gunitadvanced#value-parameterized-tests -INSTANTIATE_TEST_SUITE_P(FlutterTapTestParameterized, - FlutterTapTest, - ::testing::Values(kGfxTestUIStackUrl, - kTestUIStackUrl)); - -TEST_P(FlutterTapTest, FlutterTap) { +TEST_F(FlutterTapTest, FlutterTap) { // Launch client view, and wait until it's rendering to proceed with the test. FML_LOG(INFO) << "Initializing scene"; LaunchClient(); @@ -457,13 +450,7 @@ TEST_P(FlutterTapTest, FlutterTap) { ASSERT_EQ(touch_injection_request_count(), 1); } -// TODO(fxbug.dev/125514): Embedded Child View needs to support Flatland. -// Only test GFX Test UI stack for embedded test cases for now. -INSTANTIATE_TEST_SUITE_P(FlutterEmbedTapTestParameterized, - FlutterEmbedTapTest, - ::testing::Values(kGfxTestUIStackUrl)); - -TEST_P(FlutterEmbedTapTest, FlutterEmbedTap) { +TEST_F(FlutterEmbedTapTest, FlutterEmbedTap) { // Launch view FML_LOG(INFO) << "Initializing scene"; LaunchClientWithEmbeddedView(); @@ -497,29 +484,7 @@ TEST_P(FlutterEmbedTapTest, FlutterEmbedTap) { ASSERT_EQ(touch_injection_request_count(), 2); } -TEST_P(FlutterEmbedTapTest, FlutterEmbedHittestDisabled) { - FML_LOG(INFO) << "Initializing scene"; - AddComponentArgument("--no-hitTestable"); - LaunchClientWithEmbeddedView(); - FML_LOG(INFO) << "Client launched"; - - // Embedded child view takes up the center of the screen - // hitTestable is turned off for the embedded child view - // Expect the parent (embedding-flutter-view) to respond if we inject a tap - // there - InjectTap(0, 0); - RunLoopUntil([this] { - return LastEventReceivedMatches( - /*expected_x=*/static_cast(display_width() / 2.0f), - /*expected_y=*/static_cast(display_height() / 2.0f), - /*component_name=*/"embedding-flutter-view"); - }); - - // There should be 1 injected tap - ASSERT_EQ(touch_injection_request_count(), 1); -} - -TEST_P(FlutterEmbedTapTest, FlutterEmbedOverlayEnabled) { +TEST_F(FlutterEmbedTapTest, FlutterEmbedOverlayEnabled) { FML_LOG(INFO) << "Initializing scene"; AddComponentArgument("--showOverlay"); LaunchClientWithEmbeddedView(); diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/BUILD.gn b/shell/platform/fuchsia/flutter/tests/integration/utils/BUILD.gn index dd4ae203bfd5c..f72e9ffcd676f 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/utils/BUILD.gn +++ b/shell/platform/fuchsia/flutter/tests/integration/utils/BUILD.gn @@ -19,13 +19,6 @@ source_set("check_view") { ] } -source_set("color") { - sources = [ - "color.cc", - "color.h", - ] -} - source_set("screenshot") { sources = [ "screenshot.cc", @@ -33,9 +26,7 @@ source_set("screenshot") { ] deps = [ - ":color", "$fuchsia_sdk_root/fidl:fuchsia.logger", - "$fuchsia_sdk_root/fidl:fuchsia.ui.scenic", "$fuchsia_sdk_root/pkg:zx", "//flutter/fml", ] @@ -50,7 +41,9 @@ source_set("portable_ui_test") { deps = [ ":check_view", + "$fuchsia_sdk_root/fidl:fuchsia.logger", "$fuchsia_sdk_root/fidl:fuchsia.ui.app", + "$fuchsia_sdk_root/fidl:fuchsia.ui.display.singleton", "$fuchsia_sdk_root/fidl:fuchsia.ui.input", "$fuchsia_sdk_root/fidl:fuchsia.ui.observation.geometry", "$fuchsia_sdk_root/fidl:fuchsia.ui.policy", diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/color.cc b/shell/platform/fuchsia/flutter/tests/integration/utils/color.cc deleted file mode 100644 index 818c4c8cc6419..0000000000000 --- a/shell/platform/fuchsia/flutter/tests/integration/utils/color.cc +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "color.h" - -namespace fuchsia_test_utils { - -// RGBA hex dump -std::ostream& operator<<(std::ostream& os, const Color& c) { - char rgba[9] = {}; - snprintf(rgba, (sizeof(rgba) / sizeof(char)), "%02X%02X%02X%02X", c.r, c.g, - c.b, c.a); - return os << rgba; -} - -} // namespace fuchsia_test_utils diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/color.h b/shell/platform/fuchsia/flutter/tests/integration/utils/color.h deleted file mode 100644 index 4cb1c328fe42e..0000000000000 --- a/shell/platform/fuchsia/flutter/tests/integration/utils/color.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_TESTS_INTEGRATION_UTILS_COLOR_H_ -#define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_TESTS_INTEGRATION_UTILS_COLOR_H_ - -#include -#include -#include - -namespace fuchsia_test_utils { - -struct Color { - // Constructor is idiomatic RGBA, but memory layout is native BGRA. - constexpr Color(uint8_t r, uint8_t g, uint8_t b, uint8_t a) - : b(b), g(g), r(r), a(a) {} - - uint8_t b; - uint8_t g; - uint8_t r; - uint8_t a; -}; - -inline bool operator==(const Color& a, const Color& b) { - return a.r == b.r && a.g == b.g && a.b == b.b && a.a == b.a; -} - -inline bool operator<(const Color& a, const Color& b) { - return std::tie(a.r, a.g, a.b, a.a) < std::tie(b.r, b.g, b.b, b.a); -} - -// RGBA hex dump. Note that this differs from the internal BGRA memory layout. -std::ostream& operator<<(std::ostream& os, const Color& c); - -} // namespace fuchsia_test_utils - -#endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_TESTS_INTEGRATION_UTILS_COLOR_H_ diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.cc b/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.cc index e3c9bc06effcd..12984d8b9077b 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.cc +++ b/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.cc @@ -93,6 +93,7 @@ void PortableUITest::SetUpRealmBase() { Protocol{fuchsia::ui::scenic::Scenic::Name_}, Protocol{fuchsia::ui::test::input::Registry::Name_}, Protocol{fuchsia::ui::test::scene::Controller::Name_}, + Protocol{fuchsia::ui::display::singleton::Info::Name_}, Protocol{kPointerInjectorRegistryName}}, .source = kTestUIStackRef, .targets = {ParentRef(), kFlutterJitRunnerRef}}); diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.h b/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.h index 7440dc52aad58..9ee454b50234e 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.h +++ b/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.h @@ -7,6 +7,7 @@ #include #include +#include #include #include #include diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.cc b/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.cc index e3abfb64767e7..6e25e5815fe93 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.cc +++ b/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.cc @@ -4,67 +4,102 @@ #include "screenshot.h" -#include +#include + +#include +#include +#include +#include #include "flutter/fml/logging.h" namespace fuchsia_test_utils { - -Screenshot::Screenshot( - const fuchsia::ui::scenic::ScreenshotData& screenshot_data) - : width_(screenshot_data.info.width), height_(screenshot_data.info.height) { - FML_CHECK(screenshot_data.info.pixel_format == - fuchsia::images::PixelFormat::BGRA_8) - << "Non-BGRA_8 pixel formats not supported"; - - const auto& buffer = screenshot_data.data.vmo; - const auto num_bytes = screenshot_data.data.size; - - data_.resize(num_bytes); - - if (num_bytes == 0) { - return; - } - - zx_status_t status = buffer.read(&data_[0], 0, num_bytes); - if (status < 0) { - FML_LOG(WARNING) << "zx::vmo::read failed " << zx_status_get_string(status); +namespace { +constexpr uint64_t kBytesPerPixel = 4; +} // namespace + +Screenshot::Screenshot(const zx::vmo& screenshot_vmo, + uint64_t width, + uint64_t height, + int rotation) + : width_(width), height_(height) { + FML_CHECK(rotation == 0 || rotation == 90 || rotation == 270); + if (rotation == 90 || rotation == 270) { + std::swap(width_, height_); } + // Populate |screenshot_| from |screenshot_vmo|. + uint64_t vmo_size; + screenshot_vmo.get_prop_content_size(&vmo_size); + FML_CHECK(vmo_size == kBytesPerPixel * width_ * height_); + uint8_t* vmo_host = nullptr; + auto status = zx::vmar::root_self()->map( + ZX_VM_PERM_READ, /*vmar_offset*/ 0, screenshot_vmo, + /*vmo_offset*/ 0, vmo_size, reinterpret_cast(&vmo_host)); + FML_CHECK(status == ZX_OK); + ExtractScreenshotFromVMO(vmo_host); + // map the pointer. + uintptr_t address = reinterpret_cast(vmo_host); + status = zx::vmar::root_self()->unmap(address, vmo_size); + FML_CHECK(status == ZX_OK); } -const Color* Screenshot::operator[](size_t row) const { - return &begin()[row * width_]; +std::ostream& operator<<(std::ostream& stream, const Pixel& pixel) { + return stream << "{Pixel:" + << " r:" << static_cast(pixel.red) + << " g:" << static_cast(pixel.green) + << " b:" << static_cast(pixel.blue) + << " a:" << static_cast(pixel.alpha) << "}"; } -const Color& Screenshot::ColorAt(float x, float y) const { - FML_CHECK(x >= 0 && x < 1 && y >= 0 && y < 1) - << "(" << x << ", " << y << ") is out of bounds [0, 1) x [0, 1)"; - const size_t ix = static_cast(x * static_cast(width_)); - const size_t iy = static_cast(y * static_cast(height_)); - return (*this)[iy][ix]; +Pixel Screenshot::GetPixelAt(uint64_t x, uint64_t y) const { + FML_CHECK(x >= 0 && x < width_ && y >= 0 && y < height_) + << "Index out of bounds"; + return screenshot_[y][x]; } -const Color& Screenshot::ColorAtPixelXY(size_t ix, size_t iy) const { - FML_CHECK(ix < width_ && iy < height_); - return (*this)[iy][ix]; -} - -const Color* Screenshot::begin() const { - return reinterpret_cast(data_.data()); +std::map Screenshot::Histogram() const { + std::map histogram; + FML_CHECK(screenshot_.size() == height_ && screenshot_[0].size() == width_); + for (size_t i = 0; i < height_; i++) { + for (size_t j = 0; j < width_; j++) { + histogram[screenshot_[i][j]]++; + } + } + return histogram; } -const Color* Screenshot::end() const { - return &begin()[width_ * height_]; +void Screenshot::ExtractScreenshotFromVMO(uint8_t* screenshot_vmo) { + FML_CHECK(screenshot_vmo); + for (size_t i = 0; i < height_; i++) { + // The head index of the ith row in the screenshot is |i* width_* + // KbytesPerPixel|. + screenshot_.push_back(GetPixelsInRow(screenshot_vmo, i)); + } } -std::map Screenshot::Histogram() const { - std::map histogram; - - for (const auto color : *this) { - ++histogram[color]; +std::vector Screenshot::GetPixelsInRow(uint8_t* screenshot_vmo, + size_t row_index) { + std::vector row; + for (size_t col_idx = 0; + col_idx < static_cast(width_ * kBytesPerPixel); + col_idx += kBytesPerPixel) { + // Each row in the screenshot has |kBytesPerPixel * width_| elements. + // Therefore in order to reach the first pixel of the |row_index| row, we + // have to jump |row_index * width_ * kBytesPerPixel| positions. + auto pixel_start_index = row_index * width_ * kBytesPerPixel; + // Every |kBytesPerPixel| bytes represents the BGRA values of a pixel. Skip + // |kBytesPerPixel| bytes to get to the BGRA values of the next pixel. Each + // row in a screenshot has |kBytesPerPixel * width_| bytes of data. + // Example:- + // auto data = TakeScreenshot(); + // data[0-3] -> RGBA of pixel 0. + // data[4-7] -> RGBA pf pixel 1. + row.emplace_back(screenshot_vmo[pixel_start_index + col_idx], + screenshot_vmo[pixel_start_index + col_idx + 1], + screenshot_vmo[pixel_start_index + col_idx + 2], + screenshot_vmo[pixel_start_index + col_idx + 3]); } - - return histogram; + return row; } } // namespace fuchsia_test_utils diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.h b/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.h index f2090eb7a4e89..717089d9d9840 100644 --- a/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.h +++ b/shell/platform/fuchsia/flutter/tests/integration/utils/screenshot.h @@ -5,52 +5,106 @@ #ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_TESTS_INTEGRATION_UTILS_SCREENSHOT_H_ #define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_TESTS_INTEGRATION_UTILS_SCREENSHOT_H_ -#include +#include +#include +#include +#include #include -#include #include - -#include "color.h" +#include namespace fuchsia_test_utils { +// Represents a Pixel in BGRA format. +// Uses the sRGB color space. +struct Pixel { + uint8_t blue = 0; + uint8_t green = 0; + uint8_t red = 0; + uint8_t alpha = 0; + + Pixel(uint8_t blue, uint8_t green, uint8_t red, uint8_t alpha) + : blue(blue), green(green), red(red), alpha(alpha) {} + + bool operator==(const Pixel& rhs) const { + return blue == rhs.blue && green == rhs.green && red == rhs.red && + alpha == rhs.alpha; + } + + inline bool operator!=(const Pixel& rhs) const { return !(*this == rhs); } + + bool operator<(const Pixel& other) const { + return std::tie(blue, green, red, alpha) < + std::tie(other.blue, other.green, other.red, other.alpha); + } +}; -/// A screenshot that has been taken from a Fuchsia device. +std::ostream& operator<<(std::ostream& stream, const Pixel& pixel); + +// Helper class to get information about a screenshot returned by +// |fuchsia.ui.composition.Screenshot| protocol. class Screenshot { public: - Screenshot(const fuchsia::ui::scenic::ScreenshotData& screenshot_data); + // BGRA format. + inline static const Pixel kBlack = Pixel(0, 0, 0, 255); + inline static const Pixel kBlue = Pixel(255, 0, 0, 255); + inline static const Pixel kRed = Pixel(0, 0, 255, 255); + inline static const Pixel kMagenta = Pixel(255, 0, 255, 255); + inline static const Pixel kGreen = Pixel(0, 255, 0, 255); - size_t width() const { return width_; } - size_t height() const { return height_; } - bool empty() const { return width_ == 0 || height_ == 0; } + // Params:- + // |screenshot_vmo| - The VMO returned by + // fuchsia.ui.composition.Screenshot.Take representing the screenshot data. + // |width|, |height| - Width and height of the physical display in pixels as + // returned by |fuchsia.ui.display.singleton.Info|. + // |rotation| - The display rotation value in degrees. The width and the + // height of the screenshot are flipped if this value is 90 or 270 degrees, + // as the screenshot shows how content is seen by the user. + Screenshot(const zx::vmo& screenshot_vmo, + uint64_t width, + uint64_t height, + int rotation); - // Notably the indexer behaves like a row-major matrix, whereas the iterator - // behaves like a flat array. *IMPORTANT*: Use caution because index values - // are not validated, and out of bounds indexes can introduce memory errors. - // Also when indexing a specific pixel with |screenshot[a][b]|, note that - // the order of the indexes is non-traditional. The first index is for the - // |y| position (the row), followed by the |x| position. Consider using - // |ColorAtPixelXY()| instead. - const Color* operator[](size_t row) const; + // Returns the |Pixel| located at (x,y) coordinates. |x| and |y| should range + // from [0,width_) and [0,height_) respectively. + // + // (0,0)________________width_____________(w-1,0) + // | | | + // | | y |h + // | x | |e + // |-----------------------X |i + // | |g + // | |h + // | |t + // |_________________________________| + // (0,h-1) screenshot (w-1,h-1) + // + // Clients should only use this function to get the pixel data. + Pixel GetPixelAt(uint64_t x, uint64_t y) const; - // Coordinates are in the range [0, 1). - const Color& ColorAt(float x, float y) const; + // Counts the frequencies of each color in a screenshot. + std::map Histogram() const; - // Returns the color of a pixel at the integer x and y indexes, after - // asserting that the indexes are in range. - const Color& ColorAtPixelXY(size_t ix, size_t iy) const; + // Returns a 2D vector of size |height_ * width_|. Each value in the vector + // corresponds to a pixel in the screenshot. + std::vector> screenshot() const { return screenshot_; } - // Notably the iterator behaves like a flat array, whereas the indexer behaves - // like a row-major matrix. - const Color* begin() const; - const Color* end() const; + uint64_t width() const { return width_; } - // Counts the frequencies of each color in a screenshot. - std::map Histogram() const; + uint64_t height() const { return height_; } private: - const size_t width_, height_; - std::vector data_; + // Populates |screenshot_| by converting the linear array of bytes in + // |screenshot_vmo| of size |kBytesPerPixel * width_ * height_| to a 2D vector + // of |Pixel|s of size |height_ * width_|. + void ExtractScreenshotFromVMO(uint8_t* screenshot_vmo); + + // Returns the |Pixel|s in the |row_index| row of the screenshot. + std::vector GetPixelsInRow(uint8_t* screenshot_vmo, size_t row_index); + + uint64_t width_ = 0; + uint64_t height_ = 0; + std::vector> screenshot_; }; } // namespace fuchsia_test_utils From 1db007bf62b442df513088fd2677ad2c97cf02a2 Mon Sep 17 00:00:00 2001 From: Brandon DeRosier Date: Mon, 17 Jul 2023 10:41:38 -0700 Subject: [PATCH 099/211] [Impeller] Correct coverage hint usage in PipelineBlend (#43708) Resolves https://github.com/flutter/flutter/issues/130411. The remaining difference in appearance is due to https://github.com/flutter/flutter/issues/127770 -- Impeller's blurs skew too large. Before: ![Screen Shot 2023-07-14 at 3 36 02 PM](https://github.com/flutter/engine/assets/919017/54ad62ed-f091-4489-a346-a0e7580ed2f0) After: ![Screen Shot 2023-07-14 at 3 22 25 PM](https://github.com/flutter/engine/assets/919017/252ac8bb-4a09-4c96-a405-5ddbb3ba6851) --- impeller/aiks/aiks_unittests.cc | 21 ++++++ .../contents/filters/blend_filter_contents.cc | 65 ++++++++++++------- 2 files changed, 62 insertions(+), 24 deletions(-) diff --git a/impeller/aiks/aiks_unittests.cc b/impeller/aiks/aiks_unittests.cc index b0a279eec3d05..888617e7fcae7 100644 --- a/impeller/aiks/aiks_unittests.cc +++ b/impeller/aiks/aiks_unittests.cc @@ -2984,6 +2984,27 @@ TEST_P(AiksTest, DrawScaledTextWithPerspectiveSaveLayer) { ASSERT_TRUE(RenderTextInCanvas(GetContext(), canvas, "Hello world", "Roboto-Regular.ttf")); +} + +TEST_P(AiksTest, PipelineBlendSingleParameter) { + Canvas canvas; + + // Should render a green square in the middle of a blue circle. + canvas.SaveLayer({}); + { + canvas.Translate(Point(100, 100)); + canvas.DrawCircle(Point(200, 200), 200, {.color = Color::Blue()}); + canvas.ClipRect(Rect(100, 100, 200, 200)); + canvas.DrawCircle( + Point(200, 200), 200, + {.color = Color::Green(), + .blend_mode = BlendMode::kSourceOver, + .image_filter = [](const FilterInput::Ref& input, + const Matrix& effect_transform, bool is_subpass) { + return ColorFilterContents::MakeBlend(BlendMode::kSource, {input}); + }}); + canvas.Restore(); + } ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); } diff --git a/impeller/entity/contents/filters/blend_filter_contents.cc b/impeller/entity/contents/filters/blend_filter_contents.cc index 2c3961ca4e27e..11f175bc0b593 100644 --- a/impeller/entity/contents/filters/blend_filter_contents.cc +++ b/impeller/entity/contents/filters/blend_filter_contents.cc @@ -91,6 +91,21 @@ static std::optional AdvancedBlend( src_uvs = maybe_src_uvs.value(); } + Rect subpass_coverage = coverage; + if (entity.GetContents()) { + auto coverage_hint = entity.GetContents()->GetCoverageHint(); + + if (coverage_hint.has_value()) { + auto maybe_subpass_coverage = + subpass_coverage.Intersection(*coverage_hint); + if (!maybe_subpass_coverage.has_value()) { + return std::nullopt; // Nothing to render. + } + + subpass_coverage = *maybe_subpass_coverage; + } + } + //---------------------------------------------------------------------------- /// Render to texture. /// @@ -159,7 +174,9 @@ static std::optional AdvancedBlend( auto blend_uniform = host_buffer.EmplaceUniform(blend_info); FS::BindBlendInfo(cmd, blend_uniform); - frame_info.mvp = Matrix::MakeOrthographic(size); + frame_info.mvp = + Matrix::MakeOrthographic(size) * + Matrix::MakeTranslation(coverage.origin - subpass_coverage.origin); auto uniform_view = host_buffer.EmplaceUniform(frame_info); VS::BindFrameInfo(cmd, uniform_view); @@ -168,22 +185,15 @@ static std::optional AdvancedBlend( return true; }; - auto subpass_size = ISize(coverage.size); - if (entity.GetContents()) { - auto coverage_hint = entity.GetContents()->GetCoverageHint(); - if (coverage_hint.has_value()) { - subpass_size = subpass_size.Min(ISize(coverage_hint->size)); - } - } - auto out_texture = - renderer.MakeSubpass("Advanced Blend Filter", subpass_size, callback); + auto out_texture = renderer.MakeSubpass( + "Advanced Blend Filter", ISize(subpass_coverage.size), callback); if (!out_texture) { return std::nullopt; } return Entity::FromSnapshot( Snapshot{.texture = out_texture, - .transform = Matrix::MakeTranslation(coverage.origin), + .transform = Matrix::MakeTranslation(subpass_coverage.origin), // Since we absorbed the transform of the inputs and used the // respective snapshot sampling modes when blending, pass on // the default NN clamp sampler. @@ -498,7 +508,22 @@ static std::optional PipelineBlend( auto dst_snapshot = inputs[0]->GetSnapshot("PipelineBlend(Dst)", renderer, entity); if (!dst_snapshot.has_value()) { - return std::nullopt; + return std::nullopt; // Nothing to render. + } + + Rect subpass_coverage = coverage; + if (entity.GetContents()) { + auto coverage_hint = entity.GetContents()->GetCoverageHint(); + + if (coverage_hint.has_value()) { + auto maybe_subpass_coverage = + subpass_coverage.Intersection(*coverage_hint); + if (!maybe_subpass_coverage.has_value()) { + return std::nullopt; // Nothing to render. + } + + subpass_coverage = *maybe_subpass_coverage; + } } ContentContext::SubpassCallback callback = [&](const ContentContext& renderer, @@ -538,8 +563,7 @@ static std::optional PipelineBlend( VS::FrameInfo frame_info; frame_info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * - Matrix::MakeTranslation( - -input->GetCoverage().value_or(coverage).origin) * + Matrix::MakeTranslation(-subpass_coverage.origin) * input->transform; frame_info.texture_sampler_y_coord_scale = input->texture->GetYCoordScale(); @@ -595,15 +619,8 @@ static std::optional PipelineBlend( return true; }; - auto subpass_size = ISize(coverage.size); - if (entity.GetContents()) { - auto coverage_hint = entity.GetContents()->GetCoverageHint(); - if (coverage_hint.has_value()) { - subpass_size = subpass_size.Min(ISize(coverage_hint->size)); - } - } - auto out_texture = - renderer.MakeSubpass("Pipeline Blend Filter", subpass_size, callback); + auto out_texture = renderer.MakeSubpass( + "Pipeline Blend Filter", ISize(subpass_coverage.size), callback); if (!out_texture) { return std::nullopt; @@ -611,7 +628,7 @@ static std::optional PipelineBlend( return Entity::FromSnapshot( Snapshot{.texture = out_texture, - .transform = Matrix::MakeTranslation(coverage.origin), + .transform = Matrix::MakeTranslation(subpass_coverage.origin), // Since we absorbed the transform of the inputs and used the // respective snapshot sampling modes when blending, pass on // the default NN clamp sampler. From 6bf697c11cdae51c4828f189faf45ead2176ae9c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 13:48:50 -0400 Subject: [PATCH 100/211] Roll Skia from dc93f341ec38 to b25cd035db06 (2 revisions) (#43740) https://skia.googlesource.com/skia.git/+log/dc93f341ec38..b25cd035db06 2023-07-17 armansito@google.com [bazel][mac] Define toolchain for x64->arm64 cross-compilation 2023-07-17 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from fd07bdfdaf46 to a426452b5463 (1 revision) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 1eec5a48eecfe..0ac806bf15cc2 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'dc93f341ec38b6ecfd24dafabe3bea4e84c57dd0', + 'skia_revision': 'b25cd035db06611faea1d6b01720f0db6954fa29', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From c4ff233c5caacdb1796320e1e8fdb58ee42170df Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 14:38:55 -0400 Subject: [PATCH 101/211] Roll Skia from b25cd035db06 to f0e1963324eb (2 revisions) (#43741) https://skia.googlesource.com/skia.git/+log/b25cd035db06..f0e1963324eb 2023-07-17 johnstiles@google.com Allow non-uniform derivatives in WGSL code. 2023-07-17 kjlubick@google.com Add Vello Jobs If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0ac806bf15cc2..a406017924bc3 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b25cd035db06611faea1d6b01720f0db6954fa29', + 'skia_revision': 'f0e1963324eb964b0fb85b3637ab3201761dbb93', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6715cc8c2f74e..314bf9983a120 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 53dba6cb422a2f1e3fd3fb1b130f17b8 +Signature: b213945b9f3561f05adb7dc62b7e33d9 ==================================================================================================== LIBRARY: etc1 From a3d2cee8c72676b47764f4f96503cd03c9432c8c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 15:23:05 -0400 Subject: [PATCH 102/211] Roll Skia from f0e1963324eb to f29d58569c67 (4 revisions) (#43744) https://skia.googlesource.com/skia.git/+log/f0e1963324eb..f29d58569c67 2023-07-17 herb@google.com Check bounds on TDArray 2023-07-17 cmumford@google.com [canvaskit] Fix integer size warning 2023-07-17 kjlubick@google.com Decouple SkSpecialImage from Ganesh and Graphite 2023-07-17 michaelludwig@google.com [skif] Check that periodic tiling can be represented by floats If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a406017924bc3..dee0cf31545a3 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'f0e1963324eb964b0fb85b3637ab3201761dbb93', + 'skia_revision': 'f29d58569c67a762f6d607fc915c6ee5cf04c464', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 314bf9983a120..a4a2b6a9326dc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b213945b9f3561f05adb7dc62b7e33d9 +Signature: 139c2ea8030a284415c4bb33121ecd75 ==================================================================================================== LIBRARY: etc1 From b2e4cd16ad45e5ea1a4a78ab77a61bf4ea92116f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 16:02:51 -0400 Subject: [PATCH 103/211] Roll Dart SDK from c1bfb2689f6f to 78c9ac730629 (1 revision) (#43745) https://dart.googlesource.com/sdk.git/+log/c1bfb2689f6f..78c9ac730629 2023-07-17 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-319.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index dee0cf31545a3..54c2c026cc8c0 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'c1bfb2689f6f153d0205f43b45d3738b2fd1d877', + 'dart_revision': '78c9ac730629bc35e62491940049a233be0eb848', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 44b1179d00d8a20c667f77578ea199695bc227ea Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 16:11:14 -0400 Subject: [PATCH 104/211] Roll Skia from f29d58569c67 to f2a4222bb72e (1 revision) (#43746) https://skia.googlesource.com/skia.git/+log/f29d58569c67..f2a4222bb72e 2023-07-17 jamesgk@google.com [graphite] Reject creation of too-large TextureProxies If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 54c2c026cc8c0..0f41cf80d3ca8 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'f29d58569c67a762f6d607fc915c6ee5cf04c464', + 'skia_revision': 'f2a4222bb72e7a4bfd11f865b30ada7752ec383a', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a4a2b6a9326dc..ed291a76378e4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 139c2ea8030a284415c4bb33121ecd75 +Signature: 23f16e909e48918e0b2c2c2f2a08ca70 ==================================================================================================== LIBRARY: etc1 From 3be77dcf6b9f7ba20d3a02343485ec60a4d666e2 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Mon, 17 Jul 2023 14:02:00 -0700 Subject: [PATCH 105/211] Move Dart licenses into a separate golden file (#43289) This will avoid conflicts between Dart rolls and rolls of other third party components such as ANGLE. --- ci/licenses_golden/excluded_files | 1 + ci/licenses_golden/licenses_dart | 4828 +++++++++++++++++++++++ ci/licenses_golden/licenses_third_party | 4527 +-------------------- ci/licenses_golden/tool_signature | 2 +- tools/licenses/lib/main.dart | 7 +- 5 files changed, 4838 insertions(+), 4527 deletions(-) create mode 100644 ci/licenses_golden/licenses_dart diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index 923a35020a2e6..abf721a49d9c2 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -1480,6 +1480,7 @@ ../../../third_party/colorama/src/requirements.txt ../../../third_party/colorama/src/screenshots ../../../third_party/colorama/src/setup.py +../../../third_party/dart ../../../third_party/dart/.clang-format ../../../third_party/dart/.dart_tool ../../../third_party/dart/.git diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart new file mode 100644 index 0000000000000..cfffe2ef02658 --- /dev/null +++ b/ci/licenses_golden/licenses_dart @@ -0,0 +1,4828 @@ +Signature: d47bee3faca906ba1fa0dfe3801b7d57 + +==================================================================================================== +LIBRARY: dart +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/common/builtin_clock.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/clock_snapshot.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/interned_data/interned_data.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_common.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_packet.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace_packet.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/debug_annotation.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/process_descriptor.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/thread_descriptor.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_descriptor.proto +ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_event.proto +TYPE: LicenseType.apache +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/common/builtin_clock.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/clock_snapshot.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/interned_data/interned_data.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_common.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_packet.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace_packet.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/debug_annotation.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/process_descriptor.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/thread_descriptor.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_descriptor.proto +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_event.proto +---------------------------------------------------------------------------------------------------- +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/bigint_patch.dart +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bigint_patch.dart +TYPE: LicenseType.mit +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/bigint_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bigint_patch.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2003-2005 Tom Wu +Copyright (c) 2012 Adam Singer (adam@solvr.io) +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, +EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY +WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, +INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF +THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +In addition, the following condition applies: + +All redistributions must retain an intact copy of this copyright notice +and disclaimer. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/platform/splay-tree-inl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/splay-tree.h + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/platform/splay-tree-inl.h +FILE: ../../../third_party/dart/runtime/platform/splay-tree.h +---------------------------------------------------------------------------------------------------- +Copyright (c) 2010, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/snapshot_empty.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/snapshot_in.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/dart_tools_api.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/double.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/math.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/mirrors.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/object.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/string.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bitfield.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_impl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart_entry.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart_entry.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/debugger_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/debugger_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/debugger_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/double_conversion.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/double_conversion.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/exceptions.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/exceptions.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/handle_visitor.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/handles.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/freelist.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/marker.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/marker.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/pages.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/scavenger.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/sweeper.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/sweeper.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/verifier.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/longjump.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/memory_region.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/message.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/message.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/message_handler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/message_handler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_entry.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_entry.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_function.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/port.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/resolver.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/resolver.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_list.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stub_code.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/timer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/timer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/token.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/unicode_data.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/visitor.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/queue.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/comparable.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/date_time.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/duration.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/function.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/iterable.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/pattern.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/set.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/stopwatch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/string_buffer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/device.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/filtered_element_list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/lists.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/iterable.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/sort.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/snapshot_empty.cc +FILE: ../../../third_party/dart/runtime/bin/snapshot_in.cc +FILE: ../../../third_party/dart/runtime/include/dart_tools_api.h +FILE: ../../../third_party/dart/runtime/lib/double.cc +FILE: ../../../third_party/dart/runtime/lib/math.cc +FILE: ../../../third_party/dart/runtime/lib/mirrors.h +FILE: ../../../third_party/dart/runtime/lib/object.cc +FILE: ../../../third_party/dart/runtime/lib/string.cc +FILE: ../../../third_party/dart/runtime/vm/bitfield.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.h +FILE: ../../../third_party/dart/runtime/vm/cpu_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/dart.h +FILE: ../../../third_party/dart/runtime/vm/dart_api_impl.h +FILE: ../../../third_party/dart/runtime/vm/dart_entry.cc +FILE: ../../../third_party/dart/runtime/vm/dart_entry.h +FILE: ../../../third_party/dart/runtime/vm/debugger_arm.cc +FILE: ../../../third_party/dart/runtime/vm/debugger_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/debugger_x64.cc +FILE: ../../../third_party/dart/runtime/vm/double_conversion.cc +FILE: ../../../third_party/dart/runtime/vm/double_conversion.h +FILE: ../../../third_party/dart/runtime/vm/exceptions.cc +FILE: ../../../third_party/dart/runtime/vm/exceptions.h +FILE: ../../../third_party/dart/runtime/vm/handle_visitor.h +FILE: ../../../third_party/dart/runtime/vm/handles.h +FILE: ../../../third_party/dart/runtime/vm/heap/freelist.cc +FILE: ../../../third_party/dart/runtime/vm/heap/marker.cc +FILE: ../../../third_party/dart/runtime/vm/heap/marker.h +FILE: ../../../third_party/dart/runtime/vm/heap/pages.h +FILE: ../../../third_party/dart/runtime/vm/heap/scavenger.cc +FILE: ../../../third_party/dart/runtime/vm/heap/sweeper.cc +FILE: ../../../third_party/dart/runtime/vm/heap/sweeper.h +FILE: ../../../third_party/dart/runtime/vm/heap/verifier.h +FILE: ../../../third_party/dart/runtime/vm/longjump.cc +FILE: ../../../third_party/dart/runtime/vm/memory_region.cc +FILE: ../../../third_party/dart/runtime/vm/message.cc +FILE: ../../../third_party/dart/runtime/vm/message.h +FILE: ../../../third_party/dart/runtime/vm/message_handler.cc +FILE: ../../../third_party/dart/runtime/vm/message_handler.h +FILE: ../../../third_party/dart/runtime/vm/native_entry.cc +FILE: ../../../third_party/dart/runtime/vm/native_entry.h +FILE: ../../../third_party/dart/runtime/vm/native_function.h +FILE: ../../../third_party/dart/runtime/vm/os.h +FILE: ../../../third_party/dart/runtime/vm/port.h +FILE: ../../../third_party/dart/runtime/vm/resolver.cc +FILE: ../../../third_party/dart/runtime/vm/resolver.h +FILE: ../../../third_party/dart/runtime/vm/runtime_entry.cc +FILE: ../../../third_party/dart/runtime/vm/runtime_entry.h +FILE: ../../../third_party/dart/runtime/vm/runtime_entry_arm.cc +FILE: ../../../third_party/dart/runtime/vm/runtime_entry_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/runtime_entry_list.h +FILE: ../../../third_party/dart/runtime/vm/runtime_entry_x64.cc +FILE: ../../../third_party/dart/runtime/vm/stack_frame.h +FILE: ../../../third_party/dart/runtime/vm/stub_code.h +FILE: ../../../third_party/dart/runtime/vm/timer.cc +FILE: ../../../third_party/dart/runtime/vm/timer.h +FILE: ../../../third_party/dart/runtime/vm/token.cc +FILE: ../../../third_party/dart/runtime/vm/unicode_data.cc +FILE: ../../../third_party/dart/runtime/vm/visitor.h +FILE: ../../../third_party/dart/sdk/lib/collection/queue.dart +FILE: ../../../third_party/dart/sdk/lib/core/comparable.dart +FILE: ../../../third_party/dart/sdk/lib/core/date_time.dart +FILE: ../../../third_party/dart/sdk/lib/core/duration.dart +FILE: ../../../third_party/dart/sdk/lib/core/function.dart +FILE: ../../../third_party/dart/sdk/lib/core/iterable.dart +FILE: ../../../third_party/dart/sdk/lib/core/map.dart +FILE: ../../../third_party/dart/sdk/lib/core/pattern.dart +FILE: ../../../third_party/dart/sdk/lib/core/set.dart +FILE: ../../../third_party/dart/sdk/lib/core/stopwatch.dart +FILE: ../../../third_party/dart/sdk/lib/core/string_buffer.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/device.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/filtered_element_list.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/lists.dart +FILE: ../../../third_party/dart/sdk/lib/internal/iterable.dart +FILE: ../../../third_party/dart/sdk/lib/internal/sort.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/builtin.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/builtin.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/builtin_gen_snapshot.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/builtin_in.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/builtin_natives.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/crashpad.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/crypto.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/crypto.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/crypto_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/crypto_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/crypto_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/crypto_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/dartutils.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/dartutils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/directory.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/directory.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/directory_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/directory_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/directory_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/directory_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_android.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_linux.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_macos.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_win.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/fdutils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/fdutils_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/fdutils_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/fdutils_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/fdutils_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/io_buffer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/io_buffer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/io_natives.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/isolate_data.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/lockers.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/main.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/main_impl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/process.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/process_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/process_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/process_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/process_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/run_vm_tests.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_unsupported.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_android.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_linux.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_macos.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_win.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_android.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_linux.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_macos.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_win.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/utils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/utils_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/utils_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/utils_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/utils_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/utils_win.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/dart_api.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/array.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/bool.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/date.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/errors.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/function.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/growable_array.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/identical.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/integers.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/isolate.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/mirrors.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/regexp.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/stopwatch.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/assert.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/assert.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/floating_point.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/floating_point_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/floating_point_win.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/globals.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/hashmap.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/hashmap.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/syslog.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/syslog_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/syslog_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/syslog_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/syslog_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/text_buffer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/text_buffer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/unicode.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/unicode.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_android.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_linux.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_macos.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_win.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/allocation.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/base_isolate.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bit_set.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bit_vector.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bit_vector.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bitmap.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bitmap.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/boolfield.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bootstrap.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bootstrap.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bootstrap_natives.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bootstrap_natives.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/class_finalizer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/class_table.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/class_table.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_descriptors.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_descriptors.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_observers.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_observers.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/aot_call_specializer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_base.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_x86.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/object_pool_builder.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/constant_propagator.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_printer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_printer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/inliner.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/cha.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/cha.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/flow_graph_builder.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/flow_graph_builder.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/intrinsifier.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/intrinsifier.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/jit/compiler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/jit/compiler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_message.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_state.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/datastream.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/debugger.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/debugger.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/double_internals.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/flag_list.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/flags.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/flags.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/globals.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/growable_array.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/handles.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/handles_impl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/hash_map.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/freelist.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/heap.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/heap.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/pages.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/pointer_block.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/pointer_block.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/scavenger.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/verifier.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_ia32.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_x64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/lockers.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/megamorphic_cache_table.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/megamorphic_cache_table.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/memory_region.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_arguments.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_message_handler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_message_handler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_set.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_store.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_android.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_linux.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_macos.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_win.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/parser.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/parser.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/port.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/proccpuinfo.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/proccpuinfo.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/raw_object.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/raw_object.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/scopes.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/scopes.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/snapshot.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/snapshot.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stub_code.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/symbols.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/symbols.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_pool.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_pool.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/token.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/unicode.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/version.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/version_in.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_posix.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/zone.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/zone.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/crypto.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_date.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/interceptors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_array.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_number.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_string.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/native_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/string_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/async_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/bigint_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/constant_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/core_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/foreign_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/interceptors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/isolate_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_array.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_number.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_string.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/math_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/native_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/regexp_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/string_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/builtin.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/common_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/directory_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/eventhandler_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/file_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/platform_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/secure_socket_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/array.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/double.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/double_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/empty_source.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/errors_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/expando_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/function_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/growable_array.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/identical_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/immutable_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/integers.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/isolate_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/math_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirrors_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirrors_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/object_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/print_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/regexp_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/stopwatch_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/string_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timer_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/type_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/weak_property.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/array_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bool_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/date_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/integers_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/map_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/string_buffer_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/async.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/async_error.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/broadcast_stream_controller.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/future.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/future_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/stream_controller.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/stream_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/stream_pipe.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/timer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/collection.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/iterable.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/iterator.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/maps.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/splay_tree.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/bool.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/core.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/double.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/errors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/exceptions.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/identical.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/int.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/invocation.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/iterator.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/num.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/print.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/regexp.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/string.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/type.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/uri.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/weak.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/dartium/nativewrappers.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/conversions.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/css_class_set.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/html_common_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/metadata.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/async_cast.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/cast.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/internal.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/common.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/directory.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/directory_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/eventhandler.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/io.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/platform.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/platform_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/secure_server_socket.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/isolate/isolate.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/math/math.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/math/random.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/svg/dart2js/svg_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/builtin.cc +FILE: ../../../third_party/dart/runtime/bin/builtin.h +FILE: ../../../third_party/dart/runtime/bin/builtin_gen_snapshot.cc +FILE: ../../../third_party/dart/runtime/bin/builtin_in.cc +FILE: ../../../third_party/dart/runtime/bin/builtin_natives.cc +FILE: ../../../third_party/dart/runtime/bin/crashpad.cc +FILE: ../../../third_party/dart/runtime/bin/crypto.cc +FILE: ../../../third_party/dart/runtime/bin/crypto.h +FILE: ../../../third_party/dart/runtime/bin/crypto_android.cc +FILE: ../../../third_party/dart/runtime/bin/crypto_linux.cc +FILE: ../../../third_party/dart/runtime/bin/crypto_macos.cc +FILE: ../../../third_party/dart/runtime/bin/crypto_win.cc +FILE: ../../../third_party/dart/runtime/bin/dartutils.cc +FILE: ../../../third_party/dart/runtime/bin/dartutils.h +FILE: ../../../third_party/dart/runtime/bin/directory.cc +FILE: ../../../third_party/dart/runtime/bin/directory.h +FILE: ../../../third_party/dart/runtime/bin/directory_android.cc +FILE: ../../../third_party/dart/runtime/bin/directory_linux.cc +FILE: ../../../third_party/dart/runtime/bin/directory_macos.cc +FILE: ../../../third_party/dart/runtime/bin/directory_win.cc +FILE: ../../../third_party/dart/runtime/bin/eventhandler.cc +FILE: ../../../third_party/dart/runtime/bin/eventhandler.h +FILE: ../../../third_party/dart/runtime/bin/eventhandler_android.cc +FILE: ../../../third_party/dart/runtime/bin/eventhandler_android.h +FILE: ../../../third_party/dart/runtime/bin/eventhandler_linux.cc +FILE: ../../../third_party/dart/runtime/bin/eventhandler_linux.h +FILE: ../../../third_party/dart/runtime/bin/eventhandler_macos.cc +FILE: ../../../third_party/dart/runtime/bin/eventhandler_macos.h +FILE: ../../../third_party/dart/runtime/bin/eventhandler_win.h +FILE: ../../../third_party/dart/runtime/bin/fdutils.h +FILE: ../../../third_party/dart/runtime/bin/fdutils_android.cc +FILE: ../../../third_party/dart/runtime/bin/fdutils_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/fdutils_linux.cc +FILE: ../../../third_party/dart/runtime/bin/fdutils_macos.cc +FILE: ../../../third_party/dart/runtime/bin/file_android.cc +FILE: ../../../third_party/dart/runtime/bin/file_linux.cc +FILE: ../../../third_party/dart/runtime/bin/file_macos.cc +FILE: ../../../third_party/dart/runtime/bin/file_win.cc +FILE: ../../../third_party/dart/runtime/bin/io_buffer.cc +FILE: ../../../third_party/dart/runtime/bin/io_buffer.h +FILE: ../../../third_party/dart/runtime/bin/io_natives.h +FILE: ../../../third_party/dart/runtime/bin/isolate_data.h +FILE: ../../../third_party/dart/runtime/bin/lockers.h +FILE: ../../../third_party/dart/runtime/bin/main.cc +FILE: ../../../third_party/dart/runtime/bin/main_impl.cc +FILE: ../../../third_party/dart/runtime/bin/platform.cc +FILE: ../../../third_party/dart/runtime/bin/platform.h +FILE: ../../../third_party/dart/runtime/bin/platform_android.cc +FILE: ../../../third_party/dart/runtime/bin/platform_linux.cc +FILE: ../../../third_party/dart/runtime/bin/platform_macos.cc +FILE: ../../../third_party/dart/runtime/bin/platform_win.cc +FILE: ../../../third_party/dart/runtime/bin/process.h +FILE: ../../../third_party/dart/runtime/bin/process_android.cc +FILE: ../../../third_party/dart/runtime/bin/process_linux.cc +FILE: ../../../third_party/dart/runtime/bin/process_macos.cc +FILE: ../../../third_party/dart/runtime/bin/process_win.cc +FILE: ../../../third_party/dart/runtime/bin/run_vm_tests.cc +FILE: ../../../third_party/dart/runtime/bin/secure_socket_unsupported.cc +FILE: ../../../third_party/dart/runtime/bin/socket_android.cc +FILE: ../../../third_party/dart/runtime/bin/socket_base_android.h +FILE: ../../../third_party/dart/runtime/bin/socket_base_linux.h +FILE: ../../../third_party/dart/runtime/bin/socket_base_macos.h +FILE: ../../../third_party/dart/runtime/bin/socket_base_win.h +FILE: ../../../third_party/dart/runtime/bin/thread.h +FILE: ../../../third_party/dart/runtime/bin/thread_android.cc +FILE: ../../../third_party/dart/runtime/bin/thread_android.h +FILE: ../../../third_party/dart/runtime/bin/thread_linux.cc +FILE: ../../../third_party/dart/runtime/bin/thread_linux.h +FILE: ../../../third_party/dart/runtime/bin/thread_macos.cc +FILE: ../../../third_party/dart/runtime/bin/thread_macos.h +FILE: ../../../third_party/dart/runtime/bin/thread_win.cc +FILE: ../../../third_party/dart/runtime/bin/thread_win.h +FILE: ../../../third_party/dart/runtime/bin/utils.h +FILE: ../../../third_party/dart/runtime/bin/utils_android.cc +FILE: ../../../third_party/dart/runtime/bin/utils_linux.cc +FILE: ../../../third_party/dart/runtime/bin/utils_macos.cc +FILE: ../../../third_party/dart/runtime/bin/utils_win.cc +FILE: ../../../third_party/dart/runtime/bin/utils_win.h +FILE: ../../../third_party/dart/runtime/include/dart_api.h +FILE: ../../../third_party/dart/runtime/lib/array.cc +FILE: ../../../third_party/dart/runtime/lib/bool.cc +FILE: ../../../third_party/dart/runtime/lib/date.cc +FILE: ../../../third_party/dart/runtime/lib/errors.cc +FILE: ../../../third_party/dart/runtime/lib/function.cc +FILE: ../../../third_party/dart/runtime/lib/growable_array.cc +FILE: ../../../third_party/dart/runtime/lib/identical.cc +FILE: ../../../third_party/dart/runtime/lib/integers.cc +FILE: ../../../third_party/dart/runtime/lib/isolate.cc +FILE: ../../../third_party/dart/runtime/lib/mirrors.cc +FILE: ../../../third_party/dart/runtime/lib/regexp.cc +FILE: ../../../third_party/dart/runtime/lib/stopwatch.cc +FILE: ../../../third_party/dart/runtime/platform/assert.cc +FILE: ../../../third_party/dart/runtime/platform/assert.h +FILE: ../../../third_party/dart/runtime/platform/floating_point.h +FILE: ../../../third_party/dart/runtime/platform/floating_point_win.cc +FILE: ../../../third_party/dart/runtime/platform/floating_point_win.h +FILE: ../../../third_party/dart/runtime/platform/globals.h +FILE: ../../../third_party/dart/runtime/platform/hashmap.cc +FILE: ../../../third_party/dart/runtime/platform/hashmap.h +FILE: ../../../third_party/dart/runtime/platform/syslog.h +FILE: ../../../third_party/dart/runtime/platform/syslog_android.cc +FILE: ../../../third_party/dart/runtime/platform/syslog_linux.cc +FILE: ../../../third_party/dart/runtime/platform/syslog_macos.cc +FILE: ../../../third_party/dart/runtime/platform/syslog_win.cc +FILE: ../../../third_party/dart/runtime/platform/text_buffer.cc +FILE: ../../../third_party/dart/runtime/platform/text_buffer.h +FILE: ../../../third_party/dart/runtime/platform/unicode.cc +FILE: ../../../third_party/dart/runtime/platform/unicode.h +FILE: ../../../third_party/dart/runtime/platform/utils.cc +FILE: ../../../third_party/dart/runtime/platform/utils.h +FILE: ../../../third_party/dart/runtime/platform/utils_android.cc +FILE: ../../../third_party/dart/runtime/platform/utils_android.h +FILE: ../../../third_party/dart/runtime/platform/utils_linux.cc +FILE: ../../../third_party/dart/runtime/platform/utils_linux.h +FILE: ../../../third_party/dart/runtime/platform/utils_macos.cc +FILE: ../../../third_party/dart/runtime/platform/utils_macos.h +FILE: ../../../third_party/dart/runtime/platform/utils_win.cc +FILE: ../../../third_party/dart/runtime/platform/utils_win.h +FILE: ../../../third_party/dart/runtime/vm/allocation.cc +FILE: ../../../third_party/dart/runtime/vm/base_isolate.h +FILE: ../../../third_party/dart/runtime/vm/bit_set.h +FILE: ../../../third_party/dart/runtime/vm/bit_vector.cc +FILE: ../../../third_party/dart/runtime/vm/bit_vector.h +FILE: ../../../third_party/dart/runtime/vm/bitmap.cc +FILE: ../../../third_party/dart/runtime/vm/bitmap.h +FILE: ../../../third_party/dart/runtime/vm/boolfield.h +FILE: ../../../third_party/dart/runtime/vm/bootstrap.cc +FILE: ../../../third_party/dart/runtime/vm/bootstrap.h +FILE: ../../../third_party/dart/runtime/vm/bootstrap_natives.cc +FILE: ../../../third_party/dart/runtime/vm/bootstrap_natives.h +FILE: ../../../third_party/dart/runtime/vm/class_finalizer.h +FILE: ../../../third_party/dart/runtime/vm/class_table.cc +FILE: ../../../third_party/dart/runtime/vm/class_table.h +FILE: ../../../third_party/dart/runtime/vm/code_descriptors.cc +FILE: ../../../third_party/dart/runtime/vm/code_descriptors.h +FILE: ../../../third_party/dart/runtime/vm/code_observers.cc +FILE: ../../../third_party/dart/runtime/vm/code_observers.h +FILE: ../../../third_party/dart/runtime/vm/code_patcher.cc +FILE: ../../../third_party/dart/runtime/vm/code_patcher.h +FILE: ../../../third_party/dart/runtime/vm/code_patcher_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/code_patcher_x64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/aot/aot_call_specializer.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_base.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_x86.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/object_pool_builder.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/constant_propagator.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_printer.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_printer.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/inliner.h +FILE: ../../../third_party/dart/runtime/vm/compiler/cha.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/cha.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/flow_graph_builder.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/flow_graph_builder.h +FILE: ../../../third_party/dart/runtime/vm/compiler/intrinsifier.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/intrinsifier.h +FILE: ../../../third_party/dart/runtime/vm/compiler/jit/compiler.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/jit/compiler.h +FILE: ../../../third_party/dart/runtime/vm/cpu.h +FILE: ../../../third_party/dart/runtime/vm/cpu_arm.cc +FILE: ../../../third_party/dart/runtime/vm/cpu_x64.cc +FILE: ../../../third_party/dart/runtime/vm/cpuinfo_linux.cc +FILE: ../../../third_party/dart/runtime/vm/cpuinfo_macos.cc +FILE: ../../../third_party/dart/runtime/vm/dart_api_message.h +FILE: ../../../third_party/dart/runtime/vm/dart_api_state.h +FILE: ../../../third_party/dart/runtime/vm/datastream.h +FILE: ../../../third_party/dart/runtime/vm/debugger.cc +FILE: ../../../third_party/dart/runtime/vm/debugger.h +FILE: ../../../third_party/dart/runtime/vm/double_internals.h +FILE: ../../../third_party/dart/runtime/vm/flag_list.h +FILE: ../../../third_party/dart/runtime/vm/flags.cc +FILE: ../../../third_party/dart/runtime/vm/flags.h +FILE: ../../../third_party/dart/runtime/vm/globals.h +FILE: ../../../third_party/dart/runtime/vm/growable_array.h +FILE: ../../../third_party/dart/runtime/vm/handles.cc +FILE: ../../../third_party/dart/runtime/vm/handles_impl.h +FILE: ../../../third_party/dart/runtime/vm/hash_map.h +FILE: ../../../third_party/dart/runtime/vm/heap/freelist.h +FILE: ../../../third_party/dart/runtime/vm/heap/heap.cc +FILE: ../../../third_party/dart/runtime/vm/heap/heap.h +FILE: ../../../third_party/dart/runtime/vm/heap/pages.cc +FILE: ../../../third_party/dart/runtime/vm/heap/pointer_block.cc +FILE: ../../../third_party/dart/runtime/vm/heap/pointer_block.h +FILE: ../../../third_party/dart/runtime/vm/heap/scavenger.h +FILE: ../../../third_party/dart/runtime/vm/heap/verifier.cc +FILE: ../../../third_party/dart/runtime/vm/instructions_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/instructions_ia32.h +FILE: ../../../third_party/dart/runtime/vm/instructions_x64.cc +FILE: ../../../third_party/dart/runtime/vm/instructions_x64.h +FILE: ../../../third_party/dart/runtime/vm/lockers.h +FILE: ../../../third_party/dart/runtime/vm/megamorphic_cache_table.cc +FILE: ../../../third_party/dart/runtime/vm/megamorphic_cache_table.h +FILE: ../../../third_party/dart/runtime/vm/memory_region.h +FILE: ../../../third_party/dart/runtime/vm/native_arguments.h +FILE: ../../../third_party/dart/runtime/vm/native_message_handler.cc +FILE: ../../../third_party/dart/runtime/vm/native_message_handler.h +FILE: ../../../third_party/dart/runtime/vm/object.cc +FILE: ../../../third_party/dart/runtime/vm/object.h +FILE: ../../../third_party/dart/runtime/vm/object_set.h +FILE: ../../../third_party/dart/runtime/vm/object_store.h +FILE: ../../../third_party/dart/runtime/vm/os_android.cc +FILE: ../../../third_party/dart/runtime/vm/os_linux.cc +FILE: ../../../third_party/dart/runtime/vm/os_macos.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread.h +FILE: ../../../third_party/dart/runtime/vm/os_thread_android.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread_android.h +FILE: ../../../third_party/dart/runtime/vm/os_thread_linux.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread_linux.h +FILE: ../../../third_party/dart/runtime/vm/os_thread_macos.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread_macos.h +FILE: ../../../third_party/dart/runtime/vm/os_thread_win.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread_win.h +FILE: ../../../third_party/dart/runtime/vm/os_win.cc +FILE: ../../../third_party/dart/runtime/vm/parser.cc +FILE: ../../../third_party/dart/runtime/vm/parser.h +FILE: ../../../third_party/dart/runtime/vm/port.cc +FILE: ../../../third_party/dart/runtime/vm/proccpuinfo.cc +FILE: ../../../third_party/dart/runtime/vm/proccpuinfo.h +FILE: ../../../third_party/dart/runtime/vm/raw_object.cc +FILE: ../../../third_party/dart/runtime/vm/raw_object.h +FILE: ../../../third_party/dart/runtime/vm/scopes.cc +FILE: ../../../third_party/dart/runtime/vm/scopes.h +FILE: ../../../third_party/dart/runtime/vm/snapshot.cc +FILE: ../../../third_party/dart/runtime/vm/snapshot.h +FILE: ../../../third_party/dart/runtime/vm/stack_frame.cc +FILE: ../../../third_party/dart/runtime/vm/stub_code.cc +FILE: ../../../third_party/dart/runtime/vm/symbols.cc +FILE: ../../../third_party/dart/runtime/vm/symbols.h +FILE: ../../../third_party/dart/runtime/vm/thread_pool.cc +FILE: ../../../third_party/dart/runtime/vm/thread_pool.h +FILE: ../../../third_party/dart/runtime/vm/token.h +FILE: ../../../third_party/dart/runtime/vm/unicode.cc +FILE: ../../../third_party/dart/runtime/vm/version.h +FILE: ../../../third_party/dart/runtime/vm/version_in.cc +FILE: ../../../third_party/dart/runtime/vm/virtual_memory.cc +FILE: ../../../third_party/dart/runtime/vm/virtual_memory.h +FILE: ../../../third_party/dart/runtime/vm/virtual_memory_posix.cc +FILE: ../../../third_party/dart/runtime/vm/virtual_memory_win.cc +FILE: ../../../third_party/dart/runtime/vm/zone.cc +FILE: ../../../third_party/dart/runtime/vm/zone.h +FILE: ../../../third_party/dart/sdk/lib/_http/crypto.dart +FILE: ../../../third_party/dart/sdk/lib/_http/http_date.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/interceptors.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_array.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_number.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_string.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/native_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/string_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/async_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/bigint_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/constant_map.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/core_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/foreign_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/interceptors.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/isolate_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_array.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_number.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_string.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/math_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/native_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/regexp_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/string_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/builtin.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/common_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/directory_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/eventhandler_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/file_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/platform_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/secure_socket_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/array.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/double.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/double_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/empty_source.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/errors_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/expando_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/function_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/growable_array.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/identical_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/immutable_map.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/integers.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/isolate_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/math_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirrors_impl.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirrors_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/object_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/print_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/regexp_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/stopwatch_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/string_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timer_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/type_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/weak_property.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/array_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bool_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/date_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/integers_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/map_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/string_buffer_patch.dart +FILE: ../../../third_party/dart/sdk/lib/async/async.dart +FILE: ../../../third_party/dart/sdk/lib/async/async_error.dart +FILE: ../../../third_party/dart/sdk/lib/async/broadcast_stream_controller.dart +FILE: ../../../third_party/dart/sdk/lib/async/future.dart +FILE: ../../../third_party/dart/sdk/lib/async/future_impl.dart +FILE: ../../../third_party/dart/sdk/lib/async/stream_controller.dart +FILE: ../../../third_party/dart/sdk/lib/async/stream_impl.dart +FILE: ../../../third_party/dart/sdk/lib/async/stream_pipe.dart +FILE: ../../../third_party/dart/sdk/lib/async/timer.dart +FILE: ../../../third_party/dart/sdk/lib/collection/collection.dart +FILE: ../../../third_party/dart/sdk/lib/collection/iterable.dart +FILE: ../../../third_party/dart/sdk/lib/collection/iterator.dart +FILE: ../../../third_party/dart/sdk/lib/collection/maps.dart +FILE: ../../../third_party/dart/sdk/lib/collection/splay_tree.dart +FILE: ../../../third_party/dart/sdk/lib/core/bool.dart +FILE: ../../../third_party/dart/sdk/lib/core/core.dart +FILE: ../../../third_party/dart/sdk/lib/core/double.dart +FILE: ../../../third_party/dart/sdk/lib/core/errors.dart +FILE: ../../../third_party/dart/sdk/lib/core/exceptions.dart +FILE: ../../../third_party/dart/sdk/lib/core/identical.dart +FILE: ../../../third_party/dart/sdk/lib/core/int.dart +FILE: ../../../third_party/dart/sdk/lib/core/invocation.dart +FILE: ../../../third_party/dart/sdk/lib/core/iterator.dart +FILE: ../../../third_party/dart/sdk/lib/core/list.dart +FILE: ../../../third_party/dart/sdk/lib/core/num.dart +FILE: ../../../third_party/dart/sdk/lib/core/object.dart +FILE: ../../../third_party/dart/sdk/lib/core/print.dart +FILE: ../../../third_party/dart/sdk/lib/core/regexp.dart +FILE: ../../../third_party/dart/sdk/lib/core/string.dart +FILE: ../../../third_party/dart/sdk/lib/core/type.dart +FILE: ../../../third_party/dart/sdk/lib/core/uri.dart +FILE: ../../../third_party/dart/sdk/lib/core/weak.dart +FILE: ../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/html/dartium/nativewrappers.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/conversions.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/css_class_set.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/html_common_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/metadata.dart +FILE: ../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/internal/async_cast.dart +FILE: ../../../third_party/dart/sdk/lib/internal/cast.dart +FILE: ../../../third_party/dart/sdk/lib/internal/internal.dart +FILE: ../../../third_party/dart/sdk/lib/io/common.dart +FILE: ../../../third_party/dart/sdk/lib/io/directory.dart +FILE: ../../../third_party/dart/sdk/lib/io/directory_impl.dart +FILE: ../../../third_party/dart/sdk/lib/io/eventhandler.dart +FILE: ../../../third_party/dart/sdk/lib/io/io.dart +FILE: ../../../third_party/dart/sdk/lib/io/platform.dart +FILE: ../../../third_party/dart/sdk/lib/io/platform_impl.dart +FILE: ../../../third_party/dart/sdk/lib/io/secure_server_socket.dart +FILE: ../../../third_party/dart/sdk/lib/isolate/isolate.dart +FILE: ../../../third_party/dart/sdk/lib/math/math.dart +FILE: ../../../third_party/dart/sdk/lib/math/random.dart +FILE: ../../../third_party/dart/sdk/lib/svg/dart2js/svg_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/filter.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/filter.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/gen_snapshot.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/io_natives.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/io_service.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/io_service.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/io_service_no_ssl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/io_service_no_ssl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/process.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/stdio.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/stdio.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/stdio_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/stdio_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/stdio_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/stdio_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/vmservice_impl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/vmservice_impl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/dart_native_api.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/invocation_mirror.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/libgen_in.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/simd128.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/stacktrace.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/typed_data.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/uri.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/application.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/location_manager.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_instances.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/code_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/code_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/context_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/context_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile/virtual_tree.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile_table.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/curly_block.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/error_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/eval_box.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/field_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/field_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/flag_list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/function_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/function_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/any_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/icdata_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/icdata_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/instance_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/instance_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/json_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/library_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/library_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/local_var_descriptors_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/megamorphiccache_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/native_memory_profiler.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/object_common.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/object_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectpool_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectstore_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/observatory_application.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/pc_descriptors_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/sample_buffer_control.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_inset.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_value.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_inset.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/type_arguments_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/unknown_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/tracer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/application.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/location_manager.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_instances.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/code_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/code_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/context_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/context_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile/virtual_tree.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile_table.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/curly_block.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/error_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/eval_box.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/field_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/field_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/flag_list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/function_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/function_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/any_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/icdata_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/icdata_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/instance_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/instance_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/json_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/library_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/library_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/local_var_descriptors_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/megamorphiccache_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/native_memory_profiler.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/object_common.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/object_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectpool_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectstore_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/observatory_application.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/pc_descriptors_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sample_buffer_control.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_inset.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sentinel_value.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sentinel_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/source_inset.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/stack_trace_tree_config.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/type_arguments_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unknown_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/tracer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/atomic.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/signal_blocker.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/allocation.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/class_finalizer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/aot_call_specializer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_ia32.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_x64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/block_scheduler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/block_scheduler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/constant_propagator.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/inliner.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/linearscan.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/linearscan.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/locations.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/locations.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/type_propagator.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/type_propagator.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/jit/jit_call_specializer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_arm.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_ia32.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_x64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_impl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/deferred_objects.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/deferred_objects.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/deopt_instructions.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/deopt_instructions.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/weak_table.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/weak_table.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_arm.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/isolate.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/isolate.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/json_stream.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/json_stream.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_api_impl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_id_ring.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_id_ring.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_store.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/profiler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/profiler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/random.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/random.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/reusable_handles.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/service.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/service.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/service_isolate.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator_arm.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_arm.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_ia32.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_x64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/tags.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/http.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_headers.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_parser.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_session.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/websocket.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/websocket_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/typed_data_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/annotations.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_primitives.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_rti.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/mirror_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/annotations.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/collection_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/convert_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/internal_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/io_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_names.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_primitives.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/native_typed_data.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/file_system_entity_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/filter_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/io_service_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/process_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/socket_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/stdio_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/vmservice_io.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/vmservice_server.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/core_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/function.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/internal_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirror_reference.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/schedule_microtask_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/stacktrace.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/symbol_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timer_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/typed_data_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/uri_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/collection_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/null_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/io_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/deferred_load.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/schedule_microtask.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/stream.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/stream_transformers.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/zone.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/collections.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/hash_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/hash_set.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/linked_hash_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/linked_hash_set.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/linked_list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/ascii.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/byte_conversion.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/chunked_conversion.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/codec.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/convert.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/converter.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/encoding.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/html_escape.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/json.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/latin1.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/line_splitter.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/string_conversion.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/utf.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/annotations.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/null.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/stacktrace.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/string_sink.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/symbol.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/bytes_builder.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/print.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/symbol.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/data_transformer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/file.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/file_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/file_system_entity.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/io_service.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/io_sink.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/link.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/secure_socket.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/socket.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/stdio.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/string_transformer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js/js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/math/point.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/math/rectangle.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/mirrors/mirrors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/typed_data/typed_data.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/client.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/constants.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/message.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/message_router.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/running_isolate.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/running_isolates.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/utils/compiler/create_snapshot_entry.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/eventhandler_win.cc +FILE: ../../../third_party/dart/runtime/bin/file.cc +FILE: ../../../third_party/dart/runtime/bin/file.h +FILE: ../../../third_party/dart/runtime/bin/file_system_watcher.cc +FILE: ../../../third_party/dart/runtime/bin/file_system_watcher.h +FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_android.cc +FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_linux.cc +FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_macos.cc +FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_win.cc +FILE: ../../../third_party/dart/runtime/bin/filter.cc +FILE: ../../../third_party/dart/runtime/bin/filter.h +FILE: ../../../third_party/dart/runtime/bin/gen_snapshot.cc +FILE: ../../../third_party/dart/runtime/bin/io_natives.cc +FILE: ../../../third_party/dart/runtime/bin/io_service.cc +FILE: ../../../third_party/dart/runtime/bin/io_service.h +FILE: ../../../third_party/dart/runtime/bin/io_service_no_ssl.cc +FILE: ../../../third_party/dart/runtime/bin/io_service_no_ssl.h +FILE: ../../../third_party/dart/runtime/bin/process.cc +FILE: ../../../third_party/dart/runtime/bin/socket.cc +FILE: ../../../third_party/dart/runtime/bin/socket.h +FILE: ../../../third_party/dart/runtime/bin/socket_base_linux.cc +FILE: ../../../third_party/dart/runtime/bin/socket_base_macos.cc +FILE: ../../../third_party/dart/runtime/bin/socket_base_win.cc +FILE: ../../../third_party/dart/runtime/bin/socket_linux.cc +FILE: ../../../third_party/dart/runtime/bin/socket_macos.cc +FILE: ../../../third_party/dart/runtime/bin/socket_win.cc +FILE: ../../../third_party/dart/runtime/bin/stdio.cc +FILE: ../../../third_party/dart/runtime/bin/stdio.h +FILE: ../../../third_party/dart/runtime/bin/stdio_android.cc +FILE: ../../../third_party/dart/runtime/bin/stdio_linux.cc +FILE: ../../../third_party/dart/runtime/bin/stdio_macos.cc +FILE: ../../../third_party/dart/runtime/bin/stdio_win.cc +FILE: ../../../third_party/dart/runtime/bin/vmservice_impl.cc +FILE: ../../../third_party/dart/runtime/bin/vmservice_impl.h +FILE: ../../../third_party/dart/runtime/include/dart_native_api.h +FILE: ../../../third_party/dart/runtime/lib/invocation_mirror.h +FILE: ../../../third_party/dart/runtime/lib/libgen_in.cc +FILE: ../../../third_party/dart/runtime/lib/simd128.cc +FILE: ../../../third_party/dart/runtime/lib/stacktrace.cc +FILE: ../../../third_party/dart/runtime/lib/typed_data.cc +FILE: ../../../third_party/dart/runtime/lib/uri.cc +FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/application.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/location_manager.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_instances.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/code_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/code_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/context_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/context_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile/virtual_tree.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile_table.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/curly_block.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/error_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/eval_box.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/field_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/field_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/flag_list.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/function_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/function_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/any_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/icdata_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/icdata_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/instance_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/instance_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/json_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/library_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/library_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/local_var_descriptors_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/megamorphiccache_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/native_memory_profiler.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/object_common.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/object_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectpool_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectstore_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/observatory_application.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/pc_descriptors_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sample_buffer_control.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_inset.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_value.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_inset.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/type_arguments_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/unknown_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/tracer.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/application.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/location_manager.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_instances.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/code_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/code_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/context_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/context_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile/virtual_tree.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile_table.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/curly_block.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/error_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/eval_box.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/field_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/field_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/flag_list.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/function_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/function_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/any_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/icdata_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/icdata_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/instance_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/instance_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/json_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/library_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/library_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/local_var_descriptors_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/megamorphiccache_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/native_memory_profiler.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/object_common.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/object_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectpool_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectstore_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/observatory_application.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/pc_descriptors_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sample_buffer_control.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_inset.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sentinel_value.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sentinel_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/source_inset.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/stack_trace_tree_config.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/type_arguments_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unknown_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/tracer.dart +FILE: ../../../third_party/dart/runtime/platform/atomic.h +FILE: ../../../third_party/dart/runtime/platform/signal_blocker.h +FILE: ../../../third_party/dart/runtime/vm/allocation.h +FILE: ../../../third_party/dart/runtime/vm/class_finalizer.cc +FILE: ../../../third_party/dart/runtime/vm/code_patcher_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/aot/aot_call_specializer.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_ia32.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_x64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_x64.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/block_scheduler.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/block_scheduler.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/constant_propagator.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_x64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/inliner.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/linearscan.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/linearscan.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/locations.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/locations.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/type_propagator.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/type_propagator.h +FILE: ../../../third_party/dart/runtime/vm/compiler/jit/jit_call_specializer.cc +FILE: ../../../third_party/dart/runtime/vm/constants_arm.h +FILE: ../../../third_party/dart/runtime/vm/constants_ia32.h +FILE: ../../../third_party/dart/runtime/vm/constants_x64.h +FILE: ../../../third_party/dart/runtime/vm/dart.cc +FILE: ../../../third_party/dart/runtime/vm/dart_api_impl.cc +FILE: ../../../third_party/dart/runtime/vm/deferred_objects.cc +FILE: ../../../third_party/dart/runtime/vm/deferred_objects.h +FILE: ../../../third_party/dart/runtime/vm/deopt_instructions.cc +FILE: ../../../third_party/dart/runtime/vm/deopt_instructions.h +FILE: ../../../third_party/dart/runtime/vm/heap/weak_table.cc +FILE: ../../../third_party/dart/runtime/vm/heap/weak_table.h +FILE: ../../../third_party/dart/runtime/vm/instructions.h +FILE: ../../../third_party/dart/runtime/vm/instructions_arm.cc +FILE: ../../../third_party/dart/runtime/vm/instructions_arm.h +FILE: ../../../third_party/dart/runtime/vm/isolate.cc +FILE: ../../../third_party/dart/runtime/vm/isolate.h +FILE: ../../../third_party/dart/runtime/vm/json_stream.cc +FILE: ../../../third_party/dart/runtime/vm/json_stream.h +FILE: ../../../third_party/dart/runtime/vm/native_api_impl.cc +FILE: ../../../third_party/dart/runtime/vm/native_symbol.h +FILE: ../../../third_party/dart/runtime/vm/native_symbol_android.cc +FILE: ../../../third_party/dart/runtime/vm/native_symbol_linux.cc +FILE: ../../../third_party/dart/runtime/vm/native_symbol_macos.cc +FILE: ../../../third_party/dart/runtime/vm/native_symbol_win.cc +FILE: ../../../third_party/dart/runtime/vm/object_id_ring.cc +FILE: ../../../third_party/dart/runtime/vm/object_id_ring.h +FILE: ../../../third_party/dart/runtime/vm/object_store.cc +FILE: ../../../third_party/dart/runtime/vm/profiler.cc +FILE: ../../../third_party/dart/runtime/vm/profiler.h +FILE: ../../../third_party/dart/runtime/vm/random.cc +FILE: ../../../third_party/dart/runtime/vm/random.h +FILE: ../../../third_party/dart/runtime/vm/reusable_handles.h +FILE: ../../../third_party/dart/runtime/vm/service.cc +FILE: ../../../third_party/dart/runtime/vm/service.h +FILE: ../../../third_party/dart/runtime/vm/service_isolate.h +FILE: ../../../third_party/dart/runtime/vm/signal_handler.h +FILE: ../../../third_party/dart/runtime/vm/signal_handler_android.cc +FILE: ../../../third_party/dart/runtime/vm/signal_handler_linux.cc +FILE: ../../../third_party/dart/runtime/vm/signal_handler_macos.cc +FILE: ../../../third_party/dart/runtime/vm/signal_handler_win.cc +FILE: ../../../third_party/dart/runtime/vm/simulator.h +FILE: ../../../third_party/dart/runtime/vm/simulator_arm.cc +FILE: ../../../third_party/dart/runtime/vm/simulator_arm.h +FILE: ../../../third_party/dart/runtime/vm/stack_frame_arm.h +FILE: ../../../third_party/dart/runtime/vm/stack_frame_ia32.h +FILE: ../../../third_party/dart/runtime/vm/stack_frame_x64.h +FILE: ../../../third_party/dart/runtime/vm/tags.h +FILE: ../../../third_party/dart/runtime/vm/thread_interrupter.cc +FILE: ../../../third_party/dart/runtime/vm/thread_interrupter.h +FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_android.cc +FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_linux.cc +FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_macos.cc +FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_win.cc +FILE: ../../../third_party/dart/sdk/lib/_http/http.dart +FILE: ../../../third_party/dart/sdk/lib/_http/http_headers.dart +FILE: ../../../third_party/dart/sdk/lib/_http/http_impl.dart +FILE: ../../../third_party/dart/sdk/lib/_http/http_parser.dart +FILE: ../../../third_party/dart/sdk/lib/_http/http_session.dart +FILE: ../../../third_party/dart/sdk/lib/_http/websocket.dart +FILE: ../../../third_party/dart/sdk/lib/_http/websocket_impl.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/typed_data_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/annotations.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_primitives.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_rti.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/mirror_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/annotations.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/collection_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/convert_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/internal_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/io_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_names.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_primitives.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/native_typed_data.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/file_system_entity_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/filter_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/io_service_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/process_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/socket_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/stdio_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/vmservice_io.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/vmservice_server.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/core_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/function.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/internal_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirror_reference.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/schedule_microtask_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/stacktrace.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/symbol_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timer_impl.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/typed_data_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/uri_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/collection_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/null_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/io_patch.dart +FILE: ../../../third_party/dart/sdk/lib/async/deferred_load.dart +FILE: ../../../third_party/dart/sdk/lib/async/schedule_microtask.dart +FILE: ../../../third_party/dart/sdk/lib/async/stream.dart +FILE: ../../../third_party/dart/sdk/lib/async/stream_transformers.dart +FILE: ../../../third_party/dart/sdk/lib/async/zone.dart +FILE: ../../../third_party/dart/sdk/lib/collection/collections.dart +FILE: ../../../third_party/dart/sdk/lib/collection/hash_map.dart +FILE: ../../../third_party/dart/sdk/lib/collection/hash_set.dart +FILE: ../../../third_party/dart/sdk/lib/collection/linked_hash_map.dart +FILE: ../../../third_party/dart/sdk/lib/collection/linked_hash_set.dart +FILE: ../../../third_party/dart/sdk/lib/collection/linked_list.dart +FILE: ../../../third_party/dart/sdk/lib/collection/list.dart +FILE: ../../../third_party/dart/sdk/lib/convert/ascii.dart +FILE: ../../../third_party/dart/sdk/lib/convert/byte_conversion.dart +FILE: ../../../third_party/dart/sdk/lib/convert/chunked_conversion.dart +FILE: ../../../third_party/dart/sdk/lib/convert/codec.dart +FILE: ../../../third_party/dart/sdk/lib/convert/convert.dart +FILE: ../../../third_party/dart/sdk/lib/convert/converter.dart +FILE: ../../../third_party/dart/sdk/lib/convert/encoding.dart +FILE: ../../../third_party/dart/sdk/lib/convert/html_escape.dart +FILE: ../../../third_party/dart/sdk/lib/convert/json.dart +FILE: ../../../third_party/dart/sdk/lib/convert/latin1.dart +FILE: ../../../third_party/dart/sdk/lib/convert/line_splitter.dart +FILE: ../../../third_party/dart/sdk/lib/convert/string_conversion.dart +FILE: ../../../third_party/dart/sdk/lib/convert/utf.dart +FILE: ../../../third_party/dart/sdk/lib/core/annotations.dart +FILE: ../../../third_party/dart/sdk/lib/core/null.dart +FILE: ../../../third_party/dart/sdk/lib/core/stacktrace.dart +FILE: ../../../third_party/dart/sdk/lib/core/string_sink.dart +FILE: ../../../third_party/dart/sdk/lib/core/symbol.dart +FILE: ../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/internal/bytes_builder.dart +FILE: ../../../third_party/dart/sdk/lib/internal/list.dart +FILE: ../../../third_party/dart/sdk/lib/internal/print.dart +FILE: ../../../third_party/dart/sdk/lib/internal/symbol.dart +FILE: ../../../third_party/dart/sdk/lib/io/data_transformer.dart +FILE: ../../../third_party/dart/sdk/lib/io/file.dart +FILE: ../../../third_party/dart/sdk/lib/io/file_impl.dart +FILE: ../../../third_party/dart/sdk/lib/io/file_system_entity.dart +FILE: ../../../third_party/dart/sdk/lib/io/io_service.dart +FILE: ../../../third_party/dart/sdk/lib/io/io_sink.dart +FILE: ../../../third_party/dart/sdk/lib/io/link.dart +FILE: ../../../third_party/dart/sdk/lib/io/secure_socket.dart +FILE: ../../../third_party/dart/sdk/lib/io/socket.dart +FILE: ../../../third_party/dart/sdk/lib/io/stdio.dart +FILE: ../../../third_party/dart/sdk/lib/io/string_transformer.dart +FILE: ../../../third_party/dart/sdk/lib/js/js.dart +FILE: ../../../third_party/dart/sdk/lib/math/point.dart +FILE: ../../../third_party/dart/sdk/lib/math/rectangle.dart +FILE: ../../../third_party/dart/sdk/lib/mirrors/mirrors.dart +FILE: ../../../third_party/dart/sdk/lib/typed_data/typed_data.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/client.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/constants.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/message.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/message_router.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/running_isolate.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/running_isolates.dart +FILE: ../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart +FILE: ../../../third_party/dart/utils/compiler/create_snapshot_entry.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/observatory/web/third_party/webcomponents.min.js + http://polymer.github.io/LICENSE.txt referenced by ../../../third_party/dart/runtime/observatory/web/third_party/webcomponents.min.js +ORIGIN: ../../../third_party/dart/runtime/observatory_2/web/third_party/webcomponents.min.js + http://polymer.github.io/LICENSE.txt referenced by ../../../third_party/dart/runtime/observatory_2/web/third_party/webcomponents.min.js +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/observatory/web/third_party/webcomponents.min.js +FILE: ../../../third_party/dart/runtime/observatory_2/web/third_party/webcomponents.min.js +---------------------------------------------------------------------------------------------------- +Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/lib/profiler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/bin/shell.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/app.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/object_graph.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/service.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/service_common.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/service_html.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/service_io.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/page.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/settings.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/view_model.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_tree.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/debugger.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_reconnect.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/metrics.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_connect.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/service/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/utils.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/web/main.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/bin/shell.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/app.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/object_graph.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/service.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/service_common.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/service_html.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/service_io.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/page.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/settings.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/view_model.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_tree.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/debugger.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_reconnect.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metrics.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_connect.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/service/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/utils.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/web/main.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/address_sanitizer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/memory_sanitizer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/safe_stack.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/verbose_gc_to_bmu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/range_analysis.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/range_analysis.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/method_recognizer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/method_recognizer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_arm64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_arm.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_arm64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_ia32.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_x64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpuid.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpuid.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/debugger_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/hash_table.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/spaces.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/weak_code.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/weak_code.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_arm64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/metrics.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/metrics.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_graph.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_graph.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_ir.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_ir.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_ast.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_ast.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_parser.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_parser.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/report.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/report.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/ring_buffer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator_arm64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_arm64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/tags.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/unibrow-inl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/unibrow.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/unibrow.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/preambles/jsshell.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/embedded_names.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/lib_prefix.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/profiler.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/convert_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/collection/set.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/sink.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/developer/profiler.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/process.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/service_object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/isolate/capability.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/lib/profiler.cc +FILE: ../../../third_party/dart/runtime/observatory/bin/shell.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/app.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/object_graph.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/service.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/service_common.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/service_html.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/service_io.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/page.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/settings.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/view_model.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_tree.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/debugger.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_map.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_reconnect.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/metrics.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_connect.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/service/object.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/utils.dart +FILE: ../../../third_party/dart/runtime/observatory/web/main.dart +FILE: ../../../third_party/dart/runtime/observatory_2/bin/shell.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/app.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/object_graph.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/service.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/service_common.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/service_html.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/service_io.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/page.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/settings.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/view_model.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_tree.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/debugger.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_map.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_reconnect.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metrics.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_connect.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/service/object.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/utils.dart +FILE: ../../../third_party/dart/runtime/observatory_2/web/main.dart +FILE: ../../../third_party/dart/runtime/platform/address_sanitizer.h +FILE: ../../../third_party/dart/runtime/platform/memory_sanitizer.h +FILE: ../../../third_party/dart/runtime/platform/safe_stack.h +FILE: ../../../third_party/dart/runtime/tools/verbose_gc_to_bmu.dart +FILE: ../../../third_party/dart/runtime/vm/code_patcher_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm64.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/range_analysis.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/range_analysis.h +FILE: ../../../third_party/dart/runtime/vm/compiler/method_recognizer.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/method_recognizer.h +FILE: ../../../third_party/dart/runtime/vm/constants_arm64.h +FILE: ../../../third_party/dart/runtime/vm/cpu_arm.h +FILE: ../../../third_party/dart/runtime/vm/cpu_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/cpu_arm64.h +FILE: ../../../third_party/dart/runtime/vm/cpu_ia32.h +FILE: ../../../third_party/dart/runtime/vm/cpu_x64.h +FILE: ../../../third_party/dart/runtime/vm/cpuid.cc +FILE: ../../../third_party/dart/runtime/vm/cpuid.h +FILE: ../../../third_party/dart/runtime/vm/cpuinfo.h +FILE: ../../../third_party/dart/runtime/vm/cpuinfo_android.cc +FILE: ../../../third_party/dart/runtime/vm/cpuinfo_win.cc +FILE: ../../../third_party/dart/runtime/vm/debugger_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/hash_table.h +FILE: ../../../third_party/dart/runtime/vm/heap/spaces.h +FILE: ../../../third_party/dart/runtime/vm/heap/weak_code.cc +FILE: ../../../third_party/dart/runtime/vm/heap/weak_code.h +FILE: ../../../third_party/dart/runtime/vm/instructions_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/instructions_arm64.h +FILE: ../../../third_party/dart/runtime/vm/metrics.cc +FILE: ../../../third_party/dart/runtime/vm/metrics.h +FILE: ../../../third_party/dart/runtime/vm/object_graph.cc +FILE: ../../../third_party/dart/runtime/vm/object_graph.h +FILE: ../../../third_party/dart/runtime/vm/regexp.cc +FILE: ../../../third_party/dart/runtime/vm/regexp.h +FILE: ../../../third_party/dart/runtime/vm/regexp_assembler.cc +FILE: ../../../third_party/dart/runtime/vm/regexp_assembler.h +FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_ir.cc +FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_ir.h +FILE: ../../../third_party/dart/runtime/vm/regexp_ast.cc +FILE: ../../../third_party/dart/runtime/vm/regexp_ast.h +FILE: ../../../third_party/dart/runtime/vm/regexp_parser.cc +FILE: ../../../third_party/dart/runtime/vm/regexp_parser.h +FILE: ../../../third_party/dart/runtime/vm/report.cc +FILE: ../../../third_party/dart/runtime/vm/report.h +FILE: ../../../third_party/dart/runtime/vm/ring_buffer.h +FILE: ../../../third_party/dart/runtime/vm/runtime_entry_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/simulator_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/simulator_arm64.h +FILE: ../../../third_party/dart/runtime/vm/stack_frame_arm64.h +FILE: ../../../third_party/dart/runtime/vm/tags.cc +FILE: ../../../third_party/dart/runtime/vm/unibrow-inl.h +FILE: ../../../third_party/dart/runtime/vm/unibrow.cc +FILE: ../../../third_party/dart/runtime/vm/unibrow.h +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/preambles/jsshell.js +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/embedded_names.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/lib_prefix.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/profiler.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/convert_patch.dart +FILE: ../../../third_party/dart/sdk/lib/collection/set.dart +FILE: ../../../third_party/dart/sdk/lib/core/sink.dart +FILE: ../../../third_party/dart/sdk/lib/developer/profiler.dart +FILE: ../../../third_party/dart/sdk/lib/io/process.dart +FILE: ../../../third_party/dart/sdk/lib/io/service_object.dart +FILE: ../../../third_party/dart/sdk/lib/isolate/capability.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/address_sanitizer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/dart_io_api_impl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/observatory_assets_empty.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/bin/dart_io_api.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/developer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/timeline.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/vmservice.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/cli.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/debugger.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/allocation_profile/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/cli/command.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/debugger/debugger.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/debugger/debugger_location.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/logging.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/logging_list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/megamorphiccache_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectpool_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/persistent_handles.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/ports.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/timeline_page.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/sample_profile/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/web/timeline.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/cli.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/debugger.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/allocation_profile/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/cli/command.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/debugger/debugger.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/debugger/debugger_location.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/logging.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/logging_list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/megamorphiccache_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectpool_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/persistent_handles.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/ports.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/timeline_page.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/sample_profile/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/web/timeline.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/log.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/log.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/profiler_service.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/profiler_service.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/program_visitor.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/program_visitor.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode_inl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_bytecodes.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_interpreter.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/regexp_interpreter.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/scope_timer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/service_event.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/service_event.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/service_isolate.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/source_report.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/source_report.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_barrier.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_registry.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_registry.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/timeline.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/timeline.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/utils.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/debugger.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/developer_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/preambles/d8.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/preambles/jsshell.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/async_status_codes.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/async_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/developer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timeline.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/compact_hash.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/convert/base64.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/developer/developer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/developer/extension.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/developer/timeline.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/io_resource_info.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/security_context.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js/_js_annotations.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/asset.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/vmservice.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/address_sanitizer.cc +FILE: ../../../third_party/dart/runtime/bin/dart_io_api_impl.cc +FILE: ../../../third_party/dart/runtime/bin/observatory_assets_empty.cc +FILE: ../../../third_party/dart/runtime/include/bin/dart_io_api.h +FILE: ../../../third_party/dart/runtime/lib/developer.cc +FILE: ../../../third_party/dart/runtime/lib/timeline.cc +FILE: ../../../third_party/dart/runtime/lib/vmservice.cc +FILE: ../../../third_party/dart/runtime/observatory/lib/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/cli.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/debugger.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/allocation_profile/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/cli/command.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/debugger/debugger.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/debugger/debugger_location.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/logging.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/logging_list.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/megamorphiccache_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectpool_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/persistent_handles.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/ports.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/timeline_page.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/sample_profile/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/web/timeline.js +FILE: ../../../third_party/dart/runtime/observatory_2/lib/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/cli.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/debugger.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/allocation_profile/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/cli/command.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/debugger/debugger.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/debugger/debugger_location.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/logging.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/logging_list.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/megamorphiccache_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectpool_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/persistent_handles.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/ports.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/timeline_page.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/sample_profile/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/web/timeline.js +FILE: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler.h +FILE: ../../../third_party/dart/runtime/vm/log.cc +FILE: ../../../third_party/dart/runtime/vm/log.h +FILE: ../../../third_party/dart/runtime/vm/os_thread.cc +FILE: ../../../third_party/dart/runtime/vm/profiler_service.cc +FILE: ../../../third_party/dart/runtime/vm/profiler_service.h +FILE: ../../../third_party/dart/runtime/vm/program_visitor.cc +FILE: ../../../third_party/dart/runtime/vm/program_visitor.h +FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode.cc +FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode.h +FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode_inl.h +FILE: ../../../third_party/dart/runtime/vm/regexp_bytecodes.h +FILE: ../../../third_party/dart/runtime/vm/regexp_interpreter.cc +FILE: ../../../third_party/dart/runtime/vm/regexp_interpreter.h +FILE: ../../../third_party/dart/runtime/vm/scope_timer.h +FILE: ../../../third_party/dart/runtime/vm/service_event.cc +FILE: ../../../third_party/dart/runtime/vm/service_event.h +FILE: ../../../third_party/dart/runtime/vm/service_isolate.cc +FILE: ../../../third_party/dart/runtime/vm/source_report.cc +FILE: ../../../third_party/dart/runtime/vm/source_report.h +FILE: ../../../third_party/dart/runtime/vm/thread.cc +FILE: ../../../third_party/dart/runtime/vm/thread.h +FILE: ../../../third_party/dart/runtime/vm/thread_barrier.h +FILE: ../../../third_party/dart/runtime/vm/thread_registry.cc +FILE: ../../../third_party/dart/runtime/vm/thread_registry.h +FILE: ../../../third_party/dart/runtime/vm/timeline.cc +FILE: ../../../third_party/dart/runtime/vm/timeline.h +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/utils.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/debugger.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/developer_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/preambles/d8.js +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/preambles/jsshell.js +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/async_status_codes.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/async_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/developer.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timeline.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/compact_hash.dart +FILE: ../../../third_party/dart/sdk/lib/convert/base64.dart +FILE: ../../../third_party/dart/sdk/lib/developer/developer.dart +FILE: ../../../third_party/dart/sdk/lib/developer/extension.dart +FILE: ../../../third_party/dart/sdk/lib/developer/timeline.dart +FILE: ../../../third_party/dart/sdk/lib/io/io_resource_info.dart +FILE: ../../../third_party/dart/sdk/lib/io/security_context.dart +FILE: ../../../third_party/dart/sdk/lib/js/_js_annotations.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/asset.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/vmservice.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/crypto_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/directory_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_fuchsia.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_support.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/loader.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/loader.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/process_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/reference_counting.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/root_certificates_unsupported.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_fuchsia.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/stdio_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_fuchsia.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/utils_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/stacktrace.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/models.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/repositories.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/notification.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/virtual_collection.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/virtual_tree.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/error_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/general_error.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/custom_element.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/nav_bar.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/nav_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/rendering_queue.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/uris.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/inbound_references.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/counter_chart.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/location.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/run_state.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/shared_summary.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/summary.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/metric/details.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/metric/graph.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/class_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/isolate_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/library_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/menu_item.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify_event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify_exception.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/refresh.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/top_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/vm_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/retaining_path.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_link.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_connect_target.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/exceptions.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/breakpoint.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/class.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/code.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/context.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/error.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/extension_data.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/field.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/flag.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/frame.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/function.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/guarded.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/heap_space.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/icdata.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/inbound_references.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/instance.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/isolate.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/library.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/local_var_descriptors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/map_association.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/megamorphiccache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/metric.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/notification.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/objectpool.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/objectstore.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/pc_descriptors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/persistent_handles.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/ports.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/retaining_path.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/script.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sentinel.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/source_location.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/target.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline_event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/type_arguments.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unknown.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/vm.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/breakpoint.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/class.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/context.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/editor.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/eval.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/field.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/flag.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/function.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/icdata.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/inbound_references.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/instance.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/isolate.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/library.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/megamorphiccache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/metric.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/notification.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/objectpool.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/objectstore.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/persistent_handles.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/ports.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/reachable_size.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/retained_size.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/retaining_path.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/script.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/target.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/type_arguments.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/breakpoint.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/class.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/context.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/editor.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/eval.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/field.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/flag.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/function.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/icdata.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/inbound_references.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/instance.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/isolate.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/library.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/megamorphiccache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/metric.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/notification.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/objectpool.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/objectstore.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/persistent_handles.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/ports.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/reachable_size.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/retained_size.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/retaining_path.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/script.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/settings.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/target.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/type_arguments.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/web/timeline_message_handler.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/models.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/repositories.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/notification.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/virtual_collection.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/virtual_tree.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/error_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/general_error.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/custom_element.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/nav_bar.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/nav_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/rendering_queue.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/rendering_scheduler.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/tag.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/uris.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/inbound_references.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/counter_chart.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/location.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/run_state.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/shared_summary.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/summary.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metric/details.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metric/graph.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/class_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/isolate_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/library_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/menu_item.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify_event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify_exception.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/refresh.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/top_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/vm_menu.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/retaining_path.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/source_link.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_connect_target.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/exceptions.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/breakpoint.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/class.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/code.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/context.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/error.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/extension_data.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/field.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/flag.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/frame.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/function.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/guarded.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/heap_space.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/icdata.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/inbound_references.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/instance.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/isolate.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/library.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/local_var_descriptors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/map_association.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/megamorphiccache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/metric.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/notification.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/objectpool.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/objectstore.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/pc_descriptors.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/persistent_handles.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/ports.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/retaining_path.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/script.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/sentinel.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/source_location.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/target.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/timeline_event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/type_arguments.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/unknown.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/vm.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/breakpoint.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/class.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/context.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/editor.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/eval.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/field.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/flag.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/function.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/icdata.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/inbound_references.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/instance.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/isolate.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/library.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/megamorphiccache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/metric.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/notification.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/objectpool.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/objectstore.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/persistent_handles.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/ports.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/reachable_size.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/retained_size.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/retaining_path.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/script.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/target.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/type_arguments.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/allocation_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/breakpoint.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/class.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/context.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/editor.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/eval.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/event.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/field.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/flag.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/function.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/icdata.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/inbound_references.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/instance.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/isolate.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/library.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/megamorphiccache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/metric.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/notification.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/object.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/objectpool.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/objectstore.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/persistent_handles.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/ports.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/reachable_size.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/retained_size.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/retaining_path.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/sample_profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/script.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/settings.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/target.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/type_arguments.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/web/timeline_message_handler.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/syslog_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/utils_fuchsia.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/app_snapshot.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/app_snapshot.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/canonical_tables.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/branch_optimizer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/branch_optimizer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/redundancy_elimination.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/redundancy_elimination.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_to_il.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_to_il.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_state.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/become.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/become.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/safepoint.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/safepoint.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/isolate_reload.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/isolate_reload.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/kernel.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/kernel.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/kernel_binary.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/kernel_isolate.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/kernel_isolate.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/kernel_loader.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/kernel_loader.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/lockers.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_reload.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_service.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_fuchsia.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/token_position.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/token_position.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/uri.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/uri.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/developer/service.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js_util/js_util.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/devfs.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/crypto_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/directory_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/eventhandler_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/eventhandler_fuchsia.h +FILE: ../../../third_party/dart/runtime/bin/file_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/file_support.cc +FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/loader.cc +FILE: ../../../third_party/dart/runtime/bin/loader.h +FILE: ../../../third_party/dart/runtime/bin/platform_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/process_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/reference_counting.h +FILE: ../../../third_party/dart/runtime/bin/root_certificates_unsupported.cc +FILE: ../../../third_party/dart/runtime/bin/socket_base_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/socket_base_fuchsia.h +FILE: ../../../third_party/dart/runtime/bin/socket_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/stdio_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/thread_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/thread_fuchsia.h +FILE: ../../../third_party/dart/runtime/bin/utils_fuchsia.cc +FILE: ../../../third_party/dart/runtime/lib/stacktrace.h +FILE: ../../../third_party/dart/runtime/observatory/lib/event.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/models.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/repositories.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/notification.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/virtual_collection.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/virtual_tree.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/error_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/general_error.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/custom_element.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/nav_bar.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/nav_menu.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/rendering_queue.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/uris.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/inbound_references.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/counter_chart.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/location.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/run_state.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/shared_summary.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/summary.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/metric/details.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/metric/graph.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/class_menu.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/isolate_menu.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/library_menu.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/menu_item.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify_event.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify_exception.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/refresh.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/top_menu.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/vm_menu.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/retaining_path.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_link.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/strongly_reachable_instances.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_connect_target.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/exceptions.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/breakpoint.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/class.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/code.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/context.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/error.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/event.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/extension_data.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/field.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/flag.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/frame.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/function.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/guarded.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/heap_space.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/icdata.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/inbound_references.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/instance.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/isolate.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/library.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/local_var_descriptors.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/map_association.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/megamorphiccache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/metric.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/notification.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/object.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/objectpool.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/objectstore.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/pc_descriptors.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/persistent_handles.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/ports.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/retaining_path.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/script.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sentinel.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/source_location.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/target.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline_event.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/type_arguments.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unknown.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/vm.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/breakpoint.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/class.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/context.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/editor.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/eval.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/event.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/field.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/flag.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/function.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/icdata.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/inbound_references.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/instance.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/isolate.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/library.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/megamorphiccache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/metric.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/notification.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/object.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/objectpool.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/objectstore.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/persistent_handles.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/ports.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/reachable_size.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/retained_size.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/retaining_path.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/script.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/strongly_reachable_instances.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/target.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/type_arguments.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/breakpoint.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/class.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/context.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/editor.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/eval.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/event.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/field.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/flag.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/function.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/icdata.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/inbound_references.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/instance.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/isolate.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/library.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/megamorphiccache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/metric.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/notification.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/object.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/objectpool.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/objectstore.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/persistent_handles.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/ports.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/reachable_size.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/retained_size.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/retaining_path.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/script.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/settings.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/strongly_reachable_instances.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/target.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/type_arguments.dart +FILE: ../../../third_party/dart/runtime/observatory/web/timeline_message_handler.js +FILE: ../../../third_party/dart/runtime/observatory_2/lib/event.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/models.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/repositories.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/notification.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/virtual_collection.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/virtual_tree.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/error_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/general_error.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/custom_element.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/nav_bar.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/nav_menu.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/rendering_queue.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/rendering_scheduler.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/tag.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/uris.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/inbound_references.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/counter_chart.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/location.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/run_state.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/shared_summary.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/summary.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metric/details.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metric/graph.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/class_menu.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/isolate_menu.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/library_menu.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/menu_item.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify_event.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify_exception.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/refresh.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/top_menu.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/vm_menu.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/retaining_path.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/source_link.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/strongly_reachable_instances.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_connect_target.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/exceptions.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/breakpoint.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/class.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/code.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/context.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/error.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/event.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/extension_data.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/field.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/flag.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/frame.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/function.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/guarded.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/heap_space.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/icdata.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/inbound_references.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/instance.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/isolate.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/library.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/local_var_descriptors.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/map_association.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/megamorphiccache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/metric.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/notification.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/object.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/objectpool.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/objectstore.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/pc_descriptors.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/persistent_handles.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/ports.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/retaining_path.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/script.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/sentinel.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/source_location.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/target.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/timeline_event.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/type_arguments.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/unknown.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/vm.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/breakpoint.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/class.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/context.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/editor.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/eval.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/event.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/field.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/flag.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/function.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/icdata.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/inbound_references.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/instance.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/isolate.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/library.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/megamorphiccache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/metric.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/notification.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/object.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/objectpool.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/objectstore.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/persistent_handles.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/ports.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/reachable_size.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/retained_size.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/retaining_path.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/script.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/strongly_reachable_instances.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/target.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/type_arguments.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/allocation_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/breakpoint.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/class.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/context.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/editor.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/eval.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/event.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/field.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/flag.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/function.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/icdata.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/inbound_references.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/instance.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/isolate.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/library.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/megamorphiccache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/metric.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/notification.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/object.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/objectpool.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/objectstore.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/persistent_handles.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/ports.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/reachable_size.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/retained_size.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/retaining_path.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/sample_profile.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/script.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/settings.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/strongly_reachable_instances.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/target.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/type_arguments.dart +FILE: ../../../third_party/dart/runtime/observatory_2/web/timeline_message_handler.js +FILE: ../../../third_party/dart/runtime/platform/syslog_fuchsia.cc +FILE: ../../../third_party/dart/runtime/platform/utils_fuchsia.cc +FILE: ../../../third_party/dart/runtime/platform/utils_fuchsia.h +FILE: ../../../third_party/dart/runtime/vm/app_snapshot.cc +FILE: ../../../third_party/dart/runtime/vm/app_snapshot.h +FILE: ../../../third_party/dart/runtime/vm/canonical_tables.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/branch_optimizer.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/branch_optimizer.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/redundancy_elimination.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/redundancy_elimination.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_to_il.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_to_il.h +FILE: ../../../third_party/dart/runtime/vm/cpuinfo_fuchsia.cc +FILE: ../../../third_party/dart/runtime/vm/dart_api_state.cc +FILE: ../../../third_party/dart/runtime/vm/heap/become.cc +FILE: ../../../third_party/dart/runtime/vm/heap/become.h +FILE: ../../../third_party/dart/runtime/vm/heap/safepoint.cc +FILE: ../../../third_party/dart/runtime/vm/heap/safepoint.h +FILE: ../../../third_party/dart/runtime/vm/isolate_reload.cc +FILE: ../../../third_party/dart/runtime/vm/isolate_reload.h +FILE: ../../../third_party/dart/runtime/vm/kernel.cc +FILE: ../../../third_party/dart/runtime/vm/kernel.h +FILE: ../../../third_party/dart/runtime/vm/kernel_binary.cc +FILE: ../../../third_party/dart/runtime/vm/kernel_isolate.cc +FILE: ../../../third_party/dart/runtime/vm/kernel_isolate.h +FILE: ../../../third_party/dart/runtime/vm/kernel_loader.cc +FILE: ../../../third_party/dart/runtime/vm/kernel_loader.h +FILE: ../../../third_party/dart/runtime/vm/lockers.cc +FILE: ../../../third_party/dart/runtime/vm/native_symbol_fuchsia.cc +FILE: ../../../third_party/dart/runtime/vm/object_reload.cc +FILE: ../../../third_party/dart/runtime/vm/object_service.cc +FILE: ../../../third_party/dart/runtime/vm/os_fuchsia.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread_fuchsia.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread_fuchsia.h +FILE: ../../../third_party/dart/runtime/vm/signal_handler_fuchsia.cc +FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_fuchsia.cc +FILE: ../../../third_party/dart/runtime/vm/token_position.cc +FILE: ../../../third_party/dart/runtime/vm/token_position.h +FILE: ../../../third_party/dart/runtime/vm/uri.cc +FILE: ../../../third_party/dart/runtime/vm/uri.h +FILE: ../../../third_party/dart/runtime/vm/virtual_memory_fuchsia.cc +FILE: ../../../third_party/dart/sdk/lib/developer/service.dart +FILE: ../../../third_party/dart/sdk/lib/js_util/js_util.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/devfs.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/cli.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/dfe.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/dfe.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/error_exit.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/error_exit.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/gzip.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/gzip.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/isolate_data.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/main_options.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/main_options.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/namespace.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/namespace.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/namespace_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/namespace_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/namespace_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/namespace_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/namespace_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/options.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/options.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_filter.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_filter.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_utils.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_utils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/security_context.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/security_context.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/security_context_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/security_context_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/security_context_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/security_context_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/security_context_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/snapshot_utils.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/snapshot_utils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/async.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/search_bar.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/reload.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/singletargetcache_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/singletargetcache_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/subtypetestcache_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/subtypetestcache_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/unlinkedcall_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/unlinkedcall_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/service.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/single_target_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/subtype_test_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unlinked_call.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/single_target_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/subtype_test_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/timeline.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/unlinked_call.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/vm.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/single_target_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/subtype_test_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/timeline.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/unlinked_call.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/vm.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/search_bar.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/reload.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/singletargetcache_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/singletargetcache_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/subtypetestcache_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/subtypetestcache_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/timeline/dashboard.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unlinkedcall_ref.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unlinkedcall_view.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/service.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/single_target_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/subtype_test_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/timeline.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/unlinked_call.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/single_target_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/subtype_test_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/timeline.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/unlinked_call.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/vm.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/single_target_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/subtype_test_cache.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/timeline.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/unlinked_call.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/vm.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/allocation.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/growable_array.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_riscv.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/locations_helpers.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/locations_helpers_arm.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/call_specializer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/call_specializer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/prologue_builder.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/prologue_builder.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/jit/jit_call_specializer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_riscv.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_x86.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dwarf.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dwarf.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/fixed_cache.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/gdb_helpers.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/compactor.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/compactor.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/image_snapshot.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/image_snapshot.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/json_writer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/json_writer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/kernel_binary.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator_riscv.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_trace.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_trace.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/timeline_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/timeline_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/timeline_linux.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/zone_text_buffer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/zone_text_buffer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/overrides.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/identity_hash_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/profile.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/cli_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/namespace_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/sync_socket_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/class_id_fasta.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bigint_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/cli/cli.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/cli/wait_for.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/bigint.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/linked_list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/embedder_config.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/namespace_impl.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/overrides.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/io/sync_socket.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/named_lookup.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/utils/bazel/kernel_worker.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/cli.cc +FILE: ../../../third_party/dart/runtime/bin/dfe.cc +FILE: ../../../third_party/dart/runtime/bin/dfe.h +FILE: ../../../third_party/dart/runtime/bin/error_exit.cc +FILE: ../../../third_party/dart/runtime/bin/error_exit.h +FILE: ../../../third_party/dart/runtime/bin/gzip.cc +FILE: ../../../third_party/dart/runtime/bin/gzip.h +FILE: ../../../third_party/dart/runtime/bin/isolate_data.cc +FILE: ../../../third_party/dart/runtime/bin/main_options.cc +FILE: ../../../third_party/dart/runtime/bin/main_options.h +FILE: ../../../third_party/dart/runtime/bin/namespace.cc +FILE: ../../../third_party/dart/runtime/bin/namespace.h +FILE: ../../../third_party/dart/runtime/bin/namespace_android.cc +FILE: ../../../third_party/dart/runtime/bin/namespace_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/namespace_linux.cc +FILE: ../../../third_party/dart/runtime/bin/namespace_macos.cc +FILE: ../../../third_party/dart/runtime/bin/namespace_win.cc +FILE: ../../../third_party/dart/runtime/bin/options.cc +FILE: ../../../third_party/dart/runtime/bin/options.h +FILE: ../../../third_party/dart/runtime/bin/secure_socket_filter.cc +FILE: ../../../third_party/dart/runtime/bin/secure_socket_filter.h +FILE: ../../../third_party/dart/runtime/bin/secure_socket_utils.cc +FILE: ../../../third_party/dart/runtime/bin/secure_socket_utils.h +FILE: ../../../third_party/dart/runtime/bin/security_context.cc +FILE: ../../../third_party/dart/runtime/bin/security_context.h +FILE: ../../../third_party/dart/runtime/bin/security_context_android.cc +FILE: ../../../third_party/dart/runtime/bin/security_context_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/security_context_linux.cc +FILE: ../../../third_party/dart/runtime/bin/security_context_macos.cc +FILE: ../../../third_party/dart/runtime/bin/security_context_win.cc +FILE: ../../../third_party/dart/runtime/bin/snapshot_utils.cc +FILE: ../../../third_party/dart/runtime/bin/snapshot_utils.h +FILE: ../../../third_party/dart/runtime/bin/socket_base.cc +FILE: ../../../third_party/dart/runtime/bin/socket_base.h +FILE: ../../../third_party/dart/runtime/bin/sync_socket.cc +FILE: ../../../third_party/dart/runtime/bin/sync_socket.h +FILE: ../../../third_party/dart/runtime/bin/sync_socket_android.cc +FILE: ../../../third_party/dart/runtime/bin/sync_socket_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/sync_socket_linux.cc +FILE: ../../../third_party/dart/runtime/bin/sync_socket_macos.cc +FILE: ../../../third_party/dart/runtime/bin/sync_socket_win.cc +FILE: ../../../third_party/dart/runtime/lib/async.cc +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/search_bar.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/reload.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/singletargetcache_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/singletargetcache_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/subtypetestcache_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/subtypetestcache_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/unlinkedcall_ref.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/unlinkedcall_view.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/service.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/single_target_cache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/subtype_test_cache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unlinked_call.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/single_target_cache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/subtype_test_cache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/timeline.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/unlinked_call.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/vm.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/single_target_cache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/subtype_test_cache.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/timeline.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/unlinked_call.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/vm.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/search_bar.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/reload.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/singletargetcache_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/singletargetcache_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/subtypetestcache_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/subtypetestcache_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/timeline/dashboard.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unlinkedcall_ref.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unlinkedcall_view.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/service.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/single_target_cache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/subtype_test_cache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/timeline.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/unlinked_call.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/single_target_cache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/subtype_test_cache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/timeline.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/unlinked_call.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/vm.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/single_target_cache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/subtype_test_cache.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/timeline.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/unlinked_call.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/vm.dart +FILE: ../../../third_party/dart/runtime/platform/allocation.h +FILE: ../../../third_party/dart/runtime/platform/growable_array.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_riscv.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/locations_helpers.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/locations_helpers_arm.h +FILE: ../../../third_party/dart/runtime/vm/compiler/call_specializer.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/call_specializer.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/prologue_builder.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/prologue_builder.h +FILE: ../../../third_party/dart/runtime/vm/compiler/jit/jit_call_specializer.h +FILE: ../../../third_party/dart/runtime/vm/constants_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/constants_riscv.h +FILE: ../../../third_party/dart/runtime/vm/constants_x86.h +FILE: ../../../third_party/dart/runtime/vm/dwarf.cc +FILE: ../../../third_party/dart/runtime/vm/dwarf.h +FILE: ../../../third_party/dart/runtime/vm/fixed_cache.h +FILE: ../../../third_party/dart/runtime/vm/gdb_helpers.cc +FILE: ../../../third_party/dart/runtime/vm/heap/compactor.cc +FILE: ../../../third_party/dart/runtime/vm/heap/compactor.h +FILE: ../../../third_party/dart/runtime/vm/image_snapshot.cc +FILE: ../../../third_party/dart/runtime/vm/image_snapshot.h +FILE: ../../../third_party/dart/runtime/vm/json_writer.cc +FILE: ../../../third_party/dart/runtime/vm/json_writer.h +FILE: ../../../third_party/dart/runtime/vm/kernel_binary.h +FILE: ../../../third_party/dart/runtime/vm/simulator_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/simulator_riscv.h +FILE: ../../../third_party/dart/runtime/vm/stack_trace.cc +FILE: ../../../third_party/dart/runtime/vm/stack_trace.h +FILE: ../../../third_party/dart/runtime/vm/timeline_android.cc +FILE: ../../../third_party/dart/runtime/vm/timeline_fuchsia.cc +FILE: ../../../third_party/dart/runtime/vm/timeline_linux.cc +FILE: ../../../third_party/dart/runtime/vm/zone_text_buffer.cc +FILE: ../../../third_party/dart/runtime/vm/zone_text_buffer.h +FILE: ../../../third_party/dart/sdk/lib/_http/overrides.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/identity_hash_map.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/profile.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/cli_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/namespace_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/sync_socket_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/class_id_fasta.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bigint_patch.dart +FILE: ../../../third_party/dart/sdk/lib/cli/cli.dart +FILE: ../../../third_party/dart/sdk/lib/cli/wait_for.dart +FILE: ../../../third_party/dart/sdk/lib/core/bigint.dart +FILE: ../../../third_party/dart/sdk/lib/internal/linked_list.dart +FILE: ../../../third_party/dart/sdk/lib/internal/patch.dart +FILE: ../../../third_party/dart/sdk/lib/io/embedder_config.dart +FILE: ../../../third_party/dart/sdk/lib/io/namespace_impl.dart +FILE: ../../../third_party/dart/sdk/lib/io/overrides.dart +FILE: ../../../third_party/dart/sdk/lib/io/sync_socket.dart +FILE: ../../../third_party/dart/sdk/lib/vmservice/named_lookup.dart +FILE: ../../../third_party/dart/utils/bazel/kernel_worker.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/crashpad.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/dart_embedder_api_impl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/typed_data_utils.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/typed_data_utils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/dart_embedder_api.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/base64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/base64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/compile_type.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/loops.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/loops.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/slot.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/slot.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_state.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_state.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/base_flow_graph_builder.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/base_flow_graph_builder.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_reader.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_reader.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/scope_builder.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/scope_builder.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/relocation.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/datastream.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/finalizable_data.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/hash.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/raw_object_fields.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/raw_object_fields.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/reverse_pc_lookup_cache.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/reverse_pc_lookup_cache.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/type_testing_stubs.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/type_testing_stubs.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/v8_snapshot_writer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/v8_snapshot_writer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/instantiation.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js/_js.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js/_js_client.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js/_js_server.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/typed_data/unmodifiable_typed_data.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/crashpad.h +FILE: ../../../third_party/dart/runtime/bin/dart_embedder_api_impl.cc +FILE: ../../../third_party/dart/runtime/bin/typed_data_utils.cc +FILE: ../../../third_party/dart/runtime/bin/typed_data_utils.h +FILE: ../../../third_party/dart/runtime/include/dart_embedder_api.h +FILE: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz.dart +FILE: ../../../third_party/dart/runtime/vm/base64.cc +FILE: ../../../third_party/dart/runtime/vm/base64.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/compile_type.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/loops.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/loops.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/slot.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/slot.h +FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.h +FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_state.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_state.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/base_flow_graph_builder.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/base_flow_graph_builder.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_reader.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_reader.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/scope_builder.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/scope_builder.h +FILE: ../../../third_party/dart/runtime/vm/compiler/relocation.h +FILE: ../../../third_party/dart/runtime/vm/constants.h +FILE: ../../../third_party/dart/runtime/vm/datastream.cc +FILE: ../../../third_party/dart/runtime/vm/finalizable_data.h +FILE: ../../../third_party/dart/runtime/vm/hash.h +FILE: ../../../third_party/dart/runtime/vm/raw_object_fields.cc +FILE: ../../../third_party/dart/runtime/vm/raw_object_fields.h +FILE: ../../../third_party/dart/runtime/vm/reverse_pc_lookup_cache.cc +FILE: ../../../third_party/dart/runtime/vm/reverse_pc_lookup_cache.h +FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs.cc +FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs.h +FILE: ../../../third_party/dart/runtime/vm/v8_snapshot_writer.cc +FILE: ../../../third_party/dart/runtime/vm/v8_snapshot_writer.h +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/instantiation.dart +FILE: ../../../third_party/dart/sdk/lib/js/_js.dart +FILE: ../../../third_party/dart/sdk/lib/js/_js_client.dart +FILE: ../../../third_party/dart/sdk/lib/js/_js_server.dart +FILE: ../../../third_party/dart/sdk/lib/typed_data/unmodifiable_typed_data.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/console.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/console_posix.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/console_win.cc + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/console.h +FILE: ../../../third_party/dart/runtime/bin/console_posix.cc +FILE: ../../../third_party/dart/runtime/bin/console_win.cc +---------------------------------------------------------------------------------------------------- +Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/elf_loader.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/elf_loader.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/ifaddrs-android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/ifaddrs-android.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/namespace_fuchsia.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_android.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/ffi.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/ffi_dynamic_library.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/tree_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/isolate_group.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/isolate_group.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/isolate_group.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/timeline_base.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/tree_map.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/isolate_group.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/isolate_group.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/isolate_group.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/timeline_base.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/elf.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/thread_sanitizer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_api_table.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_ffi_api.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_type_table.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/gen_api_table.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/gen_type_table.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/gen_util.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/ffi/sdk_lib_ffi_generator.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.html + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.js + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/run_clang_tidy.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bss_relocs.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/bss_relocs.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/class_id.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_comments.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_comments.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_entry_kind.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/block_builder.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/evaluator.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/evaluator.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_test_helper.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_test_helper.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/offsets_extractor.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/recognized_methods_list.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/relocation.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/runtime_api.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/runtime_api.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/runtime_offsets_extracted.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/runtime_offsets_list.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_arm.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_arm64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_ia32.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/elf.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/elf.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/frame_layout.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/intrusive_dlist.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/libfuzzer/dart_libfuzzer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/longjump.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/pointer_tagging.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/splay-tree.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/static_type_exactness_state.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stub_code_list.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_stack_resource.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_stack_resource.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_state.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_state.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/rti.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/synced/recipe_syntax.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_dynamic_library_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_native_type_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/annotations.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/dynamic_library.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/ffi.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/native_type.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/struct.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/errors.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/elf_loader.cc +FILE: ../../../third_party/dart/runtime/bin/elf_loader.h +FILE: ../../../third_party/dart/runtime/bin/ifaddrs-android.cc +FILE: ../../../third_party/dart/runtime/bin/ifaddrs-android.h +FILE: ../../../third_party/dart/runtime/bin/namespace_fuchsia.h +FILE: ../../../third_party/dart/runtime/bin/socket_base_android.cc +FILE: ../../../third_party/dart/runtime/lib/ffi.cc +FILE: ../../../third_party/dart/runtime/lib/ffi_dynamic_library.cc +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/tree_map.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/isolate_group.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/isolate_group.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/isolate_group.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/timeline_base.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/tree_map.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/isolate_group.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/isolate_group.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/isolate_group.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/timeline_base.dart +FILE: ../../../third_party/dart/runtime/platform/elf.h +FILE: ../../../third_party/dart/runtime/platform/thread_sanitizer.h +FILE: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_api_table.dart +FILE: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_ffi_api.dart +FILE: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_type_table.dart +FILE: ../../../third_party/dart/runtime/tools/dartfuzz/gen_api_table.dart +FILE: ../../../third_party/dart/runtime/tools/dartfuzz/gen_type_table.dart +FILE: ../../../third_party/dart/runtime/tools/dartfuzz/gen_util.dart +FILE: ../../../third_party/dart/runtime/tools/ffi/sdk_lib_ffi_generator.dart +FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.html +FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.js +FILE: ../../../third_party/dart/runtime/tools/run_clang_tidy.dart +FILE: ../../../third_party/dart/runtime/vm/bss_relocs.cc +FILE: ../../../third_party/dart/runtime/vm/bss_relocs.h +FILE: ../../../third_party/dart/runtime/vm/class_id.h +FILE: ../../../third_party/dart/runtime/vm/code_comments.cc +FILE: ../../../third_party/dart/runtime/vm/code_comments.h +FILE: ../../../third_party/dart/runtime/vm/code_entry_kind.h +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.h +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_x64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/block_builder.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/evaluator.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/evaluator.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_test_helper.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_test_helper.h +FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.h +FILE: ../../../third_party/dart/runtime/vm/compiler/offsets_extractor.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/recognized_methods_list.h +FILE: ../../../third_party/dart/runtime/vm/compiler/relocation.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_api.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_api.h +FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_offsets_extracted.h +FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_offsets_list.h +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.h +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_x64.cc +FILE: ../../../third_party/dart/runtime/vm/constants_arm.cc +FILE: ../../../third_party/dart/runtime/vm/constants_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/constants_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/constants_x64.cc +FILE: ../../../third_party/dart/runtime/vm/elf.cc +FILE: ../../../third_party/dart/runtime/vm/elf.h +FILE: ../../../third_party/dart/runtime/vm/frame_layout.h +FILE: ../../../third_party/dart/runtime/vm/intrusive_dlist.h +FILE: ../../../third_party/dart/runtime/vm/libfuzzer/dart_libfuzzer.cc +FILE: ../../../third_party/dart/runtime/vm/longjump.h +FILE: ../../../third_party/dart/runtime/vm/pointer_tagging.h +FILE: ../../../third_party/dart/runtime/vm/splay-tree.h +FILE: ../../../third_party/dart/runtime/vm/static_type_exactness_state.h +FILE: ../../../third_party/dart/runtime/vm/stub_code_list.h +FILE: ../../../third_party/dart/runtime/vm/thread_stack_resource.cc +FILE: ../../../third_party/dart/runtime/vm/thread_stack_resource.h +FILE: ../../../third_party/dart/runtime/vm/thread_state.cc +FILE: ../../../third_party/dart/runtime/vm/thread_state.h +FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/rti.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/synced/recipe_syntax.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_dynamic_library_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_native_type_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_patch.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/annotations.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/dynamic_library.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/ffi.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/native_type.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/struct.dart +FILE: ../../../third_party/dart/sdk/lib/internal/errors.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/sdk/lib/io/network_profiling.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/sdk/lib/io/network_profiling.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/dartdev_isolate.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/dartdev_isolate.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/exe_utils.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/exe_utils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/ffi_unit_test/run_ffi_unit_tests.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/file_win.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform_macos.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/dart_api_dl.c + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/dart_api_dl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/dart_version.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/internal/dart_api_dl_impl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/bin/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/process_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/bin/heap_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/process_snapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/allocation.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/leak_sanitizer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/priority_queue.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/unaligned.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/undefined_behavior_sanitizer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/canonical_tables.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/closure_functions_cache.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/closure_functions_cache.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/dispatch_table_generator.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/dispatch_table_generator.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler_tracer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler_tracer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/api/deopt_id.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/api/print_filter.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/api/print_filter.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/api/type_check_mode.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_base.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/abi.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/abi.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/call.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/call.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/callback.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/callback.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/frame_rebase.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/frame_rebase.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/marshaller.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/marshaller.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_calling_convention.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_calling_convention.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_location.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_location.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/unit_test_custom_zone.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/unit_test_custom_zone.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/constants_base.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dispatch_table.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/dispatch_table.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/experimental_features.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/experimental_features.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/field_table.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/field_table.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/port_set.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/tagged_pointer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/timeline_macos.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/visitor.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/embedder_config.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_struct_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/internal/lowering.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/dartdev_isolate.cc +FILE: ../../../third_party/dart/runtime/bin/dartdev_isolate.h +FILE: ../../../third_party/dart/runtime/bin/exe_utils.cc +FILE: ../../../third_party/dart/runtime/bin/exe_utils.h +FILE: ../../../third_party/dart/runtime/bin/ffi_unit_test/run_ffi_unit_tests.cc +FILE: ../../../third_party/dart/runtime/bin/file_win.h +FILE: ../../../third_party/dart/runtime/bin/platform_macos.h +FILE: ../../../third_party/dart/runtime/include/dart_api_dl.c +FILE: ../../../third_party/dart/runtime/include/dart_api_dl.h +FILE: ../../../third_party/dart/runtime/include/dart_version.h +FILE: ../../../third_party/dart/runtime/include/internal/dart_api_dl_impl.h +FILE: ../../../third_party/dart/runtime/observatory/bin/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/process_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory_2/bin/heap_snapshot.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/process_snapshot.dart +FILE: ../../../third_party/dart/runtime/platform/allocation.cc +FILE: ../../../third_party/dart/runtime/platform/leak_sanitizer.h +FILE: ../../../third_party/dart/runtime/platform/priority_queue.h +FILE: ../../../third_party/dart/runtime/platform/unaligned.h +FILE: ../../../third_party/dart/runtime/platform/undefined_behavior_sanitizer.h +FILE: ../../../third_party/dart/runtime/vm/canonical_tables.cc +FILE: ../../../third_party/dart/runtime/vm/closure_functions_cache.cc +FILE: ../../../third_party/dart/runtime/vm/closure_functions_cache.h +FILE: ../../../third_party/dart/runtime/vm/compiler/aot/dispatch_table_generator.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/aot/dispatch_table_generator.h +FILE: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler_tracer.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler_tracer.h +FILE: ../../../third_party/dart/runtime/vm/compiler/api/deopt_id.h +FILE: ../../../third_party/dart/runtime/vm/compiler/api/print_filter.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/api/print_filter.h +FILE: ../../../third_party/dart/runtime/vm/compiler/api/type_check_mode.h +FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_base.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/abi.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/abi.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/call.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/call.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/callback.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/callback.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/frame_rebase.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/frame_rebase.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/marshaller.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/marshaller.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_calling_convention.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_calling_convention.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_location.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_location.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/unit_test_custom_zone.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/unit_test_custom_zone.h +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.h +FILE: ../../../third_party/dart/runtime/vm/constants_base.h +FILE: ../../../third_party/dart/runtime/vm/dispatch_table.cc +FILE: ../../../third_party/dart/runtime/vm/dispatch_table.h +FILE: ../../../third_party/dart/runtime/vm/experimental_features.cc +FILE: ../../../third_party/dart/runtime/vm/experimental_features.h +FILE: ../../../third_party/dart/runtime/vm/field_table.cc +FILE: ../../../third_party/dart/runtime/vm/field_table.h +FILE: ../../../third_party/dart/runtime/vm/port_set.h +FILE: ../../../third_party/dart/runtime/vm/tagged_pointer.h +FILE: ../../../third_party/dart/runtime/vm/timeline_macos.cc +FILE: ../../../third_party/dart/runtime/vm/visitor.cc +FILE: ../../../third_party/dart/sdk/lib/_http/embedder_config.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_struct_patch.dart +FILE: ../../../third_party/dart/sdk/lib/internal/lowering.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/analyze_snapshot.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform_macos_cocoa.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/platform_macos_cocoa.mm + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_posix.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/utils.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/virtual_memory.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/virtual_memory_fuchsia.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/virtual_memory_posix.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/virtual_memory_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/include/analyze_snapshot_api.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/analyze_snapshot_api_impl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_timings.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_timings.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/range.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/cpu_riscv.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/debugger_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions_riscv.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/message_snapshot.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/message_snapshot.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_graph_copy.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/object_graph_copy.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/pending_deopts.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/pending_deopts.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_riscv.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_riscv.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_android_arm.S + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_compressed.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_compressed.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/dart2js_runtime_metrics.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/late_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_allocation_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/enum.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/abi.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/abi_specific.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/allocation.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/union.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/analyze_snapshot.cc +FILE: ../../../third_party/dart/runtime/bin/platform_macos_cocoa.h +FILE: ../../../third_party/dart/runtime/bin/platform_macos_cocoa.mm +FILE: ../../../third_party/dart/runtime/bin/socket_base_posix.cc +FILE: ../../../third_party/dart/runtime/bin/utils.cc +FILE: ../../../third_party/dart/runtime/bin/virtual_memory.h +FILE: ../../../third_party/dart/runtime/bin/virtual_memory_fuchsia.cc +FILE: ../../../third_party/dart/runtime/bin/virtual_memory_posix.cc +FILE: ../../../third_party/dart/runtime/bin/virtual_memory_win.cc +FILE: ../../../third_party/dart/runtime/include/analyze_snapshot_api.h +FILE: ../../../third_party/dart/runtime/vm/analyze_snapshot_api_impl.cc +FILE: ../../../third_party/dart/runtime/vm/code_patcher_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_timings.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_timings.h +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/range.h +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/cpu_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/cpu_riscv.h +FILE: ../../../third_party/dart/runtime/vm/debugger_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/instructions_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/instructions_riscv.h +FILE: ../../../third_party/dart/runtime/vm/message_snapshot.cc +FILE: ../../../third_party/dart/runtime/vm/message_snapshot.h +FILE: ../../../third_party/dart/runtime/vm/object_graph_copy.cc +FILE: ../../../third_party/dart/runtime/vm/object_graph_copy.h +FILE: ../../../third_party/dart/runtime/vm/pending_deopts.cc +FILE: ../../../third_party/dart/runtime/vm/pending_deopts.h +FILE: ../../../third_party/dart/runtime/vm/runtime_entry_riscv.cc +FILE: ../../../third_party/dart/runtime/vm/stack_frame_riscv.h +FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_android_arm.S +FILE: ../../../third_party/dart/runtime/vm/virtual_memory_compressed.cc +FILE: ../../../third_party/dart/runtime/vm/virtual_memory_compressed.h +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/dart2js_runtime_metrics.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/late_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_allocation_patch.dart +FILE: ../../../third_party/dart/sdk/lib/core/enum.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/abi.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/abi_specific.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/allocation.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/union.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/test_utils.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/test_utils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_absl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/bin/thread_absl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/lib/integers.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/mach_o.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/pe.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/bin/download.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/bin/explore.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/heapsnapshot.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/analysis.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/cli.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/completion.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/console.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/expression.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/format.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/intset.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/load.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_serializer.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_serializer.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/gc_shared.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/gc_shared.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/page.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/page.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/sampler.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/heap/sampler.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/instructions.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_absl.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_absl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator_x64.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/simulator_x64.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_testing.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_names.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/runtime_metrics.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/load_library_priority.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_util_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/synced/embedded_names.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_native_finalizer_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/finalizer_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/hash_factories.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/record_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/bool.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/class_id.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/convert_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/core_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/deferred.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/developer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/double.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/errors_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/growable_list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/hash_factories.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/identical_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/int.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/internal_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/isolate_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_util_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/list.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/math_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/named_parameters.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/object_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/print_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/regexp_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/regexp_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/simd_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/stack_trace_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/stopwatch_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/symbol_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/timer_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/type.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/typed_data_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/uri_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_wasm/wasm_types.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/core/record.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/c_type.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/ffi/native_finalizer.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js/js_wasm.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js_util/js_util_wasm.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/test_utils.cc +FILE: ../../../third_party/dart/runtime/bin/test_utils.h +FILE: ../../../third_party/dart/runtime/bin/thread_absl.cc +FILE: ../../../third_party/dart/runtime/bin/thread_absl.h +FILE: ../../../third_party/dart/runtime/lib/integers.h +FILE: ../../../third_party/dart/runtime/platform/mach_o.h +FILE: ../../../third_party/dart/runtime/platform/pe.h +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/bin/download.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/bin/explore.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/heapsnapshot.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/analysis.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/cli.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/completion.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/console.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/expression.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/format.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/intset.dart +FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/load.dart +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_serializer.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_serializer.h +FILE: ../../../third_party/dart/runtime/vm/heap/gc_shared.cc +FILE: ../../../third_party/dart/runtime/vm/heap/gc_shared.h +FILE: ../../../third_party/dart/runtime/vm/heap/page.cc +FILE: ../../../third_party/dart/runtime/vm/heap/page.h +FILE: ../../../third_party/dart/runtime/vm/heap/sampler.cc +FILE: ../../../third_party/dart/runtime/vm/heap/sampler.h +FILE: ../../../third_party/dart/runtime/vm/instructions.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread_absl.cc +FILE: ../../../third_party/dart/runtime/vm/os_thread_absl.h +FILE: ../../../third_party/dart/runtime/vm/simulator_x64.cc +FILE: ../../../third_party/dart/runtime/vm/simulator_x64.h +FILE: ../../../third_party/dart/sdk/lib/_http/http_testing.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_names.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/runtime_metrics.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/load_library_priority.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_util_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/synced/embedded_names.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_native_finalizer_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/finalizer_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/hash_factories.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/record_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/bool.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/class_id.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/convert_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/core_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/deferred.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/developer.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/double.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/errors_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/growable_list.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/hash_factories.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/identical_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/int.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/internal_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/isolate_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_util_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/list.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/math_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/named_parameters.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/object_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/print_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/regexp_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/regexp_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/simd_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/stack_trace_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/stopwatch_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/symbol_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/timer_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/type.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/typed_data_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/uri_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_wasm/wasm_types.dart +FILE: ../../../third_party/dart/sdk/lib/core/record.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/c_type.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/native_finalizer.dart +FILE: ../../../third_party/dart/sdk/lib/js/js_wasm.dart +FILE: ../../../third_party/dart/sdk/lib/js_util/js_util_wasm.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/main_impl.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/unwinding_records.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/unwinding_records.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/platform/unwinding_records_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/parallel_move_resolver.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/parallel_move_resolver.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/ffi/native_assets.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/ffi/native_assets.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/ffi_callback_metadata.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/ffi_callback_metadata.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/unwinding_records.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/unwinding_records.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/unwinding_records_win.cc + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/records.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_allow_interop_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/records.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/closure.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/date_patch_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_array.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_unsafe_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_string.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_typed_array.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_types.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/record_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_buffer_create.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_stringref_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/sync_star_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/weak_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/async/future_extensions.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js_interop/js_interop.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/js_interop_unsafe/js_interop_unsafe.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/main_impl.h +FILE: ../../../third_party/dart/runtime/platform/unwinding_records.cc +FILE: ../../../third_party/dart/runtime/platform/unwinding_records.h +FILE: ../../../third_party/dart/runtime/platform/unwinding_records_win.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/parallel_move_resolver.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/parallel_move_resolver.h +FILE: ../../../third_party/dart/runtime/vm/ffi/native_assets.cc +FILE: ../../../third_party/dart/runtime/vm/ffi/native_assets.h +FILE: ../../../third_party/dart/runtime/vm/ffi_callback_metadata.cc +FILE: ../../../third_party/dart/runtime/vm/ffi_callback_metadata.h +FILE: ../../../third_party/dart/runtime/vm/unwinding_records.cc +FILE: ../../../third_party/dart/runtime/vm/unwinding_records.h +FILE: ../../../third_party/dart/runtime/vm/unwinding_records_win.cc +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/records.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_allow_interop_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/records.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/closure.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/date_patch_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_array.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_unsafe_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_string.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_typed_array.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_types.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/record_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_buffer_create.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_stringref_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/sync_star_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/weak_patch.dart +FILE: ../../../third_party/dart/sdk/lib/async/future_extensions.dart +FILE: ../../../third_party/dart/sdk/lib/js_interop/js_interop.dart +FILE: ../../../third_party/dart/sdk/lib/js_interop_unsafe/js_interop_unsafe.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/vm/perfetto_utils.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/common/builtin_clock.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/clock_snapshot.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/interned_data/interned_data.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_common.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_packet.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace_packet.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/debug_annotation.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/process_descriptor.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_descriptor.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_event.pbzero.h + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/runtime/vm/protos/tools/compile_perfetto_protos.dart + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/vm/perfetto_utils.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/common/builtin_clock.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/clock_snapshot.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/interned_data/interned_data.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_common.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_packet.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace_packet.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/debug_annotation.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/process_descriptor.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_descriptor.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_event.pbzero.h +FILE: ../../../third_party/dart/runtime/vm/protos/tools/compile_perfetto_protos.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: double-conversion +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/cached-powers.cc +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/cached-powers.cc +---------------------------------------------------------------------------------------------------- +Copyright 2006-2008 the V8 project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: double-conversion +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum-dtoa.cc +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum-dtoa.h +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum.cc +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum.h +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/cached-powers.h +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/diy-fp.cc +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/diy-fp.h +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/double-conversion.cc +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/fast-dtoa.h +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/fixed-dtoa.cc +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/fixed-dtoa.h +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/strtod.cc +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/strtod.h +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/utils.h +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum-dtoa.cc +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum-dtoa.h +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum.cc +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum.h +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/cached-powers.h +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/diy-fp.cc +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/diy-fp.h +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/double-conversion.cc +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/fast-dtoa.h +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/fixed-dtoa.cc +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/fixed-dtoa.h +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/strtod.cc +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/strtod.h +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/utils.h +---------------------------------------------------------------------------------------------------- +Copyright 2010 the V8 project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: double-conversion +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/double-conversion.h +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/fast-dtoa.cc +ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/ieee.h +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/double-conversion.h +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/fast-dtoa.cc +FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/ieee.h +---------------------------------------------------------------------------------------------------- +Copyright 2012 the V8 project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/observatory/lib/elements.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/img/chromium_icon.png +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/img/dart_icon.png +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/img/isolate_icon.png +FILE: ../../../third_party/dart/runtime/observatory/web/favicon.ico +FILE: ../../../third_party/dart/runtime/observatory/web/index.html +FILE: ../../../third_party/dart/runtime/observatory/web/third_party/trace_viewer_full.html +FILE: ../../../third_party/dart/runtime/observatory/web/timeline.html +FILE: ../../../third_party/dart/runtime/observatory_2/lib/elements.dart +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/img/chromium_icon.png +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/img/dart_icon.png +FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/img/isolate_icon.png +FILE: ../../../third_party/dart/runtime/observatory_2/web/favicon.ico +FILE: ../../../third_party/dart/runtime/observatory_2/web/index.html +FILE: ../../../third_party/dart/runtime/observatory_2/web/third_party/trace_viewer_full.html +FILE: ../../../third_party/dart/runtime/observatory_2/web/timeline.html +FILE: ../../../third_party/dart/runtime/tools/wiki/styles/style.scss +FILE: ../../../third_party/dart/runtime/tools/wiki/templates/includes/auto-refresh.html +FILE: ../../../third_party/dart/runtime/tools/wiki/templates/page.html +FILE: ../../../third_party/dart/sdk.code-workspace +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/async_patch.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/conversions_dart2js.dart +FILE: ../../../third_party/dart/sdk/lib/html/html_common/html_common.dart +---------------------------------------------------------------------------------------------------- +Copyright 2012, the Dart project authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + +Total license count: 24 diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index f2977690a3d4a..a21f4c7eaa0f3 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 020a62eaf6a32a473be05d6959fde453 +Signature: ff86e3434d56e19fcd722fe8cb2005b9 ==================================================================================================== LIBRARY: angle @@ -273,7 +273,6 @@ limitations under the License. ==================================================================================================== LIBRARY: abseil-cpp LIBRARY: angle -LIBRARY: dart LIBRARY: expat LIBRARY: flatbuffers LIBRARY: fuchsia-vulkan @@ -523,18 +522,6 @@ ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_ ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/angle/src/android_system_settings/src/com/android/angle/common/SearchProvider.java ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/angle/src/common/vulkan/vk_google_filtering_precision.h ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/angle/src/libANGLE/Overlay_font_autogen.cpp -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/common/builtin_clock.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/clock_snapshot.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/interned_data/interned_data.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_common.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_packet.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace_packet.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/debug_annotation.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/process_descriptor.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/thread_descriptor.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_descriptor.proto -ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_event.proto ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/expat/expat/fuzz/xml_parse_fuzzer.c ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/expat/expat/fuzz/xml_parsebuffer_fuzzer.c ORIGIN: http://www.apache.org/licenses/LICENSE-2.0 referenced by ../../../third_party/flatbuffers/conan/test_package/test_package.cpp @@ -2556,18 +2543,6 @@ FILE: ../../../third_party/angle/src/android_system_settings/src/com/android/ang FILE: ../../../third_party/angle/src/common/vulkan/vk_google_filtering_precision.h FILE: ../../../third_party/angle/src/libANGLE/Overlay_font_autogen.cpp FILE: ../../../third_party/angle/src/libANGLE/overlay/RobotoMono-Bold.ttf -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/common/builtin_clock.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/clock_snapshot.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/interned_data/interned_data.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_common.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_packet.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace_packet.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/debug_annotation.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/process_descriptor.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/thread_descriptor.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_descriptor.proto -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_event.proto FILE: ../../../third_party/expat/expat/fuzz/xml_parse_fuzzer.c FILE: ../../../third_party/expat/expat/fuzz/xml_parsebuffer_fuzzer.c FILE: ../../../third_party/flatbuffers/composer.json @@ -33753,47 +33728,6 @@ use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/bigint_patch.dart -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bigint_patch.dart -TYPE: LicenseType.mit -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/bigint_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bigint_patch.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2003-2005 Tom Wu -Copyright (c) 2012 Adam Singer (adam@solvr.io) -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, -EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY -WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, -INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER -RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF -THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT -OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -In addition, the following condition applies: - -All redistributions must retain an intact copy of this copyright notice -and disclaimer. -==================================================================================================== - ==================================================================================================== LIBRARY: icu ORIGIN: ../../../third_party/icu/source/i18n/gregoimp.cpp + ../../../third_party/icu/LICENSE @@ -35625,43 +35559,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/platform/splay-tree-inl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/splay-tree.h + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/platform/splay-tree-inl.h -FILE: ../../../third_party/dart/runtime/platform/splay-tree.h ----------------------------------------------------------------------------------------------------- -Copyright (c) 2010, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: include ORIGIN: ../../../third_party/inja/third_party/include/hayai/LICENSE.md @@ -35850,189 +35747,6 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/snapshot_empty.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/snapshot_in.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/dart_tools_api.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/double.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/math.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/mirrors.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/object.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/string.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bitfield.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_impl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart_entry.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart_entry.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/debugger_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/debugger_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/debugger_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/double_conversion.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/double_conversion.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/exceptions.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/exceptions.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/handle_visitor.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/handles.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/freelist.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/marker.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/marker.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/pages.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/scavenger.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/sweeper.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/sweeper.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/verifier.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/longjump.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/memory_region.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/message.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/message.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/message_handler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/message_handler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_entry.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_entry.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_function.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/port.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/resolver.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/resolver.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_list.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stub_code.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/timer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/timer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/token.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/unicode_data.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/visitor.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/queue.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/comparable.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/date_time.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/duration.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/function.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/iterable.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/pattern.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/set.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/stopwatch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/string_buffer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/device.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/filtered_element_list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/lists.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/iterable.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/sort.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/snapshot_empty.cc -FILE: ../../../third_party/dart/runtime/bin/snapshot_in.cc -FILE: ../../../third_party/dart/runtime/include/dart_tools_api.h -FILE: ../../../third_party/dart/runtime/lib/double.cc -FILE: ../../../third_party/dart/runtime/lib/math.cc -FILE: ../../../third_party/dart/runtime/lib/mirrors.h -FILE: ../../../third_party/dart/runtime/lib/object.cc -FILE: ../../../third_party/dart/runtime/lib/string.cc -FILE: ../../../third_party/dart/runtime/vm/bitfield.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.h -FILE: ../../../third_party/dart/runtime/vm/cpu_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/dart.h -FILE: ../../../third_party/dart/runtime/vm/dart_api_impl.h -FILE: ../../../third_party/dart/runtime/vm/dart_entry.cc -FILE: ../../../third_party/dart/runtime/vm/dart_entry.h -FILE: ../../../third_party/dart/runtime/vm/debugger_arm.cc -FILE: ../../../third_party/dart/runtime/vm/debugger_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/debugger_x64.cc -FILE: ../../../third_party/dart/runtime/vm/double_conversion.cc -FILE: ../../../third_party/dart/runtime/vm/double_conversion.h -FILE: ../../../third_party/dart/runtime/vm/exceptions.cc -FILE: ../../../third_party/dart/runtime/vm/exceptions.h -FILE: ../../../third_party/dart/runtime/vm/handle_visitor.h -FILE: ../../../third_party/dart/runtime/vm/handles.h -FILE: ../../../third_party/dart/runtime/vm/heap/freelist.cc -FILE: ../../../third_party/dart/runtime/vm/heap/marker.cc -FILE: ../../../third_party/dart/runtime/vm/heap/marker.h -FILE: ../../../third_party/dart/runtime/vm/heap/pages.h -FILE: ../../../third_party/dart/runtime/vm/heap/scavenger.cc -FILE: ../../../third_party/dart/runtime/vm/heap/sweeper.cc -FILE: ../../../third_party/dart/runtime/vm/heap/sweeper.h -FILE: ../../../third_party/dart/runtime/vm/heap/verifier.h -FILE: ../../../third_party/dart/runtime/vm/longjump.cc -FILE: ../../../third_party/dart/runtime/vm/memory_region.cc -FILE: ../../../third_party/dart/runtime/vm/message.cc -FILE: ../../../third_party/dart/runtime/vm/message.h -FILE: ../../../third_party/dart/runtime/vm/message_handler.cc -FILE: ../../../third_party/dart/runtime/vm/message_handler.h -FILE: ../../../third_party/dart/runtime/vm/native_entry.cc -FILE: ../../../third_party/dart/runtime/vm/native_entry.h -FILE: ../../../third_party/dart/runtime/vm/native_function.h -FILE: ../../../third_party/dart/runtime/vm/os.h -FILE: ../../../third_party/dart/runtime/vm/port.h -FILE: ../../../third_party/dart/runtime/vm/resolver.cc -FILE: ../../../third_party/dart/runtime/vm/resolver.h -FILE: ../../../third_party/dart/runtime/vm/runtime_entry.cc -FILE: ../../../third_party/dart/runtime/vm/runtime_entry.h -FILE: ../../../third_party/dart/runtime/vm/runtime_entry_arm.cc -FILE: ../../../third_party/dart/runtime/vm/runtime_entry_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/runtime_entry_list.h -FILE: ../../../third_party/dart/runtime/vm/runtime_entry_x64.cc -FILE: ../../../third_party/dart/runtime/vm/stack_frame.h -FILE: ../../../third_party/dart/runtime/vm/stub_code.h -FILE: ../../../third_party/dart/runtime/vm/timer.cc -FILE: ../../../third_party/dart/runtime/vm/timer.h -FILE: ../../../third_party/dart/runtime/vm/token.cc -FILE: ../../../third_party/dart/runtime/vm/unicode_data.cc -FILE: ../../../third_party/dart/runtime/vm/visitor.h -FILE: ../../../third_party/dart/sdk/lib/collection/queue.dart -FILE: ../../../third_party/dart/sdk/lib/core/comparable.dart -FILE: ../../../third_party/dart/sdk/lib/core/date_time.dart -FILE: ../../../third_party/dart/sdk/lib/core/duration.dart -FILE: ../../../third_party/dart/sdk/lib/core/function.dart -FILE: ../../../third_party/dart/sdk/lib/core/iterable.dart -FILE: ../../../third_party/dart/sdk/lib/core/map.dart -FILE: ../../../third_party/dart/sdk/lib/core/pattern.dart -FILE: ../../../third_party/dart/sdk/lib/core/set.dart -FILE: ../../../third_party/dart/sdk/lib/core/stopwatch.dart -FILE: ../../../third_party/dart/sdk/lib/core/string_buffer.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/device.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/filtered_element_list.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/lists.dart -FILE: ../../../third_party/dart/sdk/lib/internal/iterable.dart -FILE: ../../../third_party/dart/sdk/lib/internal/sort.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: icu ORIGIN: ../../../third_party/icu/source/data/brkitr/dictionaries/khmerdict.txt + ../../../third_party/icu/LICENSE @@ -36125,773 +35839,6 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/builtin.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/builtin.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/builtin_gen_snapshot.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/builtin_in.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/builtin_natives.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/crashpad.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/crypto.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/crypto.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/crypto_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/crypto_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/crypto_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/crypto_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/dartutils.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/dartutils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/directory.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/directory.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/directory_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/directory_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/directory_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/directory_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_android.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_linux.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_macos.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_win.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/fdutils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/fdutils_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/fdutils_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/fdutils_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/fdutils_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/io_buffer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/io_buffer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/io_natives.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/isolate_data.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/lockers.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/main.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/main_impl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/process.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/process_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/process_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/process_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/process_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/run_vm_tests.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_unsupported.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_android.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_linux.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_macos.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_win.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_android.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_linux.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_macos.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_win.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/utils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/utils_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/utils_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/utils_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/utils_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/utils_win.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/dart_api.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/array.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/bool.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/date.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/errors.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/function.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/growable_array.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/identical.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/integers.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/isolate.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/mirrors.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/regexp.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/stopwatch.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/assert.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/assert.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/floating_point.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/floating_point_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/floating_point_win.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/globals.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/hashmap.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/hashmap.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/syslog.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/syslog_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/syslog_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/syslog_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/syslog_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/text_buffer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/text_buffer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/unicode.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/unicode.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_android.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_linux.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_macos.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_win.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/allocation.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/base_isolate.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bit_set.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bit_vector.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bit_vector.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bitmap.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bitmap.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/boolfield.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bootstrap.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bootstrap.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bootstrap_natives.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bootstrap_natives.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/class_finalizer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/class_table.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/class_table.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_descriptors.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_descriptors.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_observers.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_observers.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/aot_call_specializer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_base.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_x86.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/object_pool_builder.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/constant_propagator.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_printer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_printer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/inliner.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/cha.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/cha.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/flow_graph_builder.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/flow_graph_builder.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/intrinsifier.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/intrinsifier.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/jit/compiler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/jit/compiler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_message.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_state.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/datastream.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/debugger.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/debugger.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/double_internals.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/flag_list.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/flags.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/flags.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/globals.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/growable_array.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/handles.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/handles_impl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/hash_map.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/freelist.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/heap.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/heap.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/pages.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/pointer_block.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/pointer_block.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/scavenger.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/verifier.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_ia32.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_x64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/lockers.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/megamorphic_cache_table.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/megamorphic_cache_table.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/memory_region.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_arguments.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_message_handler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_message_handler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_set.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_store.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_android.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_linux.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_macos.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_win.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/parser.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/parser.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/port.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/proccpuinfo.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/proccpuinfo.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/raw_object.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/raw_object.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/scopes.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/scopes.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/snapshot.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/snapshot.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stub_code.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/symbols.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/symbols.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_pool.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_pool.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/token.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/unicode.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/version.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/version_in.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_posix.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/zone.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/zone.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/crypto.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_date.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/interceptors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_array.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_number.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_string.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/native_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/string_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/async_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/bigint_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/constant_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/core_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/foreign_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/interceptors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/isolate_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_array.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_number.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_string.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/math_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/native_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/regexp_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/string_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/builtin.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/common_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/directory_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/eventhandler_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/file_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/platform_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/secure_socket_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/array.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/double.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/double_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/empty_source.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/errors_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/expando_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/function_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/growable_array.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/identical_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/immutable_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/integers.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/isolate_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/math_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirrors_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirrors_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/object_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/print_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/regexp_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/stopwatch_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/string_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timer_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/type_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/weak_property.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/array_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bool_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/date_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/integers_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/map_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/string_buffer_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/async.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/async_error.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/broadcast_stream_controller.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/future.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/future_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/stream_controller.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/stream_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/stream_pipe.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/timer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/collection.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/iterable.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/iterator.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/maps.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/splay_tree.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/bool.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/core.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/double.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/errors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/exceptions.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/identical.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/int.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/invocation.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/iterator.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/num.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/print.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/regexp.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/string.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/type.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/uri.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/weak.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/dartium/nativewrappers.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/conversions.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/css_class_set.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/html_common_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/html_common/metadata.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/async_cast.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/cast.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/internal.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/common.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/directory.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/directory_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/eventhandler.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/io.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/platform.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/platform_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/secure_server_socket.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/isolate/isolate.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/math/math.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/math/random.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/svg/dart2js/svg_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/builtin.cc -FILE: ../../../third_party/dart/runtime/bin/builtin.h -FILE: ../../../third_party/dart/runtime/bin/builtin_gen_snapshot.cc -FILE: ../../../third_party/dart/runtime/bin/builtin_in.cc -FILE: ../../../third_party/dart/runtime/bin/builtin_natives.cc -FILE: ../../../third_party/dart/runtime/bin/crashpad.cc -FILE: ../../../third_party/dart/runtime/bin/crypto.cc -FILE: ../../../third_party/dart/runtime/bin/crypto.h -FILE: ../../../third_party/dart/runtime/bin/crypto_android.cc -FILE: ../../../third_party/dart/runtime/bin/crypto_linux.cc -FILE: ../../../third_party/dart/runtime/bin/crypto_macos.cc -FILE: ../../../third_party/dart/runtime/bin/crypto_win.cc -FILE: ../../../third_party/dart/runtime/bin/dartutils.cc -FILE: ../../../third_party/dart/runtime/bin/dartutils.h -FILE: ../../../third_party/dart/runtime/bin/directory.cc -FILE: ../../../third_party/dart/runtime/bin/directory.h -FILE: ../../../third_party/dart/runtime/bin/directory_android.cc -FILE: ../../../third_party/dart/runtime/bin/directory_linux.cc -FILE: ../../../third_party/dart/runtime/bin/directory_macos.cc -FILE: ../../../third_party/dart/runtime/bin/directory_win.cc -FILE: ../../../third_party/dart/runtime/bin/eventhandler.cc -FILE: ../../../third_party/dart/runtime/bin/eventhandler.h -FILE: ../../../third_party/dart/runtime/bin/eventhandler_android.cc -FILE: ../../../third_party/dart/runtime/bin/eventhandler_android.h -FILE: ../../../third_party/dart/runtime/bin/eventhandler_linux.cc -FILE: ../../../third_party/dart/runtime/bin/eventhandler_linux.h -FILE: ../../../third_party/dart/runtime/bin/eventhandler_macos.cc -FILE: ../../../third_party/dart/runtime/bin/eventhandler_macos.h -FILE: ../../../third_party/dart/runtime/bin/eventhandler_win.h -FILE: ../../../third_party/dart/runtime/bin/fdutils.h -FILE: ../../../third_party/dart/runtime/bin/fdutils_android.cc -FILE: ../../../third_party/dart/runtime/bin/fdutils_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/fdutils_linux.cc -FILE: ../../../third_party/dart/runtime/bin/fdutils_macos.cc -FILE: ../../../third_party/dart/runtime/bin/file_android.cc -FILE: ../../../third_party/dart/runtime/bin/file_linux.cc -FILE: ../../../third_party/dart/runtime/bin/file_macos.cc -FILE: ../../../third_party/dart/runtime/bin/file_win.cc -FILE: ../../../third_party/dart/runtime/bin/io_buffer.cc -FILE: ../../../third_party/dart/runtime/bin/io_buffer.h -FILE: ../../../third_party/dart/runtime/bin/io_natives.h -FILE: ../../../third_party/dart/runtime/bin/isolate_data.h -FILE: ../../../third_party/dart/runtime/bin/lockers.h -FILE: ../../../third_party/dart/runtime/bin/main.cc -FILE: ../../../third_party/dart/runtime/bin/main_impl.cc -FILE: ../../../third_party/dart/runtime/bin/platform.cc -FILE: ../../../third_party/dart/runtime/bin/platform.h -FILE: ../../../third_party/dart/runtime/bin/platform_android.cc -FILE: ../../../third_party/dart/runtime/bin/platform_linux.cc -FILE: ../../../third_party/dart/runtime/bin/platform_macos.cc -FILE: ../../../third_party/dart/runtime/bin/platform_win.cc -FILE: ../../../third_party/dart/runtime/bin/process.h -FILE: ../../../third_party/dart/runtime/bin/process_android.cc -FILE: ../../../third_party/dart/runtime/bin/process_linux.cc -FILE: ../../../third_party/dart/runtime/bin/process_macos.cc -FILE: ../../../third_party/dart/runtime/bin/process_win.cc -FILE: ../../../third_party/dart/runtime/bin/run_vm_tests.cc -FILE: ../../../third_party/dart/runtime/bin/secure_socket_unsupported.cc -FILE: ../../../third_party/dart/runtime/bin/socket_android.cc -FILE: ../../../third_party/dart/runtime/bin/socket_base_android.h -FILE: ../../../third_party/dart/runtime/bin/socket_base_linux.h -FILE: ../../../third_party/dart/runtime/bin/socket_base_macos.h -FILE: ../../../third_party/dart/runtime/bin/socket_base_win.h -FILE: ../../../third_party/dart/runtime/bin/thread.h -FILE: ../../../third_party/dart/runtime/bin/thread_android.cc -FILE: ../../../third_party/dart/runtime/bin/thread_android.h -FILE: ../../../third_party/dart/runtime/bin/thread_linux.cc -FILE: ../../../third_party/dart/runtime/bin/thread_linux.h -FILE: ../../../third_party/dart/runtime/bin/thread_macos.cc -FILE: ../../../third_party/dart/runtime/bin/thread_macos.h -FILE: ../../../third_party/dart/runtime/bin/thread_win.cc -FILE: ../../../third_party/dart/runtime/bin/thread_win.h -FILE: ../../../third_party/dart/runtime/bin/utils.h -FILE: ../../../third_party/dart/runtime/bin/utils_android.cc -FILE: ../../../third_party/dart/runtime/bin/utils_linux.cc -FILE: ../../../third_party/dart/runtime/bin/utils_macos.cc -FILE: ../../../third_party/dart/runtime/bin/utils_win.cc -FILE: ../../../third_party/dart/runtime/bin/utils_win.h -FILE: ../../../third_party/dart/runtime/include/dart_api.h -FILE: ../../../third_party/dart/runtime/lib/array.cc -FILE: ../../../third_party/dart/runtime/lib/bool.cc -FILE: ../../../third_party/dart/runtime/lib/date.cc -FILE: ../../../third_party/dart/runtime/lib/errors.cc -FILE: ../../../third_party/dart/runtime/lib/function.cc -FILE: ../../../third_party/dart/runtime/lib/growable_array.cc -FILE: ../../../third_party/dart/runtime/lib/identical.cc -FILE: ../../../third_party/dart/runtime/lib/integers.cc -FILE: ../../../third_party/dart/runtime/lib/isolate.cc -FILE: ../../../third_party/dart/runtime/lib/mirrors.cc -FILE: ../../../third_party/dart/runtime/lib/regexp.cc -FILE: ../../../third_party/dart/runtime/lib/stopwatch.cc -FILE: ../../../third_party/dart/runtime/platform/assert.cc -FILE: ../../../third_party/dart/runtime/platform/assert.h -FILE: ../../../third_party/dart/runtime/platform/floating_point.h -FILE: ../../../third_party/dart/runtime/platform/floating_point_win.cc -FILE: ../../../third_party/dart/runtime/platform/floating_point_win.h -FILE: ../../../third_party/dart/runtime/platform/globals.h -FILE: ../../../third_party/dart/runtime/platform/hashmap.cc -FILE: ../../../third_party/dart/runtime/platform/hashmap.h -FILE: ../../../third_party/dart/runtime/platform/syslog.h -FILE: ../../../third_party/dart/runtime/platform/syslog_android.cc -FILE: ../../../third_party/dart/runtime/platform/syslog_linux.cc -FILE: ../../../third_party/dart/runtime/platform/syslog_macos.cc -FILE: ../../../third_party/dart/runtime/platform/syslog_win.cc -FILE: ../../../third_party/dart/runtime/platform/text_buffer.cc -FILE: ../../../third_party/dart/runtime/platform/text_buffer.h -FILE: ../../../third_party/dart/runtime/platform/unicode.cc -FILE: ../../../third_party/dart/runtime/platform/unicode.h -FILE: ../../../third_party/dart/runtime/platform/utils.cc -FILE: ../../../third_party/dart/runtime/platform/utils.h -FILE: ../../../third_party/dart/runtime/platform/utils_android.cc -FILE: ../../../third_party/dart/runtime/platform/utils_android.h -FILE: ../../../third_party/dart/runtime/platform/utils_linux.cc -FILE: ../../../third_party/dart/runtime/platform/utils_linux.h -FILE: ../../../third_party/dart/runtime/platform/utils_macos.cc -FILE: ../../../third_party/dart/runtime/platform/utils_macos.h -FILE: ../../../third_party/dart/runtime/platform/utils_win.cc -FILE: ../../../third_party/dart/runtime/platform/utils_win.h -FILE: ../../../third_party/dart/runtime/vm/allocation.cc -FILE: ../../../third_party/dart/runtime/vm/base_isolate.h -FILE: ../../../third_party/dart/runtime/vm/bit_set.h -FILE: ../../../third_party/dart/runtime/vm/bit_vector.cc -FILE: ../../../third_party/dart/runtime/vm/bit_vector.h -FILE: ../../../third_party/dart/runtime/vm/bitmap.cc -FILE: ../../../third_party/dart/runtime/vm/bitmap.h -FILE: ../../../third_party/dart/runtime/vm/boolfield.h -FILE: ../../../third_party/dart/runtime/vm/bootstrap.cc -FILE: ../../../third_party/dart/runtime/vm/bootstrap.h -FILE: ../../../third_party/dart/runtime/vm/bootstrap_natives.cc -FILE: ../../../third_party/dart/runtime/vm/bootstrap_natives.h -FILE: ../../../third_party/dart/runtime/vm/class_finalizer.h -FILE: ../../../third_party/dart/runtime/vm/class_table.cc -FILE: ../../../third_party/dart/runtime/vm/class_table.h -FILE: ../../../third_party/dart/runtime/vm/code_descriptors.cc -FILE: ../../../third_party/dart/runtime/vm/code_descriptors.h -FILE: ../../../third_party/dart/runtime/vm/code_observers.cc -FILE: ../../../third_party/dart/runtime/vm/code_observers.h -FILE: ../../../third_party/dart/runtime/vm/code_patcher.cc -FILE: ../../../third_party/dart/runtime/vm/code_patcher.h -FILE: ../../../third_party/dart/runtime/vm/code_patcher_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/code_patcher_x64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/aot/aot_call_specializer.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_base.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_x86.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/object_pool_builder.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/constant_propagator.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_printer.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_printer.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/inliner.h -FILE: ../../../third_party/dart/runtime/vm/compiler/cha.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/cha.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/flow_graph_builder.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/flow_graph_builder.h -FILE: ../../../third_party/dart/runtime/vm/compiler/intrinsifier.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/intrinsifier.h -FILE: ../../../third_party/dart/runtime/vm/compiler/jit/compiler.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/jit/compiler.h -FILE: ../../../third_party/dart/runtime/vm/cpu.h -FILE: ../../../third_party/dart/runtime/vm/cpu_arm.cc -FILE: ../../../third_party/dart/runtime/vm/cpu_x64.cc -FILE: ../../../third_party/dart/runtime/vm/cpuinfo_linux.cc -FILE: ../../../third_party/dart/runtime/vm/cpuinfo_macos.cc -FILE: ../../../third_party/dart/runtime/vm/dart_api_message.h -FILE: ../../../third_party/dart/runtime/vm/dart_api_state.h -FILE: ../../../third_party/dart/runtime/vm/datastream.h -FILE: ../../../third_party/dart/runtime/vm/debugger.cc -FILE: ../../../third_party/dart/runtime/vm/debugger.h -FILE: ../../../third_party/dart/runtime/vm/double_internals.h -FILE: ../../../third_party/dart/runtime/vm/flag_list.h -FILE: ../../../third_party/dart/runtime/vm/flags.cc -FILE: ../../../third_party/dart/runtime/vm/flags.h -FILE: ../../../third_party/dart/runtime/vm/globals.h -FILE: ../../../third_party/dart/runtime/vm/growable_array.h -FILE: ../../../third_party/dart/runtime/vm/handles.cc -FILE: ../../../third_party/dart/runtime/vm/handles_impl.h -FILE: ../../../third_party/dart/runtime/vm/hash_map.h -FILE: ../../../third_party/dart/runtime/vm/heap/freelist.h -FILE: ../../../third_party/dart/runtime/vm/heap/heap.cc -FILE: ../../../third_party/dart/runtime/vm/heap/heap.h -FILE: ../../../third_party/dart/runtime/vm/heap/pages.cc -FILE: ../../../third_party/dart/runtime/vm/heap/pointer_block.cc -FILE: ../../../third_party/dart/runtime/vm/heap/pointer_block.h -FILE: ../../../third_party/dart/runtime/vm/heap/scavenger.h -FILE: ../../../third_party/dart/runtime/vm/heap/verifier.cc -FILE: ../../../third_party/dart/runtime/vm/instructions_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/instructions_ia32.h -FILE: ../../../third_party/dart/runtime/vm/instructions_x64.cc -FILE: ../../../third_party/dart/runtime/vm/instructions_x64.h -FILE: ../../../third_party/dart/runtime/vm/lockers.h -FILE: ../../../third_party/dart/runtime/vm/megamorphic_cache_table.cc -FILE: ../../../third_party/dart/runtime/vm/megamorphic_cache_table.h -FILE: ../../../third_party/dart/runtime/vm/memory_region.h -FILE: ../../../third_party/dart/runtime/vm/native_arguments.h -FILE: ../../../third_party/dart/runtime/vm/native_message_handler.cc -FILE: ../../../third_party/dart/runtime/vm/native_message_handler.h -FILE: ../../../third_party/dart/runtime/vm/object.cc -FILE: ../../../third_party/dart/runtime/vm/object.h -FILE: ../../../third_party/dart/runtime/vm/object_set.h -FILE: ../../../third_party/dart/runtime/vm/object_store.h -FILE: ../../../third_party/dart/runtime/vm/os_android.cc -FILE: ../../../third_party/dart/runtime/vm/os_linux.cc -FILE: ../../../third_party/dart/runtime/vm/os_macos.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread.h -FILE: ../../../third_party/dart/runtime/vm/os_thread_android.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread_android.h -FILE: ../../../third_party/dart/runtime/vm/os_thread_linux.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread_linux.h -FILE: ../../../third_party/dart/runtime/vm/os_thread_macos.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread_macos.h -FILE: ../../../third_party/dart/runtime/vm/os_thread_win.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread_win.h -FILE: ../../../third_party/dart/runtime/vm/os_win.cc -FILE: ../../../third_party/dart/runtime/vm/parser.cc -FILE: ../../../third_party/dart/runtime/vm/parser.h -FILE: ../../../third_party/dart/runtime/vm/port.cc -FILE: ../../../third_party/dart/runtime/vm/proccpuinfo.cc -FILE: ../../../third_party/dart/runtime/vm/proccpuinfo.h -FILE: ../../../third_party/dart/runtime/vm/raw_object.cc -FILE: ../../../third_party/dart/runtime/vm/raw_object.h -FILE: ../../../third_party/dart/runtime/vm/scopes.cc -FILE: ../../../third_party/dart/runtime/vm/scopes.h -FILE: ../../../third_party/dart/runtime/vm/snapshot.cc -FILE: ../../../third_party/dart/runtime/vm/snapshot.h -FILE: ../../../third_party/dart/runtime/vm/stack_frame.cc -FILE: ../../../third_party/dart/runtime/vm/stub_code.cc -FILE: ../../../third_party/dart/runtime/vm/symbols.cc -FILE: ../../../third_party/dart/runtime/vm/symbols.h -FILE: ../../../third_party/dart/runtime/vm/thread_pool.cc -FILE: ../../../third_party/dart/runtime/vm/thread_pool.h -FILE: ../../../third_party/dart/runtime/vm/token.h -FILE: ../../../third_party/dart/runtime/vm/unicode.cc -FILE: ../../../third_party/dart/runtime/vm/version.h -FILE: ../../../third_party/dart/runtime/vm/version_in.cc -FILE: ../../../third_party/dart/runtime/vm/virtual_memory.cc -FILE: ../../../third_party/dart/runtime/vm/virtual_memory.h -FILE: ../../../third_party/dart/runtime/vm/virtual_memory_posix.cc -FILE: ../../../third_party/dart/runtime/vm/virtual_memory_win.cc -FILE: ../../../third_party/dart/runtime/vm/zone.cc -FILE: ../../../third_party/dart/runtime/vm/zone.h -FILE: ../../../third_party/dart/sdk/lib/_http/crypto.dart -FILE: ../../../third_party/dart/sdk/lib/_http/http_date.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/interceptors.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_array.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_number.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_string.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/native_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/string_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/async_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/bigint_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/constant_map.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/core_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/foreign_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/interceptors.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/isolate_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_array.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_number.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_string.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/math_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/native_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/regexp_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/string_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/builtin.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/common_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/directory_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/eventhandler_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/file_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/platform_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/secure_socket_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/array.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/double.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/double_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/empty_source.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/errors_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/expando_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/function_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/growable_array.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/identical_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/immutable_map.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/integers.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/isolate_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/math_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirrors_impl.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirrors_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/object_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/print_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/regexp_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/stopwatch_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/string_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timer_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/type_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/weak_property.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/array_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bool_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/date_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/integers_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/map_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/string_buffer_patch.dart -FILE: ../../../third_party/dart/sdk/lib/async/async.dart -FILE: ../../../third_party/dart/sdk/lib/async/async_error.dart -FILE: ../../../third_party/dart/sdk/lib/async/broadcast_stream_controller.dart -FILE: ../../../third_party/dart/sdk/lib/async/future.dart -FILE: ../../../third_party/dart/sdk/lib/async/future_impl.dart -FILE: ../../../third_party/dart/sdk/lib/async/stream_controller.dart -FILE: ../../../third_party/dart/sdk/lib/async/stream_impl.dart -FILE: ../../../third_party/dart/sdk/lib/async/stream_pipe.dart -FILE: ../../../third_party/dart/sdk/lib/async/timer.dart -FILE: ../../../third_party/dart/sdk/lib/collection/collection.dart -FILE: ../../../third_party/dart/sdk/lib/collection/iterable.dart -FILE: ../../../third_party/dart/sdk/lib/collection/iterator.dart -FILE: ../../../third_party/dart/sdk/lib/collection/maps.dart -FILE: ../../../third_party/dart/sdk/lib/collection/splay_tree.dart -FILE: ../../../third_party/dart/sdk/lib/core/bool.dart -FILE: ../../../third_party/dart/sdk/lib/core/core.dart -FILE: ../../../third_party/dart/sdk/lib/core/double.dart -FILE: ../../../third_party/dart/sdk/lib/core/errors.dart -FILE: ../../../third_party/dart/sdk/lib/core/exceptions.dart -FILE: ../../../third_party/dart/sdk/lib/core/identical.dart -FILE: ../../../third_party/dart/sdk/lib/core/int.dart -FILE: ../../../third_party/dart/sdk/lib/core/invocation.dart -FILE: ../../../third_party/dart/sdk/lib/core/iterator.dart -FILE: ../../../third_party/dart/sdk/lib/core/list.dart -FILE: ../../../third_party/dart/sdk/lib/core/num.dart -FILE: ../../../third_party/dart/sdk/lib/core/object.dart -FILE: ../../../third_party/dart/sdk/lib/core/print.dart -FILE: ../../../third_party/dart/sdk/lib/core/regexp.dart -FILE: ../../../third_party/dart/sdk/lib/core/string.dart -FILE: ../../../third_party/dart/sdk/lib/core/type.dart -FILE: ../../../third_party/dart/sdk/lib/core/uri.dart -FILE: ../../../third_party/dart/sdk/lib/core/weak.dart -FILE: ../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/html/dartium/nativewrappers.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/conversions.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/css_class_set.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/html_common_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/metadata.dart -FILE: ../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/internal/async_cast.dart -FILE: ../../../third_party/dart/sdk/lib/internal/cast.dart -FILE: ../../../third_party/dart/sdk/lib/internal/internal.dart -FILE: ../../../third_party/dart/sdk/lib/io/common.dart -FILE: ../../../third_party/dart/sdk/lib/io/directory.dart -FILE: ../../../third_party/dart/sdk/lib/io/directory_impl.dart -FILE: ../../../third_party/dart/sdk/lib/io/eventhandler.dart -FILE: ../../../third_party/dart/sdk/lib/io/io.dart -FILE: ../../../third_party/dart/sdk/lib/io/platform.dart -FILE: ../../../third_party/dart/sdk/lib/io/platform_impl.dart -FILE: ../../../third_party/dart/sdk/lib/io/secure_server_socket.dart -FILE: ../../../third_party/dart/sdk/lib/isolate/isolate.dart -FILE: ../../../third_party/dart/sdk/lib/math/math.dart -FILE: ../../../third_party/dart/sdk/lib/math/random.dart -FILE: ../../../third_party/dart/sdk/lib/svg/dart2js/svg_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: angle ORIGIN: ../../../third_party/angle/src/common/base/anglebase/trace_event/trace_event.h + ../../../LICENSE @@ -37008,721 +35955,6 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/filter.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/filter.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/gen_snapshot.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/io_natives.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/io_service.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/io_service.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/io_service_no_ssl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/io_service_no_ssl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/process.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/stdio.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/stdio.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/stdio_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/stdio_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/stdio_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/stdio_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/vmservice_impl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/vmservice_impl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/dart_native_api.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/invocation_mirror.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/libgen_in.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/simd128.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/stacktrace.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/typed_data.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/uri.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/application.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/location_manager.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_instances.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/code_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/code_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/context_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/context_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile/virtual_tree.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile_table.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/curly_block.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/error_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/eval_box.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/field_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/field_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/flag_list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/function_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/function_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/any_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/icdata_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/icdata_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/instance_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/instance_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/json_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/library_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/library_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/local_var_descriptors_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/megamorphiccache_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/native_memory_profiler.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/object_common.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/object_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectpool_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectstore_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/observatory_application.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/pc_descriptors_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/sample_buffer_control.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_inset.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_value.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_inset.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/type_arguments_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/unknown_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/tracer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/application.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/location_manager.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_instances.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/code_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/code_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/context_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/context_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile/virtual_tree.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile_table.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/curly_block.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/error_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/eval_box.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/field_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/field_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/flag_list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/function_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/function_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/any_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/icdata_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/icdata_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/instance_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/instance_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/json_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/library_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/library_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/local_var_descriptors_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/megamorphiccache_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/native_memory_profiler.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/object_common.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/object_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectpool_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectstore_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/observatory_application.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/pc_descriptors_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sample_buffer_control.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_inset.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sentinel_value.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sentinel_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/source_inset.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/stack_trace_tree_config.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/type_arguments_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unknown_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/tracer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/atomic.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/signal_blocker.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/allocation.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/class_finalizer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/aot_call_specializer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_ia32.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_x64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/block_scheduler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/block_scheduler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/constant_propagator.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/inliner.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/linearscan.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/linearscan.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/locations.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/locations.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/type_propagator.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/type_propagator.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/jit/jit_call_specializer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_arm.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_ia32.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_x64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_impl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/deferred_objects.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/deferred_objects.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/deopt_instructions.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/deopt_instructions.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/weak_table.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/weak_table.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_arm.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/isolate.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/isolate.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/json_stream.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/json_stream.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_api_impl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_id_ring.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_id_ring.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_store.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/profiler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/profiler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/random.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/random.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/reusable_handles.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/service.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/service.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/service_isolate.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator_arm.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_arm.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_ia32.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_x64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/tags.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/http.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_headers.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_parser.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_session.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/websocket.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/websocket_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/typed_data_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/annotations.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_primitives.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_rti.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/mirror_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/annotations.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/collection_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/convert_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/internal_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/io_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_names.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_primitives.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/native_typed_data.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/file_system_entity_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/filter_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/io_service_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/process_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/socket_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/stdio_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/vmservice_io.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/vmservice_server.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/core_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/function.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/internal_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirror_reference.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/schedule_microtask_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/stacktrace.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/symbol_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timer_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/typed_data_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/uri_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/collection_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/null_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/io_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/deferred_load.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/schedule_microtask.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/stream.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/stream_transformers.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/zone.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/collections.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/hash_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/hash_set.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/linked_hash_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/linked_hash_set.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/linked_list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/ascii.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/byte_conversion.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/chunked_conversion.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/codec.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/convert.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/converter.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/encoding.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/html_escape.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/json.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/latin1.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/line_splitter.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/string_conversion.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/utf.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/annotations.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/null.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/stacktrace.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/string_sink.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/symbol.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/bytes_builder.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/print.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/symbol.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/data_transformer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/file.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/file_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/file_system_entity.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/io_service.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/io_sink.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/link.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/secure_socket.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/socket.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/stdio.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/string_transformer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js/js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/math/point.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/math/rectangle.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/mirrors/mirrors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/typed_data/typed_data.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/client.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/constants.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/message.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/message_router.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/running_isolate.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/running_isolates.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/utils/compiler/create_snapshot_entry.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/eventhandler_win.cc -FILE: ../../../third_party/dart/runtime/bin/file.cc -FILE: ../../../third_party/dart/runtime/bin/file.h -FILE: ../../../third_party/dart/runtime/bin/file_system_watcher.cc -FILE: ../../../third_party/dart/runtime/bin/file_system_watcher.h -FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_android.cc -FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_linux.cc -FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_macos.cc -FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_win.cc -FILE: ../../../third_party/dart/runtime/bin/filter.cc -FILE: ../../../third_party/dart/runtime/bin/filter.h -FILE: ../../../third_party/dart/runtime/bin/gen_snapshot.cc -FILE: ../../../third_party/dart/runtime/bin/io_natives.cc -FILE: ../../../third_party/dart/runtime/bin/io_service.cc -FILE: ../../../third_party/dart/runtime/bin/io_service.h -FILE: ../../../third_party/dart/runtime/bin/io_service_no_ssl.cc -FILE: ../../../third_party/dart/runtime/bin/io_service_no_ssl.h -FILE: ../../../third_party/dart/runtime/bin/process.cc -FILE: ../../../third_party/dart/runtime/bin/socket.cc -FILE: ../../../third_party/dart/runtime/bin/socket.h -FILE: ../../../third_party/dart/runtime/bin/socket_base_linux.cc -FILE: ../../../third_party/dart/runtime/bin/socket_base_macos.cc -FILE: ../../../third_party/dart/runtime/bin/socket_base_win.cc -FILE: ../../../third_party/dart/runtime/bin/socket_linux.cc -FILE: ../../../third_party/dart/runtime/bin/socket_macos.cc -FILE: ../../../third_party/dart/runtime/bin/socket_win.cc -FILE: ../../../third_party/dart/runtime/bin/stdio.cc -FILE: ../../../third_party/dart/runtime/bin/stdio.h -FILE: ../../../third_party/dart/runtime/bin/stdio_android.cc -FILE: ../../../third_party/dart/runtime/bin/stdio_linux.cc -FILE: ../../../third_party/dart/runtime/bin/stdio_macos.cc -FILE: ../../../third_party/dart/runtime/bin/stdio_win.cc -FILE: ../../../third_party/dart/runtime/bin/vmservice_impl.cc -FILE: ../../../third_party/dart/runtime/bin/vmservice_impl.h -FILE: ../../../third_party/dart/runtime/include/dart_native_api.h -FILE: ../../../third_party/dart/runtime/lib/invocation_mirror.h -FILE: ../../../third_party/dart/runtime/lib/libgen_in.cc -FILE: ../../../third_party/dart/runtime/lib/simd128.cc -FILE: ../../../third_party/dart/runtime/lib/stacktrace.cc -FILE: ../../../third_party/dart/runtime/lib/typed_data.cc -FILE: ../../../third_party/dart/runtime/lib/uri.cc -FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/application.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/location_manager.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_instances.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/code_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/code_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/context_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/context_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile/virtual_tree.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/cpu_profile_table.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/curly_block.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/error_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/eval_box.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/field_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/field_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/flag_list.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/function_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/function_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/any_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/icdata_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/icdata_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/instance_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/instance_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/json_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/library_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/library_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/local_var_descriptors_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/megamorphiccache_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/native_memory_profiler.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/object_common.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/object_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectpool_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectstore_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/observatory_application.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/pc_descriptors_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sample_buffer_control.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_inset.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/script_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_value.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_inset.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/type_arguments_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/unknown_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/tracer.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/application.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/location_manager.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_instances.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/code_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/code_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/context_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/context_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile/virtual_tree.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/cpu_profile_table.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/curly_block.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/error_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/eval_box.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/field_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/field_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/flag_list.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/function_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/function_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/any_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/icdata_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/icdata_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/instance_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/instance_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/json_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/library_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/library_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/local_var_descriptors_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/megamorphiccache_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/native_memory_profiler.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/object_common.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/object_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectpool_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectstore_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/observatory_application.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/pc_descriptors_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sample_buffer_control.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_inset.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/script_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sentinel_value.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/sentinel_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/source_inset.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/stack_trace_tree_config.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/type_arguments_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unknown_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/tracer.dart -FILE: ../../../third_party/dart/runtime/platform/atomic.h -FILE: ../../../third_party/dart/runtime/platform/signal_blocker.h -FILE: ../../../third_party/dart/runtime/vm/allocation.h -FILE: ../../../third_party/dart/runtime/vm/class_finalizer.cc -FILE: ../../../third_party/dart/runtime/vm/code_patcher_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/aot/aot_call_specializer.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_ia32.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_x64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_x64.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/block_scheduler.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/block_scheduler.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/constant_propagator.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_x64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/inliner.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/linearscan.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/linearscan.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/locations.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/locations.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/type_propagator.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/type_propagator.h -FILE: ../../../third_party/dart/runtime/vm/compiler/jit/jit_call_specializer.cc -FILE: ../../../third_party/dart/runtime/vm/constants_arm.h -FILE: ../../../third_party/dart/runtime/vm/constants_ia32.h -FILE: ../../../third_party/dart/runtime/vm/constants_x64.h -FILE: ../../../third_party/dart/runtime/vm/dart.cc -FILE: ../../../third_party/dart/runtime/vm/dart_api_impl.cc -FILE: ../../../third_party/dart/runtime/vm/deferred_objects.cc -FILE: ../../../third_party/dart/runtime/vm/deferred_objects.h -FILE: ../../../third_party/dart/runtime/vm/deopt_instructions.cc -FILE: ../../../third_party/dart/runtime/vm/deopt_instructions.h -FILE: ../../../third_party/dart/runtime/vm/heap/weak_table.cc -FILE: ../../../third_party/dart/runtime/vm/heap/weak_table.h -FILE: ../../../third_party/dart/runtime/vm/instructions.h -FILE: ../../../third_party/dart/runtime/vm/instructions_arm.cc -FILE: ../../../third_party/dart/runtime/vm/instructions_arm.h -FILE: ../../../third_party/dart/runtime/vm/isolate.cc -FILE: ../../../third_party/dart/runtime/vm/isolate.h -FILE: ../../../third_party/dart/runtime/vm/json_stream.cc -FILE: ../../../third_party/dart/runtime/vm/json_stream.h -FILE: ../../../third_party/dart/runtime/vm/native_api_impl.cc -FILE: ../../../third_party/dart/runtime/vm/native_symbol.h -FILE: ../../../third_party/dart/runtime/vm/native_symbol_android.cc -FILE: ../../../third_party/dart/runtime/vm/native_symbol_linux.cc -FILE: ../../../third_party/dart/runtime/vm/native_symbol_macos.cc -FILE: ../../../third_party/dart/runtime/vm/native_symbol_win.cc -FILE: ../../../third_party/dart/runtime/vm/object_id_ring.cc -FILE: ../../../third_party/dart/runtime/vm/object_id_ring.h -FILE: ../../../third_party/dart/runtime/vm/object_store.cc -FILE: ../../../third_party/dart/runtime/vm/profiler.cc -FILE: ../../../third_party/dart/runtime/vm/profiler.h -FILE: ../../../third_party/dart/runtime/vm/random.cc -FILE: ../../../third_party/dart/runtime/vm/random.h -FILE: ../../../third_party/dart/runtime/vm/reusable_handles.h -FILE: ../../../third_party/dart/runtime/vm/service.cc -FILE: ../../../third_party/dart/runtime/vm/service.h -FILE: ../../../third_party/dart/runtime/vm/service_isolate.h -FILE: ../../../third_party/dart/runtime/vm/signal_handler.h -FILE: ../../../third_party/dart/runtime/vm/signal_handler_android.cc -FILE: ../../../third_party/dart/runtime/vm/signal_handler_linux.cc -FILE: ../../../third_party/dart/runtime/vm/signal_handler_macos.cc -FILE: ../../../third_party/dart/runtime/vm/signal_handler_win.cc -FILE: ../../../third_party/dart/runtime/vm/simulator.h -FILE: ../../../third_party/dart/runtime/vm/simulator_arm.cc -FILE: ../../../third_party/dart/runtime/vm/simulator_arm.h -FILE: ../../../third_party/dart/runtime/vm/stack_frame_arm.h -FILE: ../../../third_party/dart/runtime/vm/stack_frame_ia32.h -FILE: ../../../third_party/dart/runtime/vm/stack_frame_x64.h -FILE: ../../../third_party/dart/runtime/vm/tags.h -FILE: ../../../third_party/dart/runtime/vm/thread_interrupter.cc -FILE: ../../../third_party/dart/runtime/vm/thread_interrupter.h -FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_android.cc -FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_linux.cc -FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_macos.cc -FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_win.cc -FILE: ../../../third_party/dart/sdk/lib/_http/http.dart -FILE: ../../../third_party/dart/sdk/lib/_http/http_headers.dart -FILE: ../../../third_party/dart/sdk/lib/_http/http_impl.dart -FILE: ../../../third_party/dart/sdk/lib/_http/http_parser.dart -FILE: ../../../third_party/dart/sdk/lib/_http/http_session.dart -FILE: ../../../third_party/dart/sdk/lib/_http/websocket.dart -FILE: ../../../third_party/dart/sdk/lib/_http/websocket_impl.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/typed_data_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/annotations.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_primitives.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_rti.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/mirror_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/annotations.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/collection_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/convert_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/internal_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/io_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_names.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_primitives.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/native_typed_data.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/file_system_entity_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/filter_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/io_service_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/process_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/socket_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/stdio_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/vmservice_io.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/vmservice_server.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/core_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/function.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/internal_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/mirror_reference.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/schedule_microtask_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/stacktrace.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/symbol_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timer_impl.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/typed_data_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/uri_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/collection_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/null_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/io_patch.dart -FILE: ../../../third_party/dart/sdk/lib/async/deferred_load.dart -FILE: ../../../third_party/dart/sdk/lib/async/schedule_microtask.dart -FILE: ../../../third_party/dart/sdk/lib/async/stream.dart -FILE: ../../../third_party/dart/sdk/lib/async/stream_transformers.dart -FILE: ../../../third_party/dart/sdk/lib/async/zone.dart -FILE: ../../../third_party/dart/sdk/lib/collection/collections.dart -FILE: ../../../third_party/dart/sdk/lib/collection/hash_map.dart -FILE: ../../../third_party/dart/sdk/lib/collection/hash_set.dart -FILE: ../../../third_party/dart/sdk/lib/collection/linked_hash_map.dart -FILE: ../../../third_party/dart/sdk/lib/collection/linked_hash_set.dart -FILE: ../../../third_party/dart/sdk/lib/collection/linked_list.dart -FILE: ../../../third_party/dart/sdk/lib/collection/list.dart -FILE: ../../../third_party/dart/sdk/lib/convert/ascii.dart -FILE: ../../../third_party/dart/sdk/lib/convert/byte_conversion.dart -FILE: ../../../third_party/dart/sdk/lib/convert/chunked_conversion.dart -FILE: ../../../third_party/dart/sdk/lib/convert/codec.dart -FILE: ../../../third_party/dart/sdk/lib/convert/convert.dart -FILE: ../../../third_party/dart/sdk/lib/convert/converter.dart -FILE: ../../../third_party/dart/sdk/lib/convert/encoding.dart -FILE: ../../../third_party/dart/sdk/lib/convert/html_escape.dart -FILE: ../../../third_party/dart/sdk/lib/convert/json.dart -FILE: ../../../third_party/dart/sdk/lib/convert/latin1.dart -FILE: ../../../third_party/dart/sdk/lib/convert/line_splitter.dart -FILE: ../../../third_party/dart/sdk/lib/convert/string_conversion.dart -FILE: ../../../third_party/dart/sdk/lib/convert/utf.dart -FILE: ../../../third_party/dart/sdk/lib/core/annotations.dart -FILE: ../../../third_party/dart/sdk/lib/core/null.dart -FILE: ../../../third_party/dart/sdk/lib/core/stacktrace.dart -FILE: ../../../third_party/dart/sdk/lib/core/string_sink.dart -FILE: ../../../third_party/dart/sdk/lib/core/symbol.dart -FILE: ../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/internal/bytes_builder.dart -FILE: ../../../third_party/dart/sdk/lib/internal/list.dart -FILE: ../../../third_party/dart/sdk/lib/internal/print.dart -FILE: ../../../third_party/dart/sdk/lib/internal/symbol.dart -FILE: ../../../third_party/dart/sdk/lib/io/data_transformer.dart -FILE: ../../../third_party/dart/sdk/lib/io/file.dart -FILE: ../../../third_party/dart/sdk/lib/io/file_impl.dart -FILE: ../../../third_party/dart/sdk/lib/io/file_system_entity.dart -FILE: ../../../third_party/dart/sdk/lib/io/io_service.dart -FILE: ../../../third_party/dart/sdk/lib/io/io_sink.dart -FILE: ../../../third_party/dart/sdk/lib/io/link.dart -FILE: ../../../third_party/dart/sdk/lib/io/secure_socket.dart -FILE: ../../../third_party/dart/sdk/lib/io/socket.dart -FILE: ../../../third_party/dart/sdk/lib/io/stdio.dart -FILE: ../../../third_party/dart/sdk/lib/io/string_transformer.dart -FILE: ../../../third_party/dart/sdk/lib/js/js.dart -FILE: ../../../third_party/dart/sdk/lib/math/point.dart -FILE: ../../../third_party/dart/sdk/lib/math/rectangle.dart -FILE: ../../../third_party/dart/sdk/lib/mirrors/mirrors.dart -FILE: ../../../third_party/dart/sdk/lib/typed_data/typed_data.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/client.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/constants.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/message.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/message_router.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/running_isolate.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/running_isolates.dart -FILE: ../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart -FILE: ../../../third_party/dart/utils/compiler/create_snapshot_entry.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: khronos ORIGIN: ../../../third_party/angle/src/third_party/khronos/GL/wglext.h @@ -37996,43 +36228,6 @@ freely, subject to the following restrictions: distribution. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/observatory/web/third_party/webcomponents.min.js + http://polymer.github.io/LICENSE.txt referenced by ../../../third_party/dart/runtime/observatory/web/third_party/webcomponents.min.js -ORIGIN: ../../../third_party/dart/runtime/observatory_2/web/third_party/webcomponents.min.js + http://polymer.github.io/LICENSE.txt referenced by ../../../third_party/dart/runtime/observatory_2/web/third_party/webcomponents.min.js -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/observatory/web/third_party/webcomponents.min.js -FILE: ../../../third_party/dart/runtime/observatory_2/web/third_party/webcomponents.min.js ----------------------------------------------------------------------------------------------------- -Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: boringssl ORIGIN: ../../../third_party/boringssl/src/crypto/bio/socket_helper.c @@ -38185,261 +36380,6 @@ use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/lib/profiler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/bin/shell.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/app.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/object_graph.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/service.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/service_common.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/service_html.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/service_io.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/page.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/settings.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/view_model.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_tree.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/debugger.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_reconnect.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/metrics.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_connect.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/service/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/utils.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/web/main.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/bin/shell.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/app.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/object_graph.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/service.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/service_common.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/service_html.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/service_io.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/page.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/settings.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/view_model.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_tree.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/debugger.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_reconnect.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metrics.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_connect.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/service/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/utils.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/web/main.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/address_sanitizer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/memory_sanitizer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/safe_stack.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/verbose_gc_to_bmu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/range_analysis.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/range_analysis.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/method_recognizer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/method_recognizer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_arm64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_arm.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_arm64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_ia32.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_x64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpuid.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpuid.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/debugger_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/hash_table.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/spaces.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/weak_code.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/weak_code.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_arm64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/metrics.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/metrics.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_graph.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_graph.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_ir.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_ir.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_ast.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_ast.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_parser.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_parser.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/report.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/report.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/ring_buffer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator_arm64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_arm64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/tags.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/unibrow-inl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/unibrow.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/unibrow.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/preambles/jsshell.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/embedded_names.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/lib_prefix.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/profiler.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/convert_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/collection/set.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/sink.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/developer/profiler.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/process.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/service_object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/isolate/capability.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/lib/profiler.cc -FILE: ../../../third_party/dart/runtime/observatory/bin/shell.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/app.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/object_graph.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/service.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/service_common.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/service_html.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/service_io.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/page.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/settings.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/view_model.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_tree.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/debugger.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_map.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate_reconnect.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/metrics.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_connect.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/service/object.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/utils.dart -FILE: ../../../third_party/dart/runtime/observatory/web/main.dart -FILE: ../../../third_party/dart/runtime/observatory_2/bin/shell.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/app.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/object_graph.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/service.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/service_common.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/service_html.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/service_io.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/page.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/settings.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/view_model.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_tree.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/debugger.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_map.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate_reconnect.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metrics.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_connect.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/service/object.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/utils.dart -FILE: ../../../third_party/dart/runtime/observatory_2/web/main.dart -FILE: ../../../third_party/dart/runtime/platform/address_sanitizer.h -FILE: ../../../third_party/dart/runtime/platform/memory_sanitizer.h -FILE: ../../../third_party/dart/runtime/platform/safe_stack.h -FILE: ../../../third_party/dart/runtime/tools/verbose_gc_to_bmu.dart -FILE: ../../../third_party/dart/runtime/vm/code_patcher_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_arm64.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/range_analysis.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/range_analysis.h -FILE: ../../../third_party/dart/runtime/vm/compiler/method_recognizer.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/method_recognizer.h -FILE: ../../../third_party/dart/runtime/vm/constants_arm64.h -FILE: ../../../third_party/dart/runtime/vm/cpu_arm.h -FILE: ../../../third_party/dart/runtime/vm/cpu_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/cpu_arm64.h -FILE: ../../../third_party/dart/runtime/vm/cpu_ia32.h -FILE: ../../../third_party/dart/runtime/vm/cpu_x64.h -FILE: ../../../third_party/dart/runtime/vm/cpuid.cc -FILE: ../../../third_party/dart/runtime/vm/cpuid.h -FILE: ../../../third_party/dart/runtime/vm/cpuinfo.h -FILE: ../../../third_party/dart/runtime/vm/cpuinfo_android.cc -FILE: ../../../third_party/dart/runtime/vm/cpuinfo_win.cc -FILE: ../../../third_party/dart/runtime/vm/debugger_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/hash_table.h -FILE: ../../../third_party/dart/runtime/vm/heap/spaces.h -FILE: ../../../third_party/dart/runtime/vm/heap/weak_code.cc -FILE: ../../../third_party/dart/runtime/vm/heap/weak_code.h -FILE: ../../../third_party/dart/runtime/vm/instructions_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/instructions_arm64.h -FILE: ../../../third_party/dart/runtime/vm/metrics.cc -FILE: ../../../third_party/dart/runtime/vm/metrics.h -FILE: ../../../third_party/dart/runtime/vm/object_graph.cc -FILE: ../../../third_party/dart/runtime/vm/object_graph.h -FILE: ../../../third_party/dart/runtime/vm/regexp.cc -FILE: ../../../third_party/dart/runtime/vm/regexp.h -FILE: ../../../third_party/dart/runtime/vm/regexp_assembler.cc -FILE: ../../../third_party/dart/runtime/vm/regexp_assembler.h -FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_ir.cc -FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_ir.h -FILE: ../../../third_party/dart/runtime/vm/regexp_ast.cc -FILE: ../../../third_party/dart/runtime/vm/regexp_ast.h -FILE: ../../../third_party/dart/runtime/vm/regexp_parser.cc -FILE: ../../../third_party/dart/runtime/vm/regexp_parser.h -FILE: ../../../third_party/dart/runtime/vm/report.cc -FILE: ../../../third_party/dart/runtime/vm/report.h -FILE: ../../../third_party/dart/runtime/vm/ring_buffer.h -FILE: ../../../third_party/dart/runtime/vm/runtime_entry_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/simulator_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/simulator_arm64.h -FILE: ../../../third_party/dart/runtime/vm/stack_frame_arm64.h -FILE: ../../../third_party/dart/runtime/vm/tags.cc -FILE: ../../../third_party/dart/runtime/vm/unibrow-inl.h -FILE: ../../../third_party/dart/runtime/vm/unibrow.cc -FILE: ../../../third_party/dart/runtime/vm/unibrow.h -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/preambles/jsshell.js -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/embedded_names.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/lib_prefix.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/profiler.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/convert_patch.dart -FILE: ../../../third_party/dart/sdk/lib/collection/set.dart -FILE: ../../../third_party/dart/sdk/lib/core/sink.dart -FILE: ../../../third_party/dart/sdk/lib/developer/profiler.dart -FILE: ../../../third_party/dart/sdk/lib/io/process.dart -FILE: ../../../third_party/dart/sdk/lib/io/service_object.dart -FILE: ../../../third_party/dart/sdk/lib/isolate/capability.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: glslang ORIGIN: ../../../third_party/vulkan-deps/glslang/src/SPIRV/GLSL.ext.AMD.h @@ -38719,233 +36659,6 @@ use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/address_sanitizer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/dart_io_api_impl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/observatory_assets_empty.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/bin/dart_io_api.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/developer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/timeline.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/vmservice.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/cli.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/debugger.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/allocation_profile/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/cli/command.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/debugger/debugger.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/debugger/debugger_location.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/logging.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/logging_list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/megamorphiccache_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectpool_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/persistent_handles.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/ports.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/timeline_page.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/sample_profile/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/web/timeline.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/cli.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/debugger.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/allocation_profile/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/cli/command.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/debugger/debugger.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/debugger/debugger_location.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/logging.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/logging_list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/megamorphiccache_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectpool_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/persistent_handles.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/ports.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/timeline_page.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/sample_profile/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/web/timeline.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/log.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/log.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/profiler_service.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/profiler_service.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/program_visitor.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/program_visitor.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode_inl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_bytecodes.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_interpreter.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/regexp_interpreter.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/scope_timer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/service_event.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/service_event.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/service_isolate.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/source_report.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/source_report.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_barrier.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_registry.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_registry.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/timeline.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/timeline.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/utils.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/debugger.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/developer_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/preambles/d8.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/preambles/jsshell.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/async_status_codes.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/async_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/developer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timeline.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/compact_hash.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/convert/base64.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/developer/developer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/developer/extension.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/developer/timeline.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/io_resource_info.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/security_context.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js/_js_annotations.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/asset.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/vmservice.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/address_sanitizer.cc -FILE: ../../../third_party/dart/runtime/bin/dart_io_api_impl.cc -FILE: ../../../third_party/dart/runtime/bin/observatory_assets_empty.cc -FILE: ../../../third_party/dart/runtime/include/bin/dart_io_api.h -FILE: ../../../third_party/dart/runtime/lib/developer.cc -FILE: ../../../third_party/dart/runtime/lib/timeline.cc -FILE: ../../../third_party/dart/runtime/lib/vmservice.cc -FILE: ../../../third_party/dart/runtime/observatory/lib/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/cli.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/debugger.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/allocation_profile/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/cli/command.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/debugger/debugger.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/debugger/debugger_location.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/logging.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/logging_list.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/megamorphiccache_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/objectpool_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/persistent_handles.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/ports.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/timeline_page.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/sample_profile/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/web/timeline.js -FILE: ../../../third_party/dart/runtime/observatory_2/lib/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/cli.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/debugger.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/allocation_profile/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/cli/command.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/debugger/debugger.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/debugger/debugger_location.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/logging.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/logging_list.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/megamorphiccache_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/objectpool_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/persistent_handles.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/ports.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/timeline_page.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/sample_profile/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/web/timeline.js -FILE: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler.h -FILE: ../../../third_party/dart/runtime/vm/log.cc -FILE: ../../../third_party/dart/runtime/vm/log.h -FILE: ../../../third_party/dart/runtime/vm/os_thread.cc -FILE: ../../../third_party/dart/runtime/vm/profiler_service.cc -FILE: ../../../third_party/dart/runtime/vm/profiler_service.h -FILE: ../../../third_party/dart/runtime/vm/program_visitor.cc -FILE: ../../../third_party/dart/runtime/vm/program_visitor.h -FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode.cc -FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode.h -FILE: ../../../third_party/dart/runtime/vm/regexp_assembler_bytecode_inl.h -FILE: ../../../third_party/dart/runtime/vm/regexp_bytecodes.h -FILE: ../../../third_party/dart/runtime/vm/regexp_interpreter.cc -FILE: ../../../third_party/dart/runtime/vm/regexp_interpreter.h -FILE: ../../../third_party/dart/runtime/vm/scope_timer.h -FILE: ../../../third_party/dart/runtime/vm/service_event.cc -FILE: ../../../third_party/dart/runtime/vm/service_event.h -FILE: ../../../third_party/dart/runtime/vm/service_isolate.cc -FILE: ../../../third_party/dart/runtime/vm/source_report.cc -FILE: ../../../third_party/dart/runtime/vm/source_report.h -FILE: ../../../third_party/dart/runtime/vm/thread.cc -FILE: ../../../third_party/dart/runtime/vm/thread.h -FILE: ../../../third_party/dart/runtime/vm/thread_barrier.h -FILE: ../../../third_party/dart/runtime/vm/thread_registry.cc -FILE: ../../../third_party/dart/runtime/vm/thread_registry.h -FILE: ../../../third_party/dart/runtime/vm/timeline.cc -FILE: ../../../third_party/dart/runtime/vm/timeline.h -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/utils.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/debugger.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/developer_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/preambles/d8.js -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/preambles/jsshell.js -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/async_status_codes.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/async_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/developer.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/timeline.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/compact_hash.dart -FILE: ../../../third_party/dart/sdk/lib/convert/base64.dart -FILE: ../../../third_party/dart/sdk/lib/developer/developer.dart -FILE: ../../../third_party/dart/sdk/lib/developer/extension.dart -FILE: ../../../third_party/dart/sdk/lib/developer/timeline.dart -FILE: ../../../third_party/dart/sdk/lib/io/io_resource_info.dart -FILE: ../../../third_party/dart/sdk/lib/io/security_context.dart -FILE: ../../../third_party/dart/sdk/lib/js/_js_annotations.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/asset.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/vmservice.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: fiat ORIGIN: ../../../third_party/boringssl/src/third_party/fiat/LICENSE @@ -39103,749 +36816,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/crypto_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/directory_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/eventhandler_fuchsia.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_support.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_system_watcher_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/loader.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/loader.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/process_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/reference_counting.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/root_certificates_unsupported.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_fuchsia.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/stdio_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_fuchsia.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/utils_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/stacktrace.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/models.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/repositories.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/app/notification.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/virtual_collection.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/virtual_tree.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/error_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/general_error.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/custom_element.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/nav_bar.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/nav_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/rendering_queue.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/uris.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/inbound_references.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/counter_chart.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/location.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/run_state.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/shared_summary.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/summary.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/metric/details.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/metric/graph.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/class_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/isolate_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/library_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/menu_item.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify_event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify_exception.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/refresh.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/top_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/vm_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/retaining_path.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_link.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_connect_target.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/exceptions.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/breakpoint.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/class.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/code.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/context.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/error.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/extension_data.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/field.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/flag.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/frame.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/function.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/guarded.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/heap_space.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/icdata.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/inbound_references.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/instance.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/isolate.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/library.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/local_var_descriptors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/map_association.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/megamorphiccache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/metric.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/notification.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/objectpool.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/objectstore.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/pc_descriptors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/persistent_handles.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/ports.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/retaining_path.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/script.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sentinel.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/source_location.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/target.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline_event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/type_arguments.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unknown.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/vm.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/breakpoint.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/class.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/context.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/editor.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/eval.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/field.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/flag.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/function.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/icdata.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/inbound_references.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/instance.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/isolate.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/library.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/megamorphiccache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/metric.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/notification.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/objectpool.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/objectstore.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/persistent_handles.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/ports.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/reachable_size.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/retained_size.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/retaining_path.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/script.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/target.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/type_arguments.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/breakpoint.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/class.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/context.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/editor.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/eval.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/field.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/flag.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/function.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/icdata.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/inbound_references.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/instance.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/isolate.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/library.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/megamorphiccache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/metric.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/notification.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/objectpool.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/objectstore.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/persistent_handles.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/ports.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/reachable_size.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/retained_size.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/retaining_path.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/script.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/settings.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/target.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/type_arguments.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/web/timeline_message_handler.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/models.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/repositories.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/app/notification.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/virtual_collection.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/virtual_tree.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/error_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/general_error.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/custom_element.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/nav_bar.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/nav_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/rendering_queue.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/rendering_scheduler.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/tag.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/uris.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/inbound_references.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/counter_chart.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/location.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/run_state.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/shared_summary.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/summary.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metric/details.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metric/graph.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/class_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/isolate_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/library_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/menu_item.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify_event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify_exception.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/refresh.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/top_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/vm_menu.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/retaining_path.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/source_link.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_connect_target.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/exceptions.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/breakpoint.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/class.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/code.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/context.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/error.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/extension_data.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/field.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/flag.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/frame.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/function.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/guarded.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/heap_space.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/icdata.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/inbound_references.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/instance.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/isolate.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/library.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/local_var_descriptors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/map_association.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/megamorphiccache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/metric.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/notification.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/objectpool.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/objectstore.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/pc_descriptors.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/persistent_handles.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/ports.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/retaining_path.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/script.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/sentinel.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/source_location.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/target.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/timeline_event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/type_arguments.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/unknown.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/vm.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/breakpoint.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/class.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/context.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/editor.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/eval.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/field.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/flag.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/function.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/icdata.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/inbound_references.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/instance.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/isolate.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/library.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/megamorphiccache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/metric.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/notification.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/objectpool.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/objectstore.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/persistent_handles.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/ports.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/reachable_size.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/retained_size.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/retaining_path.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/script.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/target.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/type_arguments.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/allocation_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/breakpoint.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/class.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/context.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/editor.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/eval.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/event.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/field.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/flag.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/function.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/icdata.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/inbound_references.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/instance.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/isolate.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/library.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/megamorphiccache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/metric.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/notification.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/object.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/objectpool.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/objectstore.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/persistent_handles.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/ports.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/reachable_size.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/retained_size.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/retaining_path.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/sample_profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/script.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/settings.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/strongly_reachable_instances.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/target.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/type_arguments.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/web/timeline_message_handler.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/syslog_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/utils_fuchsia.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/app_snapshot.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/app_snapshot.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/canonical_tables.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/branch_optimizer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/branch_optimizer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/redundancy_elimination.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/redundancy_elimination.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_to_il.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_to_il.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpuinfo_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dart_api_state.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/become.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/become.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/safepoint.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/safepoint.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/isolate_reload.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/isolate_reload.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/kernel.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/kernel.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/kernel_binary.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/kernel_isolate.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/kernel_isolate.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/kernel_loader.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/kernel_loader.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/lockers.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/native_symbol_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_reload.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_service.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_fuchsia.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/signal_handler_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/token_position.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/token_position.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/uri.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/uri.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/developer/service.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js_util/js_util.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/devfs.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/crypto_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/directory_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/eventhandler_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/eventhandler_fuchsia.h -FILE: ../../../third_party/dart/runtime/bin/file_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/file_support.cc -FILE: ../../../third_party/dart/runtime/bin/file_system_watcher_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/loader.cc -FILE: ../../../third_party/dart/runtime/bin/loader.h -FILE: ../../../third_party/dart/runtime/bin/platform_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/process_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/reference_counting.h -FILE: ../../../third_party/dart/runtime/bin/root_certificates_unsupported.cc -FILE: ../../../third_party/dart/runtime/bin/socket_base_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/socket_base_fuchsia.h -FILE: ../../../third_party/dart/runtime/bin/socket_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/stdio_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/thread_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/thread_fuchsia.h -FILE: ../../../third_party/dart/runtime/bin/utils_fuchsia.cc -FILE: ../../../third_party/dart/runtime/lib/stacktrace.h -FILE: ../../../third_party/dart/runtime/observatory/lib/event.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/models.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/repositories.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/app/notification.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/class_allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/virtual_collection.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/virtual_tree.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/error_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/general_error.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/custom_element.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/nav_bar.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/nav_menu.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/rendering_queue.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/helpers/uris.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/inbound_references.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/counter_chart.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/location.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/run_state.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/shared_summary.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/isolate/summary.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/metric/details.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/metric/graph.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/class_menu.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/isolate_menu.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/library_menu.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/menu_item.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify_event.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/notify_exception.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/refresh.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/top_menu.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/vm_menu.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/retaining_path.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_link.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/strongly_reachable_instances.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_connect_target.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/exceptions.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/breakpoint.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/class.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/code.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/context.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/error.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/event.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/extension_data.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/field.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/flag.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/frame.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/function.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/guarded.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/heap_space.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/icdata.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/inbound_references.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/instance.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/isolate.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/library.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/local_var_descriptors.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/map_association.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/megamorphiccache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/metric.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/notification.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/object.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/objectpool.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/objectstore.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/pc_descriptors.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/persistent_handles.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/ports.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/retaining_path.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/script.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sentinel.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/source_location.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/target.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline_event.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/type_arguments.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unknown.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/vm.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/breakpoint.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/class.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/context.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/editor.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/eval.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/event.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/field.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/flag.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/function.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/icdata.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/inbound_references.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/instance.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/isolate.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/library.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/megamorphiccache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/metric.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/notification.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/object.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/objectpool.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/objectstore.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/persistent_handles.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/ports.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/reachable_size.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/retained_size.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/retaining_path.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/script.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/strongly_reachable_instances.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/target.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/type_arguments.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/breakpoint.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/class.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/context.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/editor.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/eval.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/event.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/field.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/flag.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/function.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/icdata.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/inbound_references.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/instance.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/isolate.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/library.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/megamorphiccache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/metric.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/notification.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/object.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/objectpool.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/objectstore.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/persistent_handles.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/ports.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/reachable_size.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/retained_size.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/retaining_path.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/script.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/settings.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/strongly_reachable_instances.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/target.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/type_arguments.dart -FILE: ../../../third_party/dart/runtime/observatory/web/timeline_message_handler.js -FILE: ../../../third_party/dart/runtime/observatory_2/lib/event.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/models.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/repositories.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/app/notification.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/class_allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/virtual_collection.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/virtual_tree.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/error_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/general_error.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/custom_element.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/nav_bar.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/nav_menu.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/rendering_queue.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/rendering_scheduler.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/tag.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/helpers/uris.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/inbound_references.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/counter_chart.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/location.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/run_state.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/shared_summary.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/isolate/summary.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metric/details.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/metric/graph.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/class_menu.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/isolate_menu.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/library_menu.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/menu_item.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify_event.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/notify_exception.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/refresh.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/top_menu.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/vm_menu.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/retaining_path.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/source_link.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/strongly_reachable_instances.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/vm_connect_target.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/exceptions.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/breakpoint.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/class.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/code.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/context.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/error.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/event.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/extension_data.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/field.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/flag.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/frame.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/function.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/guarded.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/heap_space.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/icdata.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/inbound_references.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/instance.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/isolate.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/library.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/local_var_descriptors.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/map_association.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/megamorphiccache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/metric.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/notification.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/object.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/objectpool.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/objectstore.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/pc_descriptors.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/persistent_handles.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/ports.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/retaining_path.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/script.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/sentinel.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/source_location.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/target.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/timeline_event.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/type_arguments.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/unknown.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/vm.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/breakpoint.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/class.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/context.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/editor.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/eval.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/event.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/field.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/flag.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/function.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/icdata.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/inbound_references.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/instance.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/isolate.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/library.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/megamorphiccache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/metric.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/notification.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/object.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/objectpool.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/objectstore.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/persistent_handles.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/ports.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/reachable_size.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/retained_size.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/retaining_path.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/script.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/strongly_reachable_instances.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/target.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/type_arguments.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/allocation_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/breakpoint.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/class.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/context.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/editor.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/eval.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/event.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/field.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/flag.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/function.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/icdata.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/inbound_references.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/instance.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/isolate.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/library.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/megamorphiccache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/metric.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/notification.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/object.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/objectpool.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/objectstore.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/persistent_handles.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/ports.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/reachable_size.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/retained_size.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/retaining_path.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/sample_profile.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/script.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/settings.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/strongly_reachable_instances.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/target.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/type_arguments.dart -FILE: ../../../third_party/dart/runtime/observatory_2/web/timeline_message_handler.js -FILE: ../../../third_party/dart/runtime/platform/syslog_fuchsia.cc -FILE: ../../../third_party/dart/runtime/platform/utils_fuchsia.cc -FILE: ../../../third_party/dart/runtime/platform/utils_fuchsia.h -FILE: ../../../third_party/dart/runtime/vm/app_snapshot.cc -FILE: ../../../third_party/dart/runtime/vm/app_snapshot.h -FILE: ../../../third_party/dart/runtime/vm/canonical_tables.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/branch_optimizer.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/branch_optimizer.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/redundancy_elimination.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/redundancy_elimination.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_to_il.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_to_il.h -FILE: ../../../third_party/dart/runtime/vm/cpuinfo_fuchsia.cc -FILE: ../../../third_party/dart/runtime/vm/dart_api_state.cc -FILE: ../../../third_party/dart/runtime/vm/heap/become.cc -FILE: ../../../third_party/dart/runtime/vm/heap/become.h -FILE: ../../../third_party/dart/runtime/vm/heap/safepoint.cc -FILE: ../../../third_party/dart/runtime/vm/heap/safepoint.h -FILE: ../../../third_party/dart/runtime/vm/isolate_reload.cc -FILE: ../../../third_party/dart/runtime/vm/isolate_reload.h -FILE: ../../../third_party/dart/runtime/vm/kernel.cc -FILE: ../../../third_party/dart/runtime/vm/kernel.h -FILE: ../../../third_party/dart/runtime/vm/kernel_binary.cc -FILE: ../../../third_party/dart/runtime/vm/kernel_isolate.cc -FILE: ../../../third_party/dart/runtime/vm/kernel_isolate.h -FILE: ../../../third_party/dart/runtime/vm/kernel_loader.cc -FILE: ../../../third_party/dart/runtime/vm/kernel_loader.h -FILE: ../../../third_party/dart/runtime/vm/lockers.cc -FILE: ../../../third_party/dart/runtime/vm/native_symbol_fuchsia.cc -FILE: ../../../third_party/dart/runtime/vm/object_reload.cc -FILE: ../../../third_party/dart/runtime/vm/object_service.cc -FILE: ../../../third_party/dart/runtime/vm/os_fuchsia.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread_fuchsia.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread_fuchsia.h -FILE: ../../../third_party/dart/runtime/vm/signal_handler_fuchsia.cc -FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_fuchsia.cc -FILE: ../../../third_party/dart/runtime/vm/token_position.cc -FILE: ../../../third_party/dart/runtime/vm/token_position.h -FILE: ../../../third_party/dart/runtime/vm/uri.cc -FILE: ../../../third_party/dart/runtime/vm/uri.h -FILE: ../../../third_party/dart/runtime/vm/virtual_memory_fuchsia.cc -FILE: ../../../third_party/dart/sdk/lib/developer/service.dart -FILE: ../../../third_party/dart/sdk/lib/js_util/js_util.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/devfs.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: glfw ORIGIN: ../../../third_party/glfw/src/null_joystick.c @@ -39939,331 +36909,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/cli.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/dfe.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/dfe.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/error_exit.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/error_exit.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/gzip.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/gzip.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/isolate_data.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/main_options.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/main_options.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/namespace.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/namespace.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/namespace_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/namespace_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/namespace_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/namespace_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/namespace_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/options.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/options.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_filter.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_filter.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_utils.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/secure_socket_utils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/security_context.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/security_context.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/security_context_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/security_context_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/security_context_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/security_context_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/security_context_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/snapshot_utils.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/snapshot_utils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/sync_socket_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/async.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/search_bar.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/reload.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/singletargetcache_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/singletargetcache_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/subtypetestcache_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/subtypetestcache_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/unlinkedcall_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/unlinkedcall_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/service.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/single_target_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/subtype_test_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unlinked_call.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/single_target_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/subtype_test_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/timeline.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/unlinked_call.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/vm.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/single_target_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/subtype_test_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/timeline.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/unlinked_call.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/vm.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/search_bar.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/reload.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/singletargetcache_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/singletargetcache_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/subtypetestcache_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/subtypetestcache_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/timeline/dashboard.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unlinkedcall_ref.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unlinkedcall_view.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/service.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/single_target_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/subtype_test_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/timeline.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/unlinked_call.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/single_target_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/subtype_test_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/timeline.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/unlinked_call.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/vm.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/single_target_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/subtype_test_cache.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/timeline.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/unlinked_call.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/vm.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/allocation.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/growable_array.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_riscv.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/locations_helpers.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/locations_helpers_arm.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/call_specializer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/call_specializer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/prologue_builder.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/prologue_builder.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/jit/jit_call_specializer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_riscv.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_x86.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dwarf.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dwarf.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/fixed_cache.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/gdb_helpers.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/compactor.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/compactor.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/image_snapshot.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/image_snapshot.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/json_writer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/json_writer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/kernel_binary.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator_riscv.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_trace.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_trace.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/timeline_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/timeline_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/timeline_linux.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/zone_text_buffer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/zone_text_buffer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/overrides.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/identity_hash_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/profile.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/cli_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/namespace_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/bin/sync_socket_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/class_id_fasta.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bigint_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/cli/cli.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/cli/wait_for.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/bigint.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/linked_list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/embedder_config.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/namespace_impl.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/overrides.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/io/sync_socket.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/vmservice/named_lookup.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/utils/bazel/kernel_worker.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/cli.cc -FILE: ../../../third_party/dart/runtime/bin/dfe.cc -FILE: ../../../third_party/dart/runtime/bin/dfe.h -FILE: ../../../third_party/dart/runtime/bin/error_exit.cc -FILE: ../../../third_party/dart/runtime/bin/error_exit.h -FILE: ../../../third_party/dart/runtime/bin/gzip.cc -FILE: ../../../third_party/dart/runtime/bin/gzip.h -FILE: ../../../third_party/dart/runtime/bin/isolate_data.cc -FILE: ../../../third_party/dart/runtime/bin/main_options.cc -FILE: ../../../third_party/dart/runtime/bin/main_options.h -FILE: ../../../third_party/dart/runtime/bin/namespace.cc -FILE: ../../../third_party/dart/runtime/bin/namespace.h -FILE: ../../../third_party/dart/runtime/bin/namespace_android.cc -FILE: ../../../third_party/dart/runtime/bin/namespace_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/namespace_linux.cc -FILE: ../../../third_party/dart/runtime/bin/namespace_macos.cc -FILE: ../../../third_party/dart/runtime/bin/namespace_win.cc -FILE: ../../../third_party/dart/runtime/bin/options.cc -FILE: ../../../third_party/dart/runtime/bin/options.h -FILE: ../../../third_party/dart/runtime/bin/secure_socket_filter.cc -FILE: ../../../third_party/dart/runtime/bin/secure_socket_filter.h -FILE: ../../../third_party/dart/runtime/bin/secure_socket_utils.cc -FILE: ../../../third_party/dart/runtime/bin/secure_socket_utils.h -FILE: ../../../third_party/dart/runtime/bin/security_context.cc -FILE: ../../../third_party/dart/runtime/bin/security_context.h -FILE: ../../../third_party/dart/runtime/bin/security_context_android.cc -FILE: ../../../third_party/dart/runtime/bin/security_context_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/security_context_linux.cc -FILE: ../../../third_party/dart/runtime/bin/security_context_macos.cc -FILE: ../../../third_party/dart/runtime/bin/security_context_win.cc -FILE: ../../../third_party/dart/runtime/bin/snapshot_utils.cc -FILE: ../../../third_party/dart/runtime/bin/snapshot_utils.h -FILE: ../../../third_party/dart/runtime/bin/socket_base.cc -FILE: ../../../third_party/dart/runtime/bin/socket_base.h -FILE: ../../../third_party/dart/runtime/bin/sync_socket.cc -FILE: ../../../third_party/dart/runtime/bin/sync_socket.h -FILE: ../../../third_party/dart/runtime/bin/sync_socket_android.cc -FILE: ../../../third_party/dart/runtime/bin/sync_socket_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/sync_socket_linux.cc -FILE: ../../../third_party/dart/runtime/bin/sync_socket_macos.cc -FILE: ../../../third_party/dart/runtime/bin/sync_socket_win.cc -FILE: ../../../third_party/dart/runtime/lib/async.cc -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/containers/search_bar.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/nav/reload.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/singletargetcache_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/singletargetcache_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/subtypetestcache_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/subtypetestcache_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/unlinkedcall_ref.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/unlinkedcall_view.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/service.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/single_target_cache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/subtype_test_cache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unlinked_call.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/single_target_cache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/subtype_test_cache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/timeline.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/unlinked_call.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/vm.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/single_target_cache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/subtype_test_cache.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/timeline.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/unlinked_call.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/vm.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/containers/search_bar.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/nav/reload.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/singletargetcache_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/singletargetcache_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/subtypetestcache_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/subtypetestcache_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/timeline/dashboard.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unlinkedcall_ref.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/unlinkedcall_view.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/service.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/single_target_cache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/subtype_test_cache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/timeline.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/unlinked_call.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/single_target_cache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/subtype_test_cache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/timeline.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/unlinked_call.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/vm.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/single_target_cache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/subtype_test_cache.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/timeline.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/unlinked_call.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/vm.dart -FILE: ../../../third_party/dart/runtime/platform/allocation.h -FILE: ../../../third_party/dart/runtime/platform/growable_array.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_riscv.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/locations_helpers.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/locations_helpers_arm.h -FILE: ../../../third_party/dart/runtime/vm/compiler/call_specializer.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/call_specializer.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/prologue_builder.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/prologue_builder.h -FILE: ../../../third_party/dart/runtime/vm/compiler/jit/jit_call_specializer.h -FILE: ../../../third_party/dart/runtime/vm/constants_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/constants_riscv.h -FILE: ../../../third_party/dart/runtime/vm/constants_x86.h -FILE: ../../../third_party/dart/runtime/vm/dwarf.cc -FILE: ../../../third_party/dart/runtime/vm/dwarf.h -FILE: ../../../third_party/dart/runtime/vm/fixed_cache.h -FILE: ../../../third_party/dart/runtime/vm/gdb_helpers.cc -FILE: ../../../third_party/dart/runtime/vm/heap/compactor.cc -FILE: ../../../third_party/dart/runtime/vm/heap/compactor.h -FILE: ../../../third_party/dart/runtime/vm/image_snapshot.cc -FILE: ../../../third_party/dart/runtime/vm/image_snapshot.h -FILE: ../../../third_party/dart/runtime/vm/json_writer.cc -FILE: ../../../third_party/dart/runtime/vm/json_writer.h -FILE: ../../../third_party/dart/runtime/vm/kernel_binary.h -FILE: ../../../third_party/dart/runtime/vm/simulator_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/simulator_riscv.h -FILE: ../../../third_party/dart/runtime/vm/stack_trace.cc -FILE: ../../../third_party/dart/runtime/vm/stack_trace.h -FILE: ../../../third_party/dart/runtime/vm/timeline_android.cc -FILE: ../../../third_party/dart/runtime/vm/timeline_fuchsia.cc -FILE: ../../../third_party/dart/runtime/vm/timeline_linux.cc -FILE: ../../../third_party/dart/runtime/vm/zone_text_buffer.cc -FILE: ../../../third_party/dart/runtime/vm/zone_text_buffer.h -FILE: ../../../third_party/dart/sdk/lib/_http/overrides.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/identity_hash_map.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/profile.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/cli_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/namespace_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/bin/sync_socket_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/class_id_fasta.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm_shared/lib/bigint_patch.dart -FILE: ../../../third_party/dart/sdk/lib/cli/cli.dart -FILE: ../../../third_party/dart/sdk/lib/cli/wait_for.dart -FILE: ../../../third_party/dart/sdk/lib/core/bigint.dart -FILE: ../../../third_party/dart/sdk/lib/internal/linked_list.dart -FILE: ../../../third_party/dart/sdk/lib/internal/patch.dart -FILE: ../../../third_party/dart/sdk/lib/io/embedder_config.dart -FILE: ../../../third_party/dart/sdk/lib/io/namespace_impl.dart -FILE: ../../../third_party/dart/sdk/lib/io/overrides.dart -FILE: ../../../third_party/dart/sdk/lib/io/sync_socket.dart -FILE: ../../../third_party/dart/sdk/lib/vmservice/named_lookup.dart -FILE: ../../../third_party/dart/utils/bazel/kernel_worker.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: boringssl ORIGIN: ../../../third_party/boringssl/src/crypto/hrss/asm/poly_rq_mul.S @@ -40466,172 +37111,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/crashpad.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/dart_embedder_api_impl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/typed_data_utils.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/typed_data_utils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/dart_embedder_api.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/base64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/base64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/compile_type.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/loops.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/loops.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/slot.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/slot.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_state.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_state.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/base_flow_graph_builder.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/base_flow_graph_builder.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_reader.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_reader.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/scope_builder.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/scope_builder.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/relocation.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/datastream.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/finalizable_data.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/hash.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/raw_object_fields.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/raw_object_fields.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/reverse_pc_lookup_cache.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/reverse_pc_lookup_cache.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/type_testing_stubs.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/type_testing_stubs.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/v8_snapshot_writer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/v8_snapshot_writer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/instantiation.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js/_js.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js/_js_client.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js/_js_server.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/typed_data/unmodifiable_typed_data.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/crashpad.h -FILE: ../../../third_party/dart/runtime/bin/dart_embedder_api_impl.cc -FILE: ../../../third_party/dart/runtime/bin/typed_data_utils.cc -FILE: ../../../third_party/dart/runtime/bin/typed_data_utils.h -FILE: ../../../third_party/dart/runtime/include/dart_embedder_api.h -FILE: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz.dart -FILE: ../../../third_party/dart/runtime/vm/base64.cc -FILE: ../../../third_party/dart/runtime/vm/base64.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/compile_type.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/loops.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/loops.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/slot.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/slot.h -FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.h -FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_state.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_state.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/base_flow_graph_builder.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/base_flow_graph_builder.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_reader.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_reader.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.h -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/scope_builder.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/scope_builder.h -FILE: ../../../third_party/dart/runtime/vm/compiler/relocation.h -FILE: ../../../third_party/dart/runtime/vm/constants.h -FILE: ../../../third_party/dart/runtime/vm/datastream.cc -FILE: ../../../third_party/dart/runtime/vm/finalizable_data.h -FILE: ../../../third_party/dart/runtime/vm/hash.h -FILE: ../../../third_party/dart/runtime/vm/raw_object_fields.cc -FILE: ../../../third_party/dart/runtime/vm/raw_object_fields.h -FILE: ../../../third_party/dart/runtime/vm/reverse_pc_lookup_cache.cc -FILE: ../../../third_party/dart/runtime/vm/reverse_pc_lookup_cache.h -FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs.cc -FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs.h -FILE: ../../../third_party/dart/runtime/vm/v8_snapshot_writer.cc -FILE: ../../../third_party/dart/runtime/vm/v8_snapshot_writer.h -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/instantiation.dart -FILE: ../../../third_party/dart/sdk/lib/js/_js.dart -FILE: ../../../third_party/dart/sdk/lib/js/_js_client.dart -FILE: ../../../third_party/dart/sdk/lib/js/_js_server.dart -FILE: ../../../third_party/dart/sdk/lib/typed_data/unmodifiable_typed_data.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/console.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/console_posix.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/console_win.cc + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/console.h -FILE: ../../../third_party/dart/runtime/bin/console_posix.cc -FILE: ../../../third_party/dart/runtime/bin/console_win.cc ----------------------------------------------------------------------------------------------------- -Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: inja ORIGIN: ../../../third_party/inja/LICENSE @@ -40773,258 +37252,6 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/elf_loader.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/elf_loader.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/ifaddrs-android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/ifaddrs-android.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/namespace_fuchsia.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_android.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/ffi.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/ffi_dynamic_library.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/tree_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/isolate_group.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/isolate_group.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/isolate_group.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/repositories/timeline_base.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/tree_map.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/isolate_group.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/isolate_group.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/isolate_group.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/timeline_base.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/elf.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/thread_sanitizer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_api_table.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_ffi_api.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_type_table.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/gen_api_table.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/gen_type_table.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/dartfuzz/gen_util.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/ffi/sdk_lib_ffi_generator.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.html + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.js + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/run_clang_tidy.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bss_relocs.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/bss_relocs.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/class_id.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_comments.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_comments.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_entry_kind.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/block_builder.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/evaluator.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/evaluator.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_test_helper.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_test_helper.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/offsets_extractor.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/recognized_methods_list.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/relocation.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/runtime_api.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/runtime_api.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/runtime_offsets_extracted.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/runtime_offsets_list.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_arm.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_arm64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_ia32.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/elf.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/elf.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/frame_layout.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/intrusive_dlist.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/libfuzzer/dart_libfuzzer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/longjump.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/pointer_tagging.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/splay-tree.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/static_type_exactness_state.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stub_code_list.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_stack_resource.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_stack_resource.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_state.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_state.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/rti.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/synced/recipe_syntax.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_dynamic_library_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_native_type_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/annotations.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/dynamic_library.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/ffi.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/native_type.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/struct.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/errors.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/elf_loader.cc -FILE: ../../../third_party/dart/runtime/bin/elf_loader.h -FILE: ../../../third_party/dart/runtime/bin/ifaddrs-android.cc -FILE: ../../../third_party/dart/runtime/bin/ifaddrs-android.h -FILE: ../../../third_party/dart/runtime/bin/namespace_fuchsia.h -FILE: ../../../third_party/dart/runtime/bin/socket_base_android.cc -FILE: ../../../third_party/dart/runtime/lib/ffi.cc -FILE: ../../../third_party/dart/runtime/lib/ffi_dynamic_library.cc -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/tree_map.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/isolate_group.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/repositories/isolate_group.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/isolate_group.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/repositories/timeline_base.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/tree_map.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/objects/isolate_group.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/models/repositories/isolate_group.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/isolate_group.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/repositories/timeline_base.dart -FILE: ../../../third_party/dart/runtime/platform/elf.h -FILE: ../../../third_party/dart/runtime/platform/thread_sanitizer.h -FILE: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_api_table.dart -FILE: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_ffi_api.dart -FILE: ../../../third_party/dart/runtime/tools/dartfuzz/dartfuzz_type_table.dart -FILE: ../../../third_party/dart/runtime/tools/dartfuzz/gen_api_table.dart -FILE: ../../../third_party/dart/runtime/tools/dartfuzz/gen_type_table.dart -FILE: ../../../third_party/dart/runtime/tools/dartfuzz/gen_util.dart -FILE: ../../../third_party/dart/runtime/tools/ffi/sdk_lib_ffi_generator.dart -FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.html -FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.js -FILE: ../../../third_party/dart/runtime/tools/run_clang_tidy.dart -FILE: ../../../third_party/dart/runtime/vm/bss_relocs.cc -FILE: ../../../third_party/dart/runtime/vm/bss_relocs.h -FILE: ../../../third_party/dart/runtime/vm/class_id.h -FILE: ../../../third_party/dart/runtime/vm/code_comments.cc -FILE: ../../../third_party/dart/runtime/vm/code_comments.h -FILE: ../../../third_party/dart/runtime/vm/code_entry_kind.h -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.h -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_x64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/block_builder.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/evaluator.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/evaluator.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_test_helper.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_test_helper.h -FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.h -FILE: ../../../third_party/dart/runtime/vm/compiler/offsets_extractor.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/recognized_methods_list.h -FILE: ../../../third_party/dart/runtime/vm/compiler/relocation.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_api.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_api.h -FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_offsets_extracted.h -FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_offsets_list.h -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.h -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_x64.cc -FILE: ../../../third_party/dart/runtime/vm/constants_arm.cc -FILE: ../../../third_party/dart/runtime/vm/constants_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/constants_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/constants_x64.cc -FILE: ../../../third_party/dart/runtime/vm/elf.cc -FILE: ../../../third_party/dart/runtime/vm/elf.h -FILE: ../../../third_party/dart/runtime/vm/frame_layout.h -FILE: ../../../third_party/dart/runtime/vm/intrusive_dlist.h -FILE: ../../../third_party/dart/runtime/vm/libfuzzer/dart_libfuzzer.cc -FILE: ../../../third_party/dart/runtime/vm/longjump.h -FILE: ../../../third_party/dart/runtime/vm/pointer_tagging.h -FILE: ../../../third_party/dart/runtime/vm/splay-tree.h -FILE: ../../../third_party/dart/runtime/vm/static_type_exactness_state.h -FILE: ../../../third_party/dart/runtime/vm/stub_code_list.h -FILE: ../../../third_party/dart/runtime/vm/thread_stack_resource.cc -FILE: ../../../third_party/dart/runtime/vm/thread_stack_resource.h -FILE: ../../../third_party/dart/runtime/vm/thread_state.cc -FILE: ../../../third_party/dart/runtime/vm/thread_state.h -FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/rti.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/synced/recipe_syntax.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_dynamic_library_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_native_type_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_patch.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/annotations.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/dynamic_library.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/ffi.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/native_type.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/struct.dart -FILE: ../../../third_party/dart/sdk/lib/internal/errors.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/sdk/lib/io/network_profiling.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/sdk/lib/io/network_profiling.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: angle ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/QueryMtl.h + ../../../third_party/angle/LICENSE @@ -41195,181 +37422,6 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/dartdev_isolate.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/dartdev_isolate.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/exe_utils.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/exe_utils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/ffi_unit_test/run_ffi_unit_tests.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/file_win.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform_macos.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/dart_api_dl.c + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/dart_api_dl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/dart_version.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/internal/dart_api_dl_impl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/bin/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory/lib/src/elements/process_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/bin/heap_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/process_snapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/allocation.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/leak_sanitizer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/priority_queue.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/unaligned.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/undefined_behavior_sanitizer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/canonical_tables.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/closure_functions_cache.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/closure_functions_cache.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/dispatch_table_generator.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/dispatch_table_generator.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler_tracer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler_tracer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/api/deopt_id.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/api/print_filter.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/api/print_filter.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/api/type_check_mode.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_base.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/abi.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/abi.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/call.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/call.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/callback.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/callback.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/frame_rebase.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/frame_rebase.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/marshaller.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/marshaller.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_calling_convention.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_calling_convention.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_location.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_location.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/unit_test_custom_zone.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/unit_test_custom_zone.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/constants_base.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dispatch_table.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/dispatch_table.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/experimental_features.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/experimental_features.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/field_table.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/field_table.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/port_set.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/tagged_pointer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/timeline_macos.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/visitor.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/embedder_config.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_struct_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/internal/lowering.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/dartdev_isolate.cc -FILE: ../../../third_party/dart/runtime/bin/dartdev_isolate.h -FILE: ../../../third_party/dart/runtime/bin/exe_utils.cc -FILE: ../../../third_party/dart/runtime/bin/exe_utils.h -FILE: ../../../third_party/dart/runtime/bin/ffi_unit_test/run_ffi_unit_tests.cc -FILE: ../../../third_party/dart/runtime/bin/file_win.h -FILE: ../../../third_party/dart/runtime/bin/platform_macos.h -FILE: ../../../third_party/dart/runtime/include/dart_api_dl.c -FILE: ../../../third_party/dart/runtime/include/dart_api_dl.h -FILE: ../../../third_party/dart/runtime/include/dart_version.h -FILE: ../../../third_party/dart/runtime/include/internal/dart_api_dl_impl.h -FILE: ../../../third_party/dart/runtime/observatory/bin/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/process_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory_2/bin/heap_snapshot.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/process_snapshot.dart -FILE: ../../../third_party/dart/runtime/platform/allocation.cc -FILE: ../../../third_party/dart/runtime/platform/leak_sanitizer.h -FILE: ../../../third_party/dart/runtime/platform/priority_queue.h -FILE: ../../../third_party/dart/runtime/platform/unaligned.h -FILE: ../../../third_party/dart/runtime/platform/undefined_behavior_sanitizer.h -FILE: ../../../third_party/dart/runtime/vm/canonical_tables.cc -FILE: ../../../third_party/dart/runtime/vm/closure_functions_cache.cc -FILE: ../../../third_party/dart/runtime/vm/closure_functions_cache.h -FILE: ../../../third_party/dart/runtime/vm/compiler/aot/dispatch_table_generator.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/aot/dispatch_table_generator.h -FILE: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler_tracer.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/aot/precompiler_tracer.h -FILE: ../../../third_party/dart/runtime/vm/compiler/api/deopt_id.h -FILE: ../../../third_party/dart/runtime/vm/compiler/api/print_filter.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/api/print_filter.h -FILE: ../../../third_party/dart/runtime/vm/compiler/api/type_check_mode.h -FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/assembler_base.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/abi.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/abi.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/call.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/call.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/callback.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/callback.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/frame_rebase.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/frame_rebase.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/marshaller.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/marshaller.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_calling_convention.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_calling_convention.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_location.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_location.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/unit_test_custom_zone.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/unit_test_custom_zone.h -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.h -FILE: ../../../third_party/dart/runtime/vm/constants_base.h -FILE: ../../../third_party/dart/runtime/vm/dispatch_table.cc -FILE: ../../../third_party/dart/runtime/vm/dispatch_table.h -FILE: ../../../third_party/dart/runtime/vm/experimental_features.cc -FILE: ../../../third_party/dart/runtime/vm/experimental_features.h -FILE: ../../../third_party/dart/runtime/vm/field_table.cc -FILE: ../../../third_party/dart/runtime/vm/field_table.h -FILE: ../../../third_party/dart/runtime/vm/port_set.h -FILE: ../../../third_party/dart/runtime/vm/tagged_pointer.h -FILE: ../../../third_party/dart/runtime/vm/timeline_macos.cc -FILE: ../../../third_party/dart/runtime/vm/visitor.cc -FILE: ../../../third_party/dart/sdk/lib/_http/embedder_config.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_struct_patch.dart -FILE: ../../../third_party/dart/sdk/lib/internal/lowering.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: etc_decoder ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/third_party/etc_decoder/etc_decoder.h @@ -41491,125 +37543,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/analyze_snapshot.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform_macos_cocoa.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/platform_macos_cocoa.mm + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/socket_base_posix.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/utils.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/virtual_memory.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/virtual_memory_fuchsia.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/virtual_memory_posix.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/virtual_memory_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/include/analyze_snapshot_api.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/analyze_snapshot_api_impl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/code_patcher_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_timings.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/compiler_timings.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/ffi/range.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/cpu_riscv.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/debugger_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions_riscv.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/message_snapshot.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/message_snapshot.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_graph_copy.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/object_graph_copy.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/pending_deopts.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/pending_deopts.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/runtime_entry_riscv.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/stack_frame_riscv.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/thread_interrupter_android_arm.S + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_compressed.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/virtual_memory_compressed.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/dart2js_runtime_metrics.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/late_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_allocation_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/enum.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/abi.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/abi_specific.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/allocation.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/union.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/analyze_snapshot.cc -FILE: ../../../third_party/dart/runtime/bin/platform_macos_cocoa.h -FILE: ../../../third_party/dart/runtime/bin/platform_macos_cocoa.mm -FILE: ../../../third_party/dart/runtime/bin/socket_base_posix.cc -FILE: ../../../third_party/dart/runtime/bin/utils.cc -FILE: ../../../third_party/dart/runtime/bin/virtual_memory.h -FILE: ../../../third_party/dart/runtime/bin/virtual_memory_fuchsia.cc -FILE: ../../../third_party/dart/runtime/bin/virtual_memory_posix.cc -FILE: ../../../third_party/dart/runtime/bin/virtual_memory_win.cc -FILE: ../../../third_party/dart/runtime/include/analyze_snapshot_api.h -FILE: ../../../third_party/dart/runtime/vm/analyze_snapshot_api_impl.cc -FILE: ../../../third_party/dart/runtime/vm/code_patcher_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_timings.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_timings.h -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/range.h -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/cpu_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/cpu_riscv.h -FILE: ../../../third_party/dart/runtime/vm/debugger_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/instructions_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/instructions_riscv.h -FILE: ../../../third_party/dart/runtime/vm/message_snapshot.cc -FILE: ../../../third_party/dart/runtime/vm/message_snapshot.h -FILE: ../../../third_party/dart/runtime/vm/object_graph_copy.cc -FILE: ../../../third_party/dart/runtime/vm/object_graph_copy.h -FILE: ../../../third_party/dart/runtime/vm/pending_deopts.cc -FILE: ../../../third_party/dart/runtime/vm/pending_deopts.h -FILE: ../../../third_party/dart/runtime/vm/runtime_entry_riscv.cc -FILE: ../../../third_party/dart/runtime/vm/stack_frame_riscv.h -FILE: ../../../third_party/dart/runtime/vm/thread_interrupter_android_arm.S -FILE: ../../../third_party/dart/runtime/vm/virtual_memory_compressed.cc -FILE: ../../../third_party/dart/runtime/vm/virtual_memory_compressed.h -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/dart2js_runtime_metrics.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/late_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_allocation_patch.dart -FILE: ../../../third_party/dart/sdk/lib/core/enum.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/abi.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/abi_specific.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/allocation.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/union.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: glslang ORIGIN: ../../../third_party/vulkan-deps/glslang/src/SPIRV/GLSL.ext.ARM.h @@ -41708,199 +37641,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/test_utils.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/test_utils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_absl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/bin/thread_absl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/lib/integers.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/mach_o.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/pe.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/bin/download.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/bin/explore.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/heapsnapshot.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/analysis.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/cli.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/completion.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/console.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/expression.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/format.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/intset.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/load.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_serializer.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/il_serializer.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/gc_shared.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/gc_shared.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/page.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/page.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/sampler.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/heap/sampler.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/instructions.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_absl.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/os_thread_absl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator_x64.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/simulator_x64.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_http/http_testing.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_names.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/runtime_metrics.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/load_library_priority.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_util_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/synced/embedded_names.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_native_finalizer_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/finalizer_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/hash_factories.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/vm/lib/record_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/bool.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/class_id.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/convert_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/core_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/deferred.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/developer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/double.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/errors_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/growable_list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/hash_factories.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/identical_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/int.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/internal_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/isolate_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_util_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/list.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/math_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/named_parameters.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/object_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/print_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/regexp_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/regexp_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/simd_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/stack_trace_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/stopwatch_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/symbol_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/timer_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/type.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/typed_data_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/uri_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_wasm/wasm_types.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/core/record.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/c_type.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/ffi/native_finalizer.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js/js_wasm.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js_util/js_util_wasm.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/test_utils.cc -FILE: ../../../third_party/dart/runtime/bin/test_utils.h -FILE: ../../../third_party/dart/runtime/bin/thread_absl.cc -FILE: ../../../third_party/dart/runtime/bin/thread_absl.h -FILE: ../../../third_party/dart/runtime/lib/integers.h -FILE: ../../../third_party/dart/runtime/platform/mach_o.h -FILE: ../../../third_party/dart/runtime/platform/pe.h -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/bin/download.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/bin/explore.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/heapsnapshot.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/analysis.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/cli.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/completion.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/console.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/expression.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/format.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/intset.dart -FILE: ../../../third_party/dart/runtime/tools/heapsnapshot/lib/src/load.dart -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_serializer.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/il_serializer.h -FILE: ../../../third_party/dart/runtime/vm/heap/gc_shared.cc -FILE: ../../../third_party/dart/runtime/vm/heap/gc_shared.h -FILE: ../../../third_party/dart/runtime/vm/heap/page.cc -FILE: ../../../third_party/dart/runtime/vm/heap/page.h -FILE: ../../../third_party/dart/runtime/vm/heap/sampler.cc -FILE: ../../../third_party/dart/runtime/vm/heap/sampler.h -FILE: ../../../third_party/dart/runtime/vm/instructions.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread_absl.cc -FILE: ../../../third_party/dart/runtime/vm/os_thread_absl.h -FILE: ../../../third_party/dart/runtime/vm/simulator_x64.cc -FILE: ../../../third_party/dart/runtime/vm/simulator_x64.h -FILE: ../../../third_party/dart/sdk/lib/_http/http_testing.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/js_names.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/runtime_metrics.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/synced/load_library_priority.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_util_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/synced/embedded_names.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/ffi_native_finalizer_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/finalizer_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/hash_factories.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/vm/lib/record_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/bool.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/class_id.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/convert_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/core_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/deferred.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/developer.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/double.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/errors_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/growable_list.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/hash_factories.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/identical_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/int.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/internal_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/isolate_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_util_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/list.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/math_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/named_parameters.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/object_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/print_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/regexp_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/regexp_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/simd_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/stack_trace_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/stopwatch_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/symbol_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/timer_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/type.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/typed_data_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/uri_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_wasm/wasm_types.dart -FILE: ../../../third_party/dart/sdk/lib/core/record.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/c_type.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/native_finalizer.dart -FILE: ../../../third_party/dart/sdk/lib/js/js_wasm.dart -FILE: ../../../third_party/dart/sdk/lib/js_util/js_util_wasm.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: boringssl ORIGIN: ../../../third_party/boringssl/src/crypto/kyber/internal.h @@ -41924,174 +37664,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/main_impl.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/unwinding_records.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/unwinding_records.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/platform/unwinding_records_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/parallel_move_resolver.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/compiler/backend/parallel_move_resolver.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/ffi/native_assets.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/ffi/native_assets.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/ffi_callback_metadata.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/ffi_callback_metadata.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/unwinding_records.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/unwinding_records.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/unwinding_records_win.cc + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/records.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_allow_interop_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/records.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/closure.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/date_patch_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_array.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_unsafe_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_string.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_typed_array.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_types.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/record_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_buffer_create.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_helper.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_stringref_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/sync_star_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/weak_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/async/future_extensions.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js_interop/js_interop.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/js_interop_unsafe/js_interop_unsafe.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/main_impl.h -FILE: ../../../third_party/dart/runtime/platform/unwinding_records.cc -FILE: ../../../third_party/dart/runtime/platform/unwinding_records.h -FILE: ../../../third_party/dart/runtime/platform/unwinding_records_win.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/parallel_move_resolver.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/parallel_move_resolver.h -FILE: ../../../third_party/dart/runtime/vm/ffi/native_assets.cc -FILE: ../../../third_party/dart/runtime/vm/ffi/native_assets.h -FILE: ../../../third_party/dart/runtime/vm/ffi_callback_metadata.cc -FILE: ../../../third_party/dart/runtime/vm/ffi_callback_metadata.h -FILE: ../../../third_party/dart/runtime/vm/unwinding_records.cc -FILE: ../../../third_party/dart/runtime/vm/unwinding_records.h -FILE: ../../../third_party/dart/runtime/vm/unwinding_records_win.cc -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/records.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/js_allow_interop_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/records.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/closure.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/date_patch_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_array.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_unsafe_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_string.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_typed_array.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_types.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/record_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_buffer_create.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_helper.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_stringref_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/sync_star_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/weak_patch.dart -FILE: ../../../third_party/dart/sdk/lib/async/future_extensions.dart -FILE: ../../../third_party/dart/sdk/lib/js_interop/js_interop.dart -FILE: ../../../third_party/dart/sdk/lib/js_interop_unsafe/js_interop_unsafe.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/vm/perfetto_utils.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/common/builtin_clock.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/clock_snapshot.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/interned_data/interned_data.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_common.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_packet.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace_packet.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/debug_annotation.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/process_descriptor.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_descriptor.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_event.pbzero.h + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/runtime/vm/protos/tools/compile_perfetto_protos.dart + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/vm/perfetto_utils.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/common/builtin_clock.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/clock_snapshot.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/interned_data/interned_data.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_common.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/profiling/profile_packet.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/trace_packet.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/debug_annotation.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/process_descriptor.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_descriptor.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/perfetto/trace/track_event/track_event.pbzero.h -FILE: ../../../third_party/dart/runtime/vm/protos/tools/compile_perfetto_protos.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: icu ORIGIN: ../../../third_party/icu/source/i18n/decNumber.h (with ../../../third_party/icu/LICENSE) @@ -43144,12 +38716,9 @@ OTHERWISE. ==================================================================================================== ==================================================================================================== -LIBRARY: double-conversion LIBRARY: icu -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/cached-powers.cc ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-cached-powers.cpp TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/cached-powers.cc FILE: ../../../third_party/icu/source/i18n/double-conversion-cached-powers.cpp ---------------------------------------------------------------------------------------------------- Copyright 2006-2008 the V8 project authors. All rights reserved. @@ -43470,22 +39039,7 @@ POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== ==================================================================================================== -LIBRARY: double-conversion LIBRARY: icu -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum-dtoa.cc -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum-dtoa.h -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum.cc -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum.h -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/cached-powers.h -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/diy-fp.cc -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/diy-fp.h -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/double-conversion.cc -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/fast-dtoa.h -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/fixed-dtoa.cc -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/fixed-dtoa.h -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/strtod.cc -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/strtod.h -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/utils.h ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-bignum-dtoa.cpp ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-bignum-dtoa.h ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-bignum.cpp @@ -43499,20 +39053,6 @@ ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-strtod.cpp ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-strtod.h ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-utils.h TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum-dtoa.cc -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum-dtoa.h -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum.cc -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/bignum.h -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/cached-powers.h -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/diy-fp.cc -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/diy-fp.h -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/double-conversion.cc -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/fast-dtoa.h -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/fixed-dtoa.cc -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/fixed-dtoa.h -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/strtod.cc -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/strtod.h -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/utils.h FILE: ../../../third_party/icu/source/i18n/double-conversion-bignum-dtoa.cpp FILE: ../../../third_party/icu/source/i18n/double-conversion-bignum-dtoa.h FILE: ../../../third_party/icu/source/i18n/double-conversion-bignum.cpp @@ -44022,20 +39562,13 @@ POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== ==================================================================================================== -LIBRARY: double-conversion LIBRARY: icu -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/double-conversion.h -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/fast-dtoa.cc -ORIGIN: ../../../third_party/dart/runtime/third_party/double-conversion/src/ieee.h ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-double-to-string.h ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-fast-dtoa.cpp ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-ieee.h ORIGIN: ../../../third_party/icu/source/i18n/double-conversion-string-to-double.h ORIGIN: ../../../third_party/icu/source/i18n/double-conversion.h TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/double-conversion.h -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/fast-dtoa.cc -FILE: ../../../third_party/dart/runtime/third_party/double-conversion/src/ieee.h FILE: ../../../third_party/icu/source/i18n/double-conversion-double-to-string.h FILE: ../../../third_party/icu/source/i18n/double-conversion-fast-dtoa.cpp FILE: ../../../third_party/icu/source/i18n/double-conversion-ieee.h @@ -44071,62 +39604,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/observatory/lib/elements.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/img/chromium_icon.png -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/img/dart_icon.png -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/img/isolate_icon.png -FILE: ../../../third_party/dart/runtime/observatory/web/favicon.ico -FILE: ../../../third_party/dart/runtime/observatory/web/index.html -FILE: ../../../third_party/dart/runtime/observatory/web/third_party/trace_viewer_full.html -FILE: ../../../third_party/dart/runtime/observatory/web/timeline.html -FILE: ../../../third_party/dart/runtime/observatory_2/lib/elements.dart -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/img/chromium_icon.png -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/img/dart_icon.png -FILE: ../../../third_party/dart/runtime/observatory_2/lib/src/elements/img/isolate_icon.png -FILE: ../../../third_party/dart/runtime/observatory_2/web/favicon.ico -FILE: ../../../third_party/dart/runtime/observatory_2/web/index.html -FILE: ../../../third_party/dart/runtime/observatory_2/web/third_party/trace_viewer_full.html -FILE: ../../../third_party/dart/runtime/observatory_2/web/timeline.html -FILE: ../../../third_party/dart/runtime/tools/wiki/styles/style.scss -FILE: ../../../third_party/dart/runtime/tools/wiki/templates/includes/auto-refresh.html -FILE: ../../../third_party/dart/runtime/tools/wiki/templates/page.html -FILE: ../../../third_party/dart/sdk.code-workspace -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/async_patch.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/conversions_dart2js.dart -FILE: ../../../third_party/dart/sdk/lib/html/html_common/html_common.dart ----------------------------------------------------------------------------------------------------- -Copyright 2012, the Dart project authors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google LLC nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: boringssl ORIGIN: ../../../third_party/boringssl/apple-arm/crypto/fipsmodule/bsaes-armv7-apple.S (with ../../../third_party/boringssl/src/LICENSE) @@ -66389,4 +61866,4 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 886 +Total license count: 866 diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index e8cee7ed4c9b7..6aeb9a1edafe4 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: 70f28de8b1b5d020e6870e2da16913ee +Signature: 146d867e969af92134525e494a501d48 diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 192a175086c2e..8bf184ffc7a01 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -1451,7 +1451,11 @@ class _EngineSrcDirectory extends _RepositoryDirectory { // is therefore represented as a separate top-level component. final fs.Directory thirdPartyNode = findChildDirectory(ioDirectory, 'third_party')!; final fs.Directory skiaNode = findChildDirectory(thirdPartyNode, 'skia')!; - return <_RepositoryDirectory>[_RepositorySkiaDirectory(this, skiaNode)]; + final fs.Directory dartNode = findChildDirectory(thirdPartyNode, 'dart')!; + return <_RepositoryDirectory>[ + _RepositorySkiaDirectory(this, skiaNode), + _RepositorySkiaDirectory(this, dartNode), + ]; } } @@ -1468,6 +1472,7 @@ class _RepositoryRootThirdPartyDirectory extends _RepositoryGenericThirdPartyDir @override bool shouldRecurse(fs.IoNode entry) { return entry.name != 'skia' // handled as a virtual directory of the root + && entry.name != 'dart' // handled as a virtual directory of the root && super.shouldRecurse(entry); } From 62477ca6901b2d512151cb1ea029645ea2c0abd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= <737941+loic-sharma@users.noreply.github.com> Date: Mon, 17 Jul 2023 14:06:15 -0700 Subject: [PATCH 106/211] [Windows] Remove accessibility bridge helpers from the engine (#43710) The ownership of the accessibility bridge was moved from `FlutterWindowsEngine` to `FlutterWindowsView`. This change moves leftover accessibility bridge helpers/logic from the engine to the view. Addresses: https://github.com/flutter/flutter/issues/124995 Follow-up to: https://github.com/flutter/engine/pull/41308 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- .../accessibility_bridge_windows_unittests.cc | 16 +++++++------- .../windows/flutter_windows_engine.cc | 21 ++++++------------- .../platform/windows/flutter_windows_engine.h | 7 ------- .../platform/windows/flutter_windows_view.cc | 8 +++++-- .../windows/flutter_windows_view_unittests.cc | 14 ++++++------- 5 files changed, 27 insertions(+), 39 deletions(-) diff --git a/shell/platform/windows/accessibility_bridge_windows_unittests.cc b/shell/platform/windows/accessibility_bridge_windows_unittests.cc index a07f52d5c4f25..944036b4cd233 100644 --- a/shell/platform/windows/accessibility_bridge_windows_unittests.cc +++ b/shell/platform/windows/accessibility_bridge_windows_unittests.cc @@ -178,9 +178,9 @@ ui::AXNode* AXNodeFromID(std::shared_ptr bridge, } std::shared_ptr GetAccessibilityBridgeSpy( - FlutterWindowsEngine* engine) { + FlutterWindowsView& view) { return std::static_pointer_cast( - engine->accessibility_bridge().lock()); + view.accessibility_bridge().lock()); } void ExpectWinEventFromAXEvent(int32_t node_id, @@ -192,7 +192,7 @@ void ExpectWinEventFromAXEvent(int32_t node_id, view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = GetAccessibilityBridgeSpy(view.GetEngine()); + auto bridge = GetAccessibilityBridgeSpy(view); PopulateAXTree(bridge); bridge->ResetRecords(); @@ -212,7 +212,7 @@ void ExpectWinEventFromAXEventOnFocusNode(int32_t node_id, view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = GetAccessibilityBridgeSpy(view.GetEngine()); + auto bridge = GetAccessibilityBridgeSpy(view); PopulateAXTree(bridge); bridge->ResetRecords(); @@ -237,7 +237,7 @@ TEST(AccessibilityBridgeWindows, GetParent) { view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); PopulateAXTree(bridge); auto node0_delegate = bridge->GetFlutterPlatformNodeDelegateFromID(0).lock(); @@ -253,7 +253,7 @@ TEST(AccessibilityBridgeWindows, GetParentOnRootRetunsNullptr) { view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); PopulateAXTree(bridge); auto node0_delegate = bridge->GetFlutterPlatformNodeDelegateFromID(0).lock(); @@ -267,7 +267,7 @@ TEST(AccessibilityBridgeWindows, DispatchAccessibilityAction) { view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); PopulateAXTree(bridge); FlutterSemanticsAction actual_action = kFlutterSemanticsActionTap; @@ -303,7 +303,7 @@ TEST(AccessibilityBridgeWindows, OnAccessibilityEventFocusChanged) { view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = GetAccessibilityBridgeSpy(view.GetEngine()); + auto bridge = GetAccessibilityBridgeSpy(view); PopulateAXTree(bridge); bridge->ResetRecords(); diff --git a/shell/platform/windows/flutter_windows_engine.cc b/shell/platform/windows/flutter_windows_engine.cc index 844790db56c17..68cccd27ab19f 100644 --- a/shell/platform/windows/flutter_windows_engine.cc +++ b/shell/platform/windows/flutter_windows_engine.cc @@ -345,7 +345,12 @@ bool FlutterWindowsEngine::Run(std::string_view entrypoint) { args.update_semantics_callback2 = [](const FlutterSemanticsUpdate2* update, void* user_data) { auto host = static_cast(user_data); - auto accessibility_bridge = host->accessibility_bridge().lock(); + auto view = host->view(); + if (!view) { + return; + } + + auto accessibility_bridge = view->accessibility_bridge().lock(); if (!accessibility_bridge) { return; } @@ -704,15 +709,6 @@ void FlutterWindowsEngine::OnPreEngineRestart() { } } -gfx::NativeViewAccessible FlutterWindowsEngine::GetNativeViewAccessible() { - auto bridge = accessibility_bridge().lock(); - if (!bridge) { - return nullptr; - } - - return bridge->GetChildOfAXFragmentRoot(); -} - std::string FlutterWindowsEngine::GetExecutableName() const { std::pair result = fml::paths::GetExecutablePath(); if (result.first) { @@ -792,11 +788,6 @@ void FlutterWindowsEngine::OnQuit(std::optional hwnd, lifecycle_manager_->Quit(hwnd, wparam, lparam, exit_code); } -std::weak_ptr -FlutterWindowsEngine::accessibility_bridge() { - return view_->accessibility_bridge(); -} - void FlutterWindowsEngine::OnDwmCompositionChanged() { view_->OnDwmCompositionChanged(); } diff --git a/shell/platform/windows/flutter_windows_engine.h b/shell/platform/windows/flutter_windows_engine.h index 29a904d3506b4..3e5a7343287b6 100644 --- a/shell/platform/windows/flutter_windows_engine.h +++ b/shell/platform/windows/flutter_windows_engine.h @@ -141,9 +141,6 @@ class FlutterWindowsEngine { // rendering using software instead of OpenGL. AngleSurfaceManager* surface_manager() { return surface_manager_.get(); } - // Return the AccessibilityBridgeWindows for this engine's view. - std::weak_ptr accessibility_bridge(); - WindowProcDelegateManager* window_proc_delegate_manager() { return window_proc_delegate_manager_.get(); } @@ -227,10 +224,6 @@ class FlutterWindowsEngine { // Returns true if the high contrast feature is enabled. bool high_contrast_enabled() const { return high_contrast_enabled_; } - // Returns the native accessibility root node, or nullptr if one does not - // exist. - gfx::NativeViewAccessible GetNativeViewAccessible(); - // Register a root isolate create callback. // // The root isolate create callback is invoked at creation of the root Dart diff --git a/shell/platform/windows/flutter_windows_view.cc b/shell/platform/windows/flutter_windows_view.cc index 4107546669a1e..131cd2a52a82c 100644 --- a/shell/platform/windows/flutter_windows_view.cc +++ b/shell/platform/windows/flutter_windows_view.cc @@ -253,7 +253,11 @@ void FlutterWindowsView::OnUpdateSemanticsEnabled(bool enabled) { } gfx::NativeViewAccessible FlutterWindowsView::GetNativeViewAccessible() { - return engine_->GetNativeViewAccessible(); + if (!accessibility_bridge_) { + return nullptr; + } + + return accessibility_bridge_->GetChildOfAXFragmentRoot(); } void FlutterWindowsView::OnCursorRectUpdated(const Rect& rect) { @@ -639,7 +643,7 @@ void FlutterWindowsView::NotifyWinEventWrapper(ui::AXPlatformNodeWin* node, } ui::AXFragmentRootDelegateWin* FlutterWindowsView::GetAxFragmentRootDelegate() { - return engine_->accessibility_bridge().lock().get(); + return accessibility_bridge_.get(); } ui::AXPlatformNodeWin* FlutterWindowsView::AlertNode() const { diff --git a/shell/platform/windows/flutter_windows_view_unittests.cc b/shell/platform/windows/flutter_windows_view_unittests.cc index 2d5dfd71409d1..099ad22a67959 100644 --- a/shell/platform/windows/flutter_windows_view_unittests.cc +++ b/shell/platform/windows/flutter_windows_view_unittests.cc @@ -212,7 +212,7 @@ TEST(FlutterWindowsViewTest, AddSemanticsNodeUpdate) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); // Add root node. @@ -311,7 +311,7 @@ TEST(FlutterWindowsViewTest, AddSemanticsNodeUpdateWithChildren) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); // Add root node. @@ -509,7 +509,7 @@ TEST(FlutterWindowsViewTest, NonZeroSemanticsRoot) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); // Add root node. @@ -641,7 +641,7 @@ TEST(FlutterWindowsViewTest, AccessibilityHitTesting) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); // Add root node at origin. Size 500x500. @@ -802,7 +802,7 @@ TEST(FlutterWindowsViewTest, CheckboxNativeState) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); FlutterSemanticsNode2 root{sizeof(FlutterSemanticsNode2), 0}; @@ -948,7 +948,7 @@ TEST(FlutterWindowsViewTest, SwitchNativeState) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); FlutterSemanticsNode2 root{sizeof(FlutterSemanticsNode2), 0}; @@ -1065,7 +1065,7 @@ TEST(FlutterWindowsViewTest, TooltipNodeData) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); FlutterSemanticsNode2 root{sizeof(FlutterSemanticsNode2), 0}; From 26dca3cc87d2a9ccb84596b01d6f1e9a087c5fe5 Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Mon, 17 Jul 2023 15:27:11 -0700 Subject: [PATCH 107/211] Revert "Roll Clang from 6d667d4b261e to ebd0b8a0472b" (#43749) Reverts flutter/engine#43673 Reverting for b/291462180 --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 0f41cf80d3ca8..7b2aa191ce366 100644 --- a/DEPS +++ b/DEPS @@ -39,7 +39,7 @@ vars = { # The list of revisions for these tools comes from Fuchsia, here: # https://fuchsia.googlesource.com/integration/+/HEAD/toolchain # If there are problems with the toolchain, contact fuchsia-toolchain@. - 'clang_version': 'git_revision:ebd0b8a0472b865b7eb6e1a32af97ae31d829033', + 'clang_version': 'git_revision:6d667d4b261e81f325756fdfd5bb43b3b3d2451d', # The goma version and the clang version can be tightly coupled. If goma # stops working on a clang roll, this may need to be updated using the value From 208bc7100230c01733640a2b88c203754473f44f Mon Sep 17 00:00:00 2001 From: Brian Osman Date: Mon, 17 Jul 2023 18:48:14 -0400 Subject: [PATCH 108/211] Fix drawVertices documentation (#43747) Update the blend mode section of the documentation to specify the correct blend modes. Fixes https://github.com/flutter/flutter/issues/130747 --- lib/ui/painting.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 62e4233a11768..238dcd5047caf 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -5442,8 +5442,8 @@ abstract class Canvas { /// specified in the `vertices` using the `blendMode` parameter. For the /// purposes of this blending, the colors from the `paint` parameter are /// considered the source, and the colors from the `vertices` are considered - /// the destination. [BlendMode.dstOver] ignores the `paint` and uses only the - /// colors of the `vertices`; [BlendMode.srcOver] ignores the colors of the + /// the destination. [BlendMode.dst] ignores the `paint` and uses only the + /// colors of the `vertices`; [BlendMode.src] ignores the colors of the /// `vertices` and uses only the colors in the `paint`. /// /// All parameters must not be null. From 0e4f12f9dd828b5a742704583de15ccfab3642cc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 17 Jul 2023 20:16:23 -0400 Subject: [PATCH 109/211] Roll Dart SDK from 78c9ac730629 to 32bc5d654e92 (1 revision) (#43751) https://dart.googlesource.com/sdk.git/+log/78c9ac730629..32bc5d654e92 2023-07-17 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-320.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7b2aa191ce366..a92eb8b6f5a56 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '78c9ac730629bc35e62491940049a233be0eb848', + 'dart_revision': '32bc5d654e929b03fda444d3375bf5db38f5a85b', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index cfffe2ef02658..4dcaa886a9ec4 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: d47bee3faca906ba1fa0dfe3801b7d57 +Signature: a02aa156848e7ed14e341fd055e2ac2a ==================================================================================================== LIBRARY: dart From 5aea79c343d2c6301d7abb0de576e34e2a4c90ab Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Mon, 17 Jul 2023 18:57:08 -0700 Subject: [PATCH 110/211] Add a GN flag to set the Dart VM's optimization level (#43743) And set the level to `-Oz` for iOS and Android. --- tools/gn | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tools/gn b/tools/gn index 33908609e5c16..38f41f69e843d 100755 --- a/tools/gn +++ b/tools/gn @@ -399,6 +399,11 @@ def to_gn_args(args): gn_args['dart_debug'] = True gn_args['dart_debug_optimization_level'] = '0' + if args.dart_optimization_level: + gn_args['dart_default_optimization_level'] = args.dart_optimization_level + elif gn_args['target_os'] in ['android', 'ios']: + gn_args['dart_default_optimization_level'] = 'z' + gn_args['flutter_use_fontconfig'] = args.enable_fontconfig gn_args['dart_component_kind' ] = 'static_library' # Always link Dart in statically. @@ -784,6 +789,12 @@ def parse_args(args): 'VM making it easier to step through VM code in the debugger.' ) + parser.add_argument( + '--dart-optimization-level', + type=str, + help='The default optimization level for the Dart VM runtime.', + ) + parser.add_argument( '--target-os', type=str, From 11885c86946514dd4d280ad5dfd246f20bb81e7f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 00:02:01 -0400 Subject: [PATCH 111/211] Roll Dart SDK from 32bc5d654e92 to 979375f92109 (1 revision) (#43753) https://dart.googlesource.com/sdk.git/+log/32bc5d654e92..979375f92109 2023-07-18 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-321.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 10 +++++----- ci/licenses_golden/licenses_dart | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/DEPS b/DEPS index a92eb8b6f5a56..13f2eaa3eb1cd 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '32bc5d654e929b03fda444d3375bf5db38f5a85b', + 'dart_revision': '979375f92109fc71282ca6b1ac983b223eebf520', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -371,7 +371,7 @@ deps = { Var('dart_git') + '/dart_style.git@2956b1a705953f880a5dae9d3a0969df0fc45e99', 'src/third_party/dart/third_party/pkg/dartdoc': - Var('dart_git') + '/dartdoc.git@d716fa363b36d4ae54fe236501dc2d6689193223', + Var('dart_git') + '/dartdoc.git@06d72882b1d3889a8a41992dbe09d4d97a14d299', 'src/third_party/dart/third_party/pkg/ffi': Var('dart_git') + '/ffi.git@f01dfca0b3c9a63155bfb86aae12be982571a860', @@ -404,7 +404,7 @@ deps = { Var('dart_git') + '/json_rpc_2.git@509f71eef90ec5afb5486b69dab7fed97b9f1eef', 'src/third_party/dart/third_party/pkg/leak_tracker': - Var('dart_git') + '/leak_tracker.git@56752316847e0ddd023650d35a9c7a5da1581d96', + Var('dart_git') + '/leak_tracker.git@515612e0f7b5e2477a82341a302814ef2647ed6e', 'src/third_party/dart/third_party/pkg/linter': Var('dart_git') + '/linter.git@aed089e45c35221ce2b82f3757132031f0344b8b', @@ -422,10 +422,10 @@ deps = { Var('dart_git') + '/mime.git@bdb66bdd354156280bddc30e2d322a4ad355f671', 'src/third_party/dart/third_party/pkg/mockito': - Var('dart_git') + '/mockito.git@ffbbb4ce8057fc5f793cc3e2fd635f0903fee3a3', + Var('dart_git') + '/mockito.git@afa20a80ef3147845fc78c80ace9d66f0ceb0453', 'src/third_party/dart/third_party/pkg/native': - Var('dart_git') + '/native.git@acad39612a2575ecc46c80ffad52157d7b8baae4', + Var('dart_git') + '/native.git@7c474e1f935c134d2e1a4f5e54593e6d63a674ed', 'src/third_party/dart/third_party/pkg/package_config': Var('dart_git') + '/package_config.git@be0c4411cb7607abe3fd531c9653b0ba53c87c0f', diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index 4dcaa886a9ec4..0188f6777dfc3 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: a02aa156848e7ed14e341fd055e2ac2a +Signature: 9706a5ebdd80fb491297356740b6d77e ==================================================================================================== LIBRARY: dart From 11730a490daa3c96b99968a1c2e892f7f2c49e4e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 00:16:37 -0400 Subject: [PATCH 112/211] Roll Skia from f2a4222bb72e to 071d5897eb8a (1 revision) (#43754) https://skia.googlesource.com/skia.git/+log/f2a4222bb72e..071d5897eb8a 2023-07-18 nigeltao@google.com SkWuffsCodec: add "Roll third_party/wuffs" workaround If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 13f2eaa3eb1cd..1153d35b86b04 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'f2a4222bb72e7a4bfd11f865b30ada7752ec383a', + 'skia_revision': '071d5897eb8abb990153d8f3346548b16187fbe6', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ed291a76378e4..1c0e3e6a10b96 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 23f16e909e48918e0b2c2c2f2a08ca70 +Signature: f8352ad17aa6052a844017cdff9d5ec5 ==================================================================================================== LIBRARY: etc1 From 96fec48eed00e90dca6f52bc8666d219b0cf545f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 00:52:46 -0400 Subject: [PATCH 113/211] Roll Fuchsia Mac SDK from jtvD_HgQVBqadF3jX... to _CIP-1iUTmGCbCDZ5... (#43755) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 1153d35b86b04..ffdf2f8048d3a 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'jtvD_HgQVBqadF3jXnPpEmHqe25HQIpLG8fS4CBsD_MC' + 'version': '_CIP-1iUTmGCbCDZ50br0bLzTWEMTtTBH55gpi2EcQgC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From 2ed74bb5107709b19c551a069efcfef9fbd2a4f6 Mon Sep 17 00:00:00 2001 From: Jia Hao Date: Tue, 18 Jul 2023 12:52:48 +0800 Subject: [PATCH 114/211] Revert "Log dlopen errors in opt builds (#41477)" (#43677) This reverts commit 321f8015b9c2f9d47585647ce036cc8743966d27. This didn't seem to help with debugging b/276657840. Fixes https://github.com/flutter/flutter/issues/125523. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- fml/platform/posix/native_library_posix.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/fml/platform/posix/native_library_posix.cc b/fml/platform/posix/native_library_posix.cc index 5e595c548725a..43406bc21b5e7 100644 --- a/fml/platform/posix/native_library_posix.cc +++ b/fml/platform/posix/native_library_posix.cc @@ -13,10 +13,8 @@ NativeLibrary::NativeLibrary(const char* path) { ::dlerror(); handle_ = ::dlopen(path, RTLD_NOW); if (handle_ == nullptr) { - // TODO(jiahaog): Use FML_DLOG: - // https://github.com/flutter/flutter/issues/125523 - FML_LOG(ERROR) << "Could not open library '" << path << "' due to error '" - << ::dlerror() << "'."; + FML_DLOG(ERROR) << "Could not open library '" << path << "' due to error '" + << ::dlerror() << "'."; } } From 548e7eede0e881162e06fc9ea6f99e6de1c0b4f0 Mon Sep 17 00:00:00 2001 From: Jia Hao Date: Tue, 18 Jul 2023 12:54:01 +0800 Subject: [PATCH 115/211] Minor fixes for C++20 compatibility (#43674) Fixes the following errors when building with a C++20 toolchain. I don't really know C++ that well so any pointers would be appreciated. For the change to the lambda, we can't follow the recommendation to capture `*this` explicitly because that wouldn't compile under C++17. This PR changes the semantics slightly to capture `surface_` by reference, which might be still okay? For b/289776142 ``` error: implicit capture of 'this' with a capture default of '=' is deprecated [-Werror,-Wdeprecated-this-capture] 93 | if (surface_) { | ^ note: add an explicit capture of 'this' to capture '*this' by reference 91 | raster_thread_merger_->SetMergeUnmergeCallback([=]() { | ^ | , this ``` ``` error: bitwise operation between different enumeration types ('CGImageAlphaInfo' and '(unnamed enum at third_party/apple_sdks/xcode_14_2/iphonesimulator/System/Library/Frameworks/CoreGraphics.framework/Headers/CGImage.h:53:9)') is deprecated [-Werror,-Wdeprecated-anon-enum-enum-conversion] 159 | static_cast(kCGImageAlphaPremultipliedLast | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 160 | kCGBitmapByteOrder32Big), // CGBitmapInfo bitmapInfo | ~~~~~~~~~~~~~~~~~~~~~~~ ``` --- shell/common/rasterizer.cc | 2 +- .../darwin/ios/framework/Source/FlutterView.mm | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index e3daa2d7cabda..07de96e39f7f3 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -88,7 +88,7 @@ void Rasterizer::Setup(std::unique_ptr surface) { delegate_.GetParentRasterThreadMerger(), platform_id, gpu_id); } if (raster_thread_merger_) { - raster_thread_merger_->SetMergeUnmergeCallback([=]() { + raster_thread_merger_->SetMergeUnmergeCallback([this]() { // Clear the GL context after the thread configuration has changed. if (surface_) { surface_->ClearRenderContext(); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index 32534da9df215..daef8b2ab30d3 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -156,12 +156,13 @@ - (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context { 32, // size_t bitsPerPixel, 4 * screenshot.frame_size.width(), // size_t bytesPerRow colorspace, // CGColorSpaceRef space - static_cast(kCGImageAlphaPremultipliedLast | - kCGBitmapByteOrder32Big), // CGBitmapInfo bitmapInfo - image_data_provider, // CGDataProviderRef provider - nullptr, // const CGFloat* decode - false, // bool shouldInterpolate - kCGRenderingIntentDefault // CGColorRenderingIntent intent + static_cast( + static_cast(kCGImageAlphaPremultipliedLast) | + static_cast(kCGBitmapByteOrder32Big)), // CGBitmapInfo bitmapInfo + image_data_provider, // CGDataProviderRef provider + nullptr, // const CGFloat* decode + false, // bool shouldInterpolate + kCGRenderingIntentDefault // CGColorRenderingIntent intent )); const CGRect frame_rect = From 9d8302bb44dfcad3ba9f50b7e5830765ccbd83ae Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 00:57:15 -0400 Subject: [PATCH 116/211] Roll Fuchsia Linux SDK from WZt3P7Fm3_GUvAaDv... to ixKM7wyMrqmPDaQ11... (#43756) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/excluded_files | 18 ++++ ci/licenses_golden/licenses_fuchsia | 155 +++++++++++++++++++++++++++- 3 files changed, 173 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ffdf2f8048d3a..01b4660d4fe43 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'WZt3P7Fm3_GUvAaDvmnYWul_8lnAYZ6MB5ZCdcp5VhsC' + 'version': 'ixKM7wyMrqmPDaQ1116iI_iWW_tr97Vb1gGiPG1BmLAC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index abf721a49d9c2..c8e39df762420 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -621,7 +621,22 @@ ../../../fuchsia/sdk/linux/pkg/async/meta.json ../../../fuchsia/sdk/linux/pkg/component_incoming_cpp/meta.json ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/meta.json +../../../fuchsia/sdk/linux/pkg/driver_component_cpp/meta.json ../../../fuchsia/sdk/linux/pkg/driver_devfs_cpp/meta.json +../../../fuchsia/sdk/linux/pkg/driver_incoming_cpp/meta.json +../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/meta.json +../../../fuchsia/sdk/linux/pkg/driver_outgoing_cpp/meta.json +../../../fuchsia/sdk/linux/pkg/driver_runtime/meta.json +../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/meta.json +../../../fuchsia/sdk/linux/pkg/driver_runtime_env/meta.json +../../../fuchsia/sdk/linux/pkg/driver_runtime_env_cpp/meta.json +../../../fuchsia/sdk/linux/pkg/driver_runtime_shared_lib/meta.json +../../../fuchsia/sdk/linux/pkg/driver_runtime_testing/meta.json +../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/include/lib/driver/runtime/testing +../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/meta.json +../../../fuchsia/sdk/linux/pkg/driver_symbols/meta.json +../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/include/lib/driver/testing +../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/meta.json ../../../fuchsia/sdk/linux/pkg/fdio/meta.json ../../../fuchsia/sdk/linux/pkg/fidl/meta.json ../../../fuchsia/sdk/linux/pkg/fidl_base/meta.json @@ -633,6 +648,8 @@ ../../../fuchsia/sdk/linux/pkg/fidl_cpp_sync/meta.json ../../../fuchsia/sdk/linux/pkg/fidl_cpp_v2/meta.json ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/meta.json +../../../fuchsia/sdk/linux/pkg/fidl_driver/meta.json +../../../fuchsia/sdk/linux/pkg/fidl_driver_transport/meta.json ../../../fuchsia/sdk/linux/pkg/fit-promise/meta.json ../../../fuchsia/sdk/linux/pkg/fit/meta.json ../../../fuchsia/sdk/linux/pkg/images_cpp/meta.json @@ -648,6 +665,7 @@ ../../../fuchsia/sdk/linux/pkg/stdcompat/meta.json ../../../fuchsia/sdk/linux/pkg/svc/meta.json ../../../fuchsia/sdk/linux/pkg/sync/meta.json +../../../fuchsia/sdk/linux/pkg/sync_cpp/meta.json ../../../fuchsia/sdk/linux/pkg/sys/testing ../../../fuchsia/sdk/linux/pkg/sys_component_cpp_testing/include/lib/sys/component/cpp/testing ../../../fuchsia/sdk/linux/pkg/sys_component_cpp_testing/meta.json diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 172479dfa1f9c..e57b529a9a864 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 0cc3132ae573bc5f6659012dc93380f9 +Signature: c85f7cff8f2c967c63e1b38bcd3d2aa5 ==================================================================================================== LIBRARY: fuchsia_sdk @@ -7,6 +7,7 @@ TYPE: LicenseType.apache FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libsvc.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libsyslog.so @@ -15,6 +16,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libtrace-provider-so.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libmagma_client.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsvc.so @@ -182,6 +184,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libsvc.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libsyslog.so @@ -190,6 +193,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libtrace-provider-so.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libmagma_client.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsvc.so @@ -356,6 +360,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/data/config/symbol_index/config.json FILE: ../../../fuchsia/sdk/linux/pkg/async-default/async-default.ifs +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_shared_lib/driver_runtime.ifs FILE: ../../../fuchsia/sdk/linux/pkg/fdio/fdio.ifs FILE: ../../../fuchsia/sdk/linux/pkg/inspect/inspect.json FILE: ../../../fuchsia/sdk/linux/pkg/svc/svc.ifs @@ -1573,6 +1578,7 @@ TYPE: LicenseType.bsd FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libsvc.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libsyslog.so @@ -1581,6 +1587,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libtrace-provider-so.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libmagma_client.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsvc.so @@ -1748,6 +1755,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libsvc.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libsyslog.so @@ -1756,6 +1764,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libtrace-provider-so.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libmagma_client.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsvc.so @@ -1922,6 +1931,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/data/config/symbol_index/config.json FILE: ../../../fuchsia/sdk/linux/pkg/async-default/async-default.ifs +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_shared_lib/driver_runtime.ifs FILE: ../../../fuchsia/sdk/linux/pkg/fdio/fdio.ifs FILE: ../../../fuchsia/sdk/linux/pkg/inspect/inspect.json FILE: ../../../fuchsia/sdk/linux/pkg/svc/svc.ifs @@ -2708,6 +2718,13 @@ ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.ieee80211/status_code.fidl ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.product.deprecatedclient/wlan_deprecated_client.fidl + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.product.deprecatedconfiguration/wlan_deprecated_configuration.fidl + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/zx/zx_common.fidl + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/start_args.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/symbols.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_incoming_cpp/include/lib/driver/incoming/cpp/namespace.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_incoming_cpp/namespace.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/logger.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/logger.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_symbols/include/lib/driver/symbols/symbols.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_base/handle_close_many.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_base/include/lib/fidl/cpp/internal/bitset.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_base/include/lib/fidl/cpp/internal/natural_types_header.h + ../../../fuchsia/sdk/linux/LICENSE @@ -2870,6 +2887,13 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.ieee80211/status_code.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.product.deprecatedclient/wlan_deprecated_client.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.product.deprecatedconfiguration/wlan_deprecated_configuration.fidl FILE: ../../../fuchsia/sdk/linux/fidl/zx/zx_common.fidl +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/start_args.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/symbols.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_incoming_cpp/include/lib/driver/incoming/cpp/namespace.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_incoming_cpp/namespace.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/logger.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/logger.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_symbols/include/lib/driver/symbols/symbols.h FILE: ../../../fuchsia/sdk/linux/pkg/fidl_base/handle_close_many.cc FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_base/include/lib/fidl/cpp/internal/bitset.h FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_base/include/lib/fidl/cpp/internal/natural_types_header.h @@ -3005,6 +3029,21 @@ ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.common/wlan_common.fidl + . ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.ieee80211/constants.fidl + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.ieee80211/rsn.fidl + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.policy/types.fidl + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/internal/logger_internal.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/structured_logger.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/arena.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/channel.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/channel_read.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/dispatcher.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/handle.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/channel_read.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/arena.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/channel.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/channel_read.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/dispatcher.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/unowned.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_env/include/lib/fdf/env.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_base/wire_format_metadata.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_base_v2/include/lib/fidl/cpp/internal/natural_types.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_base_v2/include/lib/fidl/cpp/natural_types.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3031,6 +3070,10 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/message_storage.cc + ../../ ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/status.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/transport.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/transport_channel.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/wire_messaging.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/wire_types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver_transport/include/lib/fidl_driver/cpp/transport.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver_transport/transport.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/scenic_cpp/include/lib/ui/scenic/cpp/view_creation_tokens.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/scenic_cpp/include/lib/ui/scenic/cpp/view_identity.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/scenic_cpp/view_creation_tokens.cc + ../../../fuchsia/sdk/linux/LICENSE @@ -3050,6 +3093,7 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/stdcompat/include/lib/stdcompat/internal/ ORIGIN: ../../../fuchsia/sdk/linux/pkg/stdcompat/include/lib/stdcompat/iterator.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/stdcompat/include/lib/stdcompat/span.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/stdcompat/include/lib/stdcompat/tuple.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/sync_cpp/include/lib/sync/cpp/completion.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/sys_component_cpp_testing/internal/errors.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/sys_component_cpp_testing/internal/local_component_runner.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/sys_component_cpp_testing/internal/realm.cc + ../../../fuchsia/sdk/linux/LICENSE @@ -3132,6 +3176,21 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.common/wlan_common.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.ieee80211/constants.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.ieee80211/rsn.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.policy/types.fidl +FILE: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/internal/logger_internal.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/structured_logger.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/arena.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/channel.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/channel_read.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/dispatcher.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/handle.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/types.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/channel_read.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/arena.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/channel.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/channel_read.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/dispatcher.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/unowned.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_env/include/lib/fdf/env.h FILE: ../../../fuchsia/sdk/linux/pkg/fidl_base/wire_format_metadata.cc FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_base_v2/include/lib/fidl/cpp/internal/natural_types.h FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_base_v2/include/lib/fidl/cpp/natural_types.h @@ -3158,6 +3217,10 @@ FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/message_storage.cc FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/status.cc FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/transport.cc FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/transport_channel.cc +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/wire_messaging.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/wire_types.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver_transport/include/lib/fidl_driver/cpp/transport.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver_transport/transport.cc FILE: ../../../fuchsia/sdk/linux/pkg/scenic_cpp/include/lib/ui/scenic/cpp/view_creation_tokens.h FILE: ../../../fuchsia/sdk/linux/pkg/scenic_cpp/include/lib/ui/scenic/cpp/view_identity.h FILE: ../../../fuchsia/sdk/linux/pkg/scenic_cpp/view_creation_tokens.cc @@ -3177,6 +3240,7 @@ FILE: ../../../fuchsia/sdk/linux/pkg/stdcompat/include/lib/stdcompat/internal/ty FILE: ../../../fuchsia/sdk/linux/pkg/stdcompat/include/lib/stdcompat/iterator.h FILE: ../../../fuchsia/sdk/linux/pkg/stdcompat/include/lib/stdcompat/span.h FILE: ../../../fuchsia/sdk/linux/pkg/stdcompat/include/lib/stdcompat/tuple.h +FILE: ../../../fuchsia/sdk/linux/pkg/sync_cpp/include/lib/sync/cpp/completion.h FILE: ../../../fuchsia/sdk/linux/pkg/sys_component_cpp_testing/internal/errors.cc FILE: ../../../fuchsia/sdk/linux/pkg/sys_component_cpp_testing/internal/local_component_runner.cc FILE: ../../../fuchsia/sdk/linux/pkg/sys_component_cpp_testing/internal/realm.cc @@ -3352,6 +3416,20 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/compon ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/component/outgoing/cpp/outgoing_directory.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/component/outgoing/cpp/structured_config.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/outgoing_directory.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/composite_node_spec.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/driver_base.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/node_add_args.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/node_add_args.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_outgoing_cpp/include/lib/driver/outgoing/cpp/handlers.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_outgoing_cpp/include/lib/driver/outgoing/cpp/outgoing_directory.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_outgoing_cpp/outgoing_directory.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/token.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/arena.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/protocol.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/protocol.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_env_cpp/env.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_env_cpp/include/lib/fdf/cpp/env.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing/include/lib/fdf/testing.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_base/include/lib/fidl/cpp/transaction_header.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_base/include/lib/fidl/cpp/transport_err.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_base/include/lib/fidl/cpp/wire_format_metadata.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3411,6 +3489,14 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/wire_decoder.cc + ../../../ ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/wire_encoder.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/wire_messaging.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/wire_types.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/internal/server_details.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/internal/wire_client_details.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/server.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/sync_call.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/unknown_interactions.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/wire_client.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/wire_messaging_declarations.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/fidl_driver/unknown_interactions.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fit/include/lib/fit/inline_any.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fit/include/lib/fit/internal/inline_any.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/input_report_reader/reader.cc + ../../../fuchsia/sdk/linux/LICENSE @@ -3575,6 +3661,20 @@ FILE: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/componen FILE: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/component/outgoing/cpp/outgoing_directory.h FILE: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/component/outgoing/cpp/structured_config.h FILE: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/outgoing_directory.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/composite_node_spec.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/driver_base.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/node_add_args.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/node_add_args.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_outgoing_cpp/include/lib/driver/outgoing/cpp/handlers.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_outgoing_cpp/include/lib/driver/outgoing/cpp/outgoing_directory.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_outgoing_cpp/outgoing_directory.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/token.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/arena.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/include/lib/fdf/cpp/protocol.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_cpp/protocol.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_env_cpp/env.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_env_cpp/include/lib/fdf/cpp/env.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing/include/lib/fdf/testing.h FILE: ../../../fuchsia/sdk/linux/pkg/fidl_base/include/lib/fidl/cpp/transaction_header.h FILE: ../../../fuchsia/sdk/linux/pkg/fidl_base/include/lib/fidl/cpp/transport_err.h FILE: ../../../fuchsia/sdk/linux/pkg/fidl_base/include/lib/fidl/cpp/wire_format_metadata.h @@ -3634,6 +3734,14 @@ FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/wire_decoder.cc FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/wire_encoder.cc FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/wire_messaging.cc FILE: ../../../fuchsia/sdk/linux/pkg/fidl_cpp_wire/wire_types.cc +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/internal/server_details.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/internal/wire_client_details.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/server.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/sync_call.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/unknown_interactions.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/wire_client.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/include/lib/fidl_driver/cpp/wire_messaging_declarations.h +FILE: ../../../fuchsia/sdk/linux/pkg/fidl_driver/unknown_interactions.cc FILE: ../../../fuchsia/sdk/linux/pkg/fit/include/lib/fit/inline_any.h FILE: ../../../fuchsia/sdk/linux/pkg/fit/include/lib/fit/internal/inline_any.h FILE: ../../../fuchsia/sdk/linux/pkg/input_report_reader/reader.cc @@ -3721,8 +3829,28 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_incoming_cpp/internal.cc + ../. ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_incoming_cpp/protocol.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/globals.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/component/outgoing/cpp/globals.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/driver_base.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/driver_export.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/basic_factory.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/lifecycle.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/prepare_stop_completer.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/start_completer.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/internal/lifecycle.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/prepare_stop_completer.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/start_completer.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_devfs_cpp/include/lib/driver/devfs/cpp/connector.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/default_dispatcher_setting.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/dispatcher.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/test_dispatcher_builder.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/wait_for.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/sync_helpers.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/driver_lifecycle.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/driver_runtime.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/environment_variables.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/test_environment.cc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/test_node.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/inspect/offer.shard.cml + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/sync_cpp/include/lib/sync/cpp/mutex.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/sys_service_cpp/service_handler.cc + ../../../fuchsia/sdk/linux/LICENSE TYPE: LicenseType.bsd FILE: ../../../fuchsia/sdk/linux/dart/sl4f/lib/src/flatland_example.dart @@ -3756,8 +3884,28 @@ FILE: ../../../fuchsia/sdk/linux/pkg/component_incoming_cpp/internal.cc FILE: ../../../fuchsia/sdk/linux/pkg/component_incoming_cpp/protocol.cc FILE: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/globals.cc FILE: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/component/outgoing/cpp/globals.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/driver_base.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/driver_export.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/basic_factory.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/lifecycle.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/prepare_stop_completer.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/start_completer.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/internal/lifecycle.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/prepare_stop_completer.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/start_completer.cc FILE: ../../../fuchsia/sdk/linux/pkg/driver_devfs_cpp/include/lib/driver/devfs/cpp/connector.h +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/default_dispatcher_setting.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/dispatcher.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/test_dispatcher_builder.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/wait_for.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/sync_helpers.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/driver_lifecycle.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/driver_runtime.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/environment_variables.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/test_environment.cc +FILE: ../../../fuchsia/sdk/linux/pkg/driver_testing_cpp/test_node.cc FILE: ../../../fuchsia/sdk/linux/pkg/inspect/offer.shard.cml +FILE: ../../../fuchsia/sdk/linux/pkg/sync_cpp/include/lib/sync/cpp/mutex.h FILE: ../../../fuchsia/sdk/linux/pkg/sys_service_cpp/service_handler.cc ---------------------------------------------------------------------------------------------------- Copyright 2023 The Fuchsia Authors. All rights reserved. @@ -3793,6 +3941,7 @@ TYPE: LicenseType.mit FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libsvc.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libsyslog.so @@ -3801,6 +3950,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libtrace-provider-so.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libmagma_client.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsvc.so @@ -3968,6 +4118,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libsvc.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libsyslog.so @@ -3976,6 +4127,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libtrace-provider-so.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libmagma_client.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsvc.so @@ -4142,6 +4294,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/data/config/symbol_index/config.json FILE: ../../../fuchsia/sdk/linux/pkg/async-default/async-default.ifs +FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_shared_lib/driver_runtime.ifs FILE: ../../../fuchsia/sdk/linux/pkg/fdio/fdio.ifs FILE: ../../../fuchsia/sdk/linux/pkg/inspect/inspect.json FILE: ../../../fuchsia/sdk/linux/pkg/svc/svc.ifs From b2e13886be328818bc6de9bbe7b7776d4c709d40 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 01:25:03 -0400 Subject: [PATCH 117/211] Roll Skia from 071d5897eb8a to 48a44e2cda18 (1 revision) (#43757) https://skia.googlesource.com/skia.git/+log/071d5897eb8a..48a44e2cda18 2023-07-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn from 2060ca2e3d59 to 937670a0ed00 (13 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 01b4660d4fe43..a05862ceaa1d5 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '071d5897eb8abb990153d8f3346548b16187fbe6', + 'skia_revision': '48a44e2cda18e8263162d74a78b6467698b20b71', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From ea9554e20802054e3b6a8b23508084dc4bbe1f1b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 02:14:20 -0400 Subject: [PATCH 118/211] Roll Skia from 48a44e2cda18 to 31be5646930b (3 revisions) (#43758) https://skia.googlesource.com/skia.git/+log/48a44e2cda18..31be5646930b 2023-07-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from a426452b5463 to cb22d697262b (11 revisions) 2023-07-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from 0733bf3a7728 to fce3c81c4ca7 2023-07-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 59a5e9ba0f61 to 0733bf3a7728 (4 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a05862ceaa1d5..30461596f467d 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '48a44e2cda18e8263162d74a78b6467698b20b71', + 'skia_revision': '31be5646930b541805a306119ecda2435880d96f', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1c0e3e6a10b96..0bf188881484f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f8352ad17aa6052a844017cdff9d5ec5 +Signature: d090ba4711f4dc2c23d7c0653960380d ==================================================================================================== LIBRARY: etc1 From afbd72edf563b5646122229886aafe60be70003a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 06:45:04 +0000 Subject: [PATCH 119/211] Bump actions/setup-python from 4.6.1 to 4.7.0 (#43760) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.6.1 to 4.7.0.
Release notes

Sourced from actions/setup-python's releases.

v4.7.0

In scope of this release, the support for reading python version from pyproject.toml was added (actions/setup-python#669).

      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version-file: pyproject.toml

Besides, it includes such changes as:

New Contributors

Full Changelog: https://github.com/actions/setup-python/compare/v4...v4.7.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-python&package-manager=github_actions&previous-version=4.6.1&new-version=4.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .github/workflows/third_party_scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/third_party_scan.yml b/.github/workflows/third_party_scan.yml index 638799f73e532..42c781359990a 100644 --- a/.github/workflows/third_party_scan.yml +++ b/.github/workflows/third_party_scan.yml @@ -29,7 +29,7 @@ jobs: with: persist-credentials: false - name: "setup python" - uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 + uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 with: python-version: '3.7.7' # install the python version needed - name: "extract and flatten deps" From 82c3283a61f0218f765724107da79d4a0e70e221 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 03:53:36 -0400 Subject: [PATCH 120/211] Roll Dart SDK from 979375f92109 to b83a63e0181a (1 revision) (#43762) https://dart.googlesource.com/sdk.git/+log/979375f92109..b83a63e0181a 2023-07-18 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-322.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 4 ++-- ci/licenses_golden/excluded_files | 1 - ci/licenses_golden/licenses_dart | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 30461596f467d..29962588c36c6 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '979375f92109fc71282ca6b1ac983b223eebf520', + 'dart_revision': 'b83a63e0181aac5edb008e730176e26eb09f8ef7', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -407,7 +407,7 @@ deps = { Var('dart_git') + '/leak_tracker.git@515612e0f7b5e2477a82341a302814ef2647ed6e', 'src/third_party/dart/third_party/pkg/linter': - Var('dart_git') + '/linter.git@aed089e45c35221ce2b82f3757132031f0344b8b', + Var('dart_git') + '/linter.git@b95c56ac43f34005470e2f8f74bab7662d8898fe', 'src/third_party/dart/third_party/pkg/logging': Var('dart_git') + '/logging.git@521498757ed3eeae151c2d4796404e8947baa04c', diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index c8e39df762420..62cb8ba07c3a2 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -1677,7 +1677,6 @@ ../../../third_party/dart/runtime/vm/heap/become_test.cc ../../../third_party/dart/runtime/vm/heap/freelist_test.cc ../../../third_party/dart/runtime/vm/heap/heap_test.cc -../../../third_party/dart/runtime/vm/heap/pages_test.cc ../../../third_party/dart/runtime/vm/heap/safepoint_test.cc ../../../third_party/dart/runtime/vm/heap/weak_table_test.cc ../../../third_party/dart/runtime/vm/instructions_arm64_test.cc diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index 0188f6777dfc3..51e467e384bb3 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: 9706a5ebdd80fb491297356740b6d77e +Signature: ee281eb9eea39635eaf18ffd3268bee4 ==================================================================================================== LIBRARY: dart From d858cb9ee8919d091af20618d5ea1495bae22951 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 05:33:12 -0400 Subject: [PATCH 121/211] Roll Skia from 31be5646930b to a4df72ba04bb (1 revision) (#43763) https://skia.googlesource.com/skia.git/+log/31be5646930b..a4df72ba04bb 2023-07-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 507f67ccff45 to ec2948c5ed1e (13 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 29962588c36c6..dd7bbc6ece577 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '31be5646930b541805a306119ecda2435880d96f', + 'skia_revision': 'a4df72ba04bbb8a209023f48414817edd0be3cdf', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 2cd24feb40a991fee3bb7e408ee8221dc5f1dcad Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 09:40:10 -0400 Subject: [PATCH 122/211] Roll Skia from a4df72ba04bb to 8d3e00a1f25f (1 revision) (#43766) https://skia.googlesource.com/skia.git/+log/a4df72ba04bb..8d3e00a1f25f 2023-07-18 kjlubick@google.com Allow legacy mesh APIs in CPU-only build too If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index dd7bbc6ece577..c16228dad78c1 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'a4df72ba04bbb8a209023f48414817edd0be3cdf', + 'skia_revision': '8d3e00a1f25fbbebe0dafa40fcc13ea9c32b5bec', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0bf188881484f..cb493f58d3ad6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d090ba4711f4dc2c23d7c0653960380d +Signature: e2f5ad095e69798b2a80ff7414eb159e ==================================================================================================== LIBRARY: etc1 From dbb9cd046eef963610fa87b33605214a8a326ad2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 09:59:05 -0400 Subject: [PATCH 123/211] Roll Dart SDK from b83a63e0181a to ec95774043ec (1 revision) (#43767) https://dart.googlesource.com/sdk.git/+log/b83a63e0181a..ec95774043ec 2023-07-18 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-323.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index c16228dad78c1..c4e3426b60ba9 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'b83a63e0181aac5edb008e730176e26eb09f8ef7', + 'dart_revision': 'ec95774043ecef404ea7bd359d7d40f15b6b5508', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 68c9aa6c43225a1b70990ebc091f4e901207cf06 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 10:40:07 -0400 Subject: [PATCH 124/211] Roll Skia from 8d3e00a1f25f to b33cc7da1e23 (1 revision) (#43768) https://skia.googlesource.com/skia.git/+log/8d3e00a1f25f..b33cc7da1e23 2023-07-18 herb@google.com Centralize bounds checking code If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c4e3426b60ba9..e7f12c78993ea 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '8d3e00a1f25fbbebe0dafa40fcc13ea9c32b5bec', + 'skia_revision': 'b33cc7da1e234626af1396613fbf73b995303f59', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cb493f58d3ad6..dd7c0e908064f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e2f5ad095e69798b2a80ff7414eb159e +Signature: 828c2e2a57dad6a4fd3c39f0832fc1f8 ==================================================================================================== LIBRARY: etc1 From e51ddcacf7542c18b6fe638ae391515601c1b52d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 11:17:51 -0400 Subject: [PATCH 125/211] Roll Skia from b33cc7da1e23 to b7103fe086c1 (1 revision) (#43769) https://skia.googlesource.com/skia.git/+log/b33cc7da1e23..b7103fe086c1 2023-07-18 johnstiles@google.com Rename DawnTestContext.cpp to fix libtool warning. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index e7f12c78993ea..cbc5c0ebd1442 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b33cc7da1e234626af1396613fbf73b995303f59', + 'skia_revision': 'b7103fe086c1fb9095e0fe26644d52edd8932135', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From be939685c0a5ca11ba795e77695e6128a471ace7 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 18 Jul 2023 10:21:42 -0700 Subject: [PATCH 126/211] [Impeller] Avoid inserting additional save layers based on clip configuration. (#43759) Fixes https://github.com/flutter/flutter/issues/130775 On the Skia backend, antiAliasWithSaveLayer is the highest fidelity clipping option. In the Impeller backend, there isn't any difference in how we clip, since the stencil buffer is always used. Nevertheless we were still inserting the save layer, which results in an extra offscreen texture and is wasteful. Track if impeller is enabled in the diff/preroll/paint context and avoid inserting a save layer. --- flow/compositor_context.cc | 8 ++-- flow/compositor_context.h | 3 +- flow/diff_context.cc | 6 ++- flow/diff_context.h | 6 ++- flow/layers/clip_rrect_layer_unittests.cc | 45 +++++++++++++++++++++++ flow/layers/clip_shape_layer.h | 15 +++++--- flow/layers/layer.h | 3 ++ flow/layers/layer_tree.cc | 2 + flow/testing/diff_context_test.cc | 6 ++- flow/testing/diff_context_test.h | 3 +- flow/testing/layer_test.h | 6 +++ 11 files changed, 88 insertions(+), 15 deletions(-) diff --git a/flow/compositor_context.cc b/flow/compositor_context.cc index 446cf968f7fe3..2c7593c1625e8 100644 --- a/flow/compositor_context.cc +++ b/flow/compositor_context.cc @@ -13,13 +13,14 @@ namespace flutter { std::optional FrameDamage::ComputeClipRect( flutter::LayerTree& layer_tree, - bool has_raster_cache) { + bool has_raster_cache, + bool impeller_enabled) { if (layer_tree.root_layer()) { PaintRegionMap empty_paint_region_map; DiffContext context(layer_tree.frame_size(), layer_tree.paint_region_map(), prev_layer_tree_ ? prev_layer_tree_->paint_region_map() : empty_paint_region_map, - has_raster_cache); + has_raster_cache, impeller_enabled); context.PushCullRect(SkRect::MakeIWH(layer_tree.frame_size().width(), layer_tree.frame_size().height())); { @@ -121,7 +122,8 @@ RasterStatus CompositorContext::ScopedFrame::Raster( std::optional clip_rect; if (frame_damage) { - clip_rect = frame_damage->ComputeClipRect(layer_tree, !ignore_raster_cache); + clip_rect = frame_damage->ComputeClipRect(layer_tree, !ignore_raster_cache, + !gr_context_); if (aiks_context_ && !ShouldPerformPartialRepaint(clip_rect, layer_tree.frame_size())) { diff --git a/flow/compositor_context.h b/flow/compositor_context.h index 646ca2f9c64c8..30aae4736c928 100644 --- a/flow/compositor_context.h +++ b/flow/compositor_context.h @@ -82,7 +82,8 @@ class FrameDamage { // but the paint region of layer_tree will be calculated so that it can be // used for diffing of subsequent frames. std::optional ComputeClipRect(flutter::LayerTree& layer_tree, - bool has_raster_cache); + bool has_raster_cache, + bool impeller_enabled); // See Damage::frame_damage. std::optional GetFrameDamage() const { diff --git a/flow/diff_context.cc b/flow/diff_context.cc index 160b5c899fa6a..612fe563fa9c6 100644 --- a/flow/diff_context.cc +++ b/flow/diff_context.cc @@ -10,13 +10,15 @@ namespace flutter { DiffContext::DiffContext(SkISize frame_size, PaintRegionMap& this_frame_paint_region_map, const PaintRegionMap& last_frame_paint_region_map, - bool has_raster_cache) + bool has_raster_cache, + bool impeller_enabled) : clip_tracker_(DisplayListMatrixClipTracker(kGiantRect, SkMatrix::I())), rects_(std::make_shared>()), frame_size_(frame_size), this_frame_paint_region_map_(this_frame_paint_region_map), last_frame_paint_region_map_(last_frame_paint_region_map), - has_raster_cache_(has_raster_cache) {} + has_raster_cache_(has_raster_cache), + impeller_enabled_(impeller_enabled) {} void DiffContext::BeginSubtree() { state_stack_.push_back(state_); diff --git a/flow/diff_context.h b/flow/diff_context.h index e273fdb25d935..029fb49f933fc 100644 --- a/flow/diff_context.h +++ b/flow/diff_context.h @@ -46,7 +46,8 @@ class DiffContext { explicit DiffContext(SkISize frame_size, PaintRegionMap& this_frame_paint_region_map, const PaintRegionMap& last_frame_paint_region_map, - bool has_raster_cache); + bool has_raster_cache, + bool impeller_enabled); // Starts a new subtree. void BeginSubtree(); @@ -161,6 +162,8 @@ class DiffContext { // cached. bool has_raster_cache() const { return has_raster_cache_; } + bool impeller_enabled() const { return impeller_enabled_; } + class Statistics { public: // Picture replaced by different picture @@ -245,6 +248,7 @@ class DiffContext { PaintRegionMap& this_frame_paint_region_map_; const PaintRegionMap& last_frame_paint_region_map_; bool has_raster_cache_; + bool impeller_enabled_; void AddDamage(const SkRect& rect); diff --git a/flow/layers/clip_rrect_layer_unittests.cc b/flow/layers/clip_rrect_layer_unittests.cc index 1c3672d7cc616..98d6493ba7bb5 100644 --- a/flow/layers/clip_rrect_layer_unittests.cc +++ b/flow/layers/clip_rrect_layer_unittests.cc @@ -595,6 +595,51 @@ TEST_F(ClipRRectLayerTest, EmptyClipDoesNotCullPlatformView) { EXPECT_EQ(embedder.painted_views(), std::vector({view_id})); } +TEST_F(ClipRRectLayerTest, AntiAliasWithSaveLayerIgnoresSaveLayerImpeller) { + enable_impeller(); + + auto path1 = SkPath().addRect({10, 10, 30, 30}); + auto mock1 = MockLayer::MakeOpacityCompatible(path1); + auto path2 = SkPath().addRect({20, 20, 40, 40}); + auto mock2 = MockLayer::MakeOpacityCompatible(path2); + auto children_bounds = path1.getBounds(); + children_bounds.join(path2.getBounds()); + SkRect clip_rect = SkRect::MakeWH(500, 500); + SkRRect clip_rrect = SkRRect::MakeRectXY(clip_rect, 20, 20); + auto clip_rrect_layer = std::make_shared( + clip_rrect, Clip::antiAliasWithSaveLayer); + clip_rrect_layer->Add(mock1); + clip_rrect_layer->Add(mock2); + + // ClipRectLayer will pass through compatibility from multiple + // non-overlapping compatible children + PrerollContext* context = preroll_context(); + clip_rrect_layer->Preroll(context); + EXPECT_EQ(context->renderable_state_flags, 0); + + DisplayListBuilder expected_builder; + /* OpacityLayer::Paint() */ { + expected_builder.Save(); + { + /* ClipRectLayer::Paint() */ { + expected_builder.Save(); + expected_builder.ClipRRect(clip_rrect, ClipOp::kIntersect, true); + /* child layer1 paint */ { + expected_builder.DrawPath(path1, DlPaint()); + } + /* child layer2 paint */ { // + expected_builder.DrawPath(path2, DlPaint()); + } + // expected_builder.Restore(); + } + } + expected_builder.Restore(); + } + + clip_rrect_layer->Paint(display_list_paint_context()); + EXPECT_TRUE(DisplayListsEQ_Verbose(expected_builder.Build(), display_list())); +} + } // namespace testing } // namespace flutter diff --git a/flow/layers/clip_shape_layer.h b/flow/layers/clip_shape_layer.h index 69c479fe61a23..d33267853e30d 100644 --- a/flow/layers/clip_shape_layer.h +++ b/flow/layers/clip_shape_layer.h @@ -32,7 +32,8 @@ class ClipShapeLayer : public CacheableContainerLayer { context->MarkSubtreeDirty(context->GetOldLayerPaintRegion(old_layer)); } } - if (UsesSaveLayer() && context->has_raster_cache()) { + if (UsesSaveLayer(context->impeller_enabled()) && + context->has_raster_cache()) { context->WillPaintWithIntegralTransform(); } if (context->PushCullRect(clip_shape_bounds())) { @@ -42,7 +43,7 @@ class ClipShapeLayer : public CacheableContainerLayer { } void Preroll(PrerollContext* context) override { - bool uses_save_layer = UsesSaveLayer(); + bool uses_save_layer = UsesSaveLayer(context->impeller_enabled); // We can use the raster_cache for children only when the use_save_layer is // true so if use_save_layer is false we pass the layer_raster_item is @@ -52,7 +53,8 @@ class ClipShapeLayer : public CacheableContainerLayer { context, context->state_stack.transform_3x3()); Layer::AutoPrerollSaveLayerState save = - Layer::AutoPrerollSaveLayerState::Create(context, UsesSaveLayer()); + Layer::AutoPrerollSaveLayerState::Create( + context, UsesSaveLayer(context->impeller_enabled)); auto mutator = context->state_stack.save(); ApplyClip(mutator); @@ -78,7 +80,7 @@ class ClipShapeLayer : public CacheableContainerLayer { auto mutator = context.state_stack.save(); ApplyClip(mutator); - if (!UsesSaveLayer()) { + if (!UsesSaveLayer(context.impeller_enabled)) { PaintChildren(context); return; } @@ -99,7 +101,10 @@ class ClipShapeLayer : public CacheableContainerLayer { PaintChildren(context); } - bool UsesSaveLayer() const { + bool UsesSaveLayer(bool enable_impeller) const { + if (enable_impeller) { + return false; + } return clip_behavior_ == Clip::antiAliasWithSaveLayer; } diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 04a501284bb1d..eaae9d4279a23 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -71,6 +71,8 @@ struct PrerollContext { // presence of a texture layer during Preroll. bool has_texture_layer = false; + bool impeller_enabled = false; + // The list of flags that describe which rendering state attributes // (such as opacity, ColorFilter, ImageFilter) a given layer can // render itself without requiring the parent to perform a protective @@ -117,6 +119,7 @@ struct PaintContext { // only when leaf layer tracing is enabled. LayerSnapshotStore* layer_snapshot_store = nullptr; bool enable_leaf_layer_tracing = false; + bool impeller_enabled = false; impeller::AiksContext* aiks_context; }; diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc index bb7492a83fccd..e8aea74efd78b 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -60,6 +60,7 @@ bool LayerTree::Preroll(CompositorContext::ScopedFrame& frame, .raster_time = frame.context().raster_time(), .ui_time = frame.context().ui_time(), .texture_registry = frame.context().texture_registry(), + .impeller_enabled = !frame.gr_context(), .raster_cached_entries = &raster_cache_items_, // clang-format on }; @@ -139,6 +140,7 @@ void LayerTree::Paint(CompositorContext::ScopedFrame& frame, .raster_cache = cache, .layer_snapshot_store = snapshot_store, .enable_leaf_layer_tracing = enable_leaf_layer_tracing_, + .impeller_enabled = !!frame.aiks_context(), .aiks_context = frame.aiks_context(), // clang-format on }; diff --git a/flow/testing/diff_context_test.cc b/flow/testing/diff_context_test.cc index 20153a0140d5c..5a277b9cccd99 100644 --- a/flow/testing/diff_context_test.cc +++ b/flow/testing/diff_context_test.cc @@ -17,11 +17,13 @@ Damage DiffContextTest::DiffLayerTree(MockLayerTree& layer_tree, const SkIRect& additional_damage, int horizontal_clip_alignment, int vertical_clip_alignment, - bool use_raster_cache) { + bool use_raster_cache, + bool impeller_enabled) { FML_CHECK(layer_tree.size() == old_layer_tree.size()); DiffContext dc(layer_tree.size(), layer_tree.paint_region_map(), - old_layer_tree.paint_region_map(), use_raster_cache); + old_layer_tree.paint_region_map(), use_raster_cache, + impeller_enabled); dc.PushCullRect( SkRect::MakeIWH(layer_tree.size().width(), layer_tree.size().height())); layer_tree.root()->Diff(&dc, old_layer_tree.root()); diff --git a/flow/testing/diff_context_test.h b/flow/testing/diff_context_test.h index 297a2bdf5f7f8..4fb3baafbc7d7 100644 --- a/flow/testing/diff_context_test.h +++ b/flow/testing/diff_context_test.h @@ -41,7 +41,8 @@ class DiffContextTest : public LayerTest { const SkIRect& additional_damage = SkIRect::MakeEmpty(), int horizontal_clip_alignment = 0, int vertical_alignment = 0, - bool use_raster_cache = true); + bool use_raster_cache = true, + bool impeller_enabled = false); // Create display list consisting of filled rect with given color; Being able // to specify different color is useful to test deep comparison of pictures diff --git a/flow/testing/layer_test.h b/flow/testing/layer_test.h index e74ef6fcdda05..178c307426c19 100644 --- a/flow/testing/layer_test.h +++ b/flow/testing/layer_test.h @@ -195,6 +195,12 @@ class LayerTestBase : public CanvasTestBase { paint_context_.layer_snapshot_store = nullptr; } + void enable_impeller() { + preroll_context_.impeller_enabled = true; + paint_context_.impeller_enabled = true; + display_list_paint_context_.impeller_enabled = true; + } + private: void set_raster_cache_(std::unique_ptr raster_cache) { raster_cache_ = std::move(raster_cache); From 1e396e870224665fcb9f8362f511143ef93f4c57 Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Tue, 18 Jul 2023 10:21:45 -0700 Subject: [PATCH 127/211] Reset Dart VM optimization level to 2 (#43770) Partial revert of https://github.com/flutter/engine/pull/43743 Setting the optimization level to `-Oz` reduced compressed binary size by 200KB, but regressed performance by 10-15% across the board (frame build time, gen_snapshot runtime, hot reload time, etc.) --- tools/gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/gn b/tools/gn index 38f41f69e843d..eb77255ddbd98 100755 --- a/tools/gn +++ b/tools/gn @@ -402,7 +402,7 @@ def to_gn_args(args): if args.dart_optimization_level: gn_args['dart_default_optimization_level'] = args.dart_optimization_level elif gn_args['target_os'] in ['android', 'ios']: - gn_args['dart_default_optimization_level'] = 'z' + gn_args['dart_default_optimization_level'] = '2' gn_args['flutter_use_fontconfig'] = args.enable_fontconfig gn_args['dart_component_kind' From fe70169b0828350fc49bc06d529dfda438925e58 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 13:31:41 -0400 Subject: [PATCH 128/211] Roll Fuchsia Mac SDK from _CIP-1iUTmGCbCDZ5... to SCshjyIlymHWD9W4D... (#43773) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index cbc5c0ebd1442..4cc5319de0031 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '_CIP-1iUTmGCbCDZ50br0bLzTWEMTtTBH55gpi2EcQgC' + 'version': 'SCshjyIlymHWD9W4DLT9CHMS3_5QMCQDb-m-DLzJi78C' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From 35ae028f0a0c76e8bb069787de14dd925c445f92 Mon Sep 17 00:00:00 2001 From: Greg Spencer Date: Tue, 18 Jul 2023 10:31:43 -0700 Subject: [PATCH 129/211] Check FlutterAppDelegate selector support before calling (#43425) ## Description This adds checks for the app delegate to make sure that it supports the Flutter-specific selectors before calling them, so that a non `FlutterAppDelegate` can be used for the `NSApplicationDelegate` on `NSApp`. ## Related Issues - https://github.com/flutter/flutter/issues/124829 - https://github.com/flutter/flutter/issues/127476 ## Tests - Added a test to make sure things don't crash if the app delegate isn't a `FlutterAppDelegate`. --- .../macos/framework/Source/FlutterEngine.mm | 39 +++++++++++++------ .../framework/Source/FlutterEngineTest.mm | 26 +++++++++++++ 2 files changed, 54 insertions(+), 11 deletions(-) diff --git a/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm b/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm index caab9c1852d53..f6764167dec4f 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm @@ -178,9 +178,11 @@ - (instancetype)initWithEngine:(FlutterEngine*)engine // allow tests to override it so that an actual exit doesn't occur. [[NSApplication sharedApplication] terminate:sender]; }; - FlutterAppDelegate* appDelegate = - (FlutterAppDelegate*)[[NSApplication sharedApplication] delegate]; - appDelegate.terminationHandler = self; + id appDelegate = [[NSApplication sharedApplication] delegate]; + if ([appDelegate respondsToSelector:@selector(setTerminationHandler:)]) { + FlutterAppDelegate* flutterAppDelegate = reinterpret_cast(appDelegate); + flutterAppDelegate.terminationHandler = self; + } return self; } @@ -420,10 +422,7 @@ - (instancetype)initWithName:(NSString*)labelPrefix _semanticsEnabled = NO; _isResponseValid = [[NSMutableArray alloc] initWithCapacity:1]; [_isResponseValid addObject:@YES]; - _terminationHandler = [[FlutterEngineTerminationHandler alloc] initWithEngine:self - terminator:nil]; // kFlutterImplicitViewId is reserved for the implicit view. - // All IDs above it are for regular views. _nextViewId = kFlutterImplicitViewId + 1; _embedderAPI.struct_size = sizeof(FlutterEngineProcTable); @@ -443,9 +442,16 @@ - (instancetype)initWithName:(NSString*)labelPrefix [self setUpPlatformViewChannel]; [self setUpAccessibilityChannel]; [self setUpNotificationCenterListeners]; - FlutterAppDelegate* appDelegate = - reinterpret_cast([[NSApplication sharedApplication] delegate]); - [appDelegate addApplicationLifecycleDelegate:self]; + id appDelegate = [[NSApplication sharedApplication] delegate]; + const SEL selector = @selector(addApplicationLifecycleDelegate:); + if ([appDelegate respondsToSelector:selector]) { + _terminationHandler = [[FlutterEngineTerminationHandler alloc] initWithEngine:self + terminator:nil]; + FlutterAppDelegate* flutterAppDelegate = reinterpret_cast(appDelegate); + [flutterAppDelegate addApplicationLifecycleDelegate:self]; + } else { + _terminationHandler = nil; + } return self; } @@ -1097,9 +1103,20 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { } else if ([call.method isEqualToString:@"Clipboard.hasStrings"]) { result(@{@"value" : @([self clipboardHasStrings])}); } else if ([call.method isEqualToString:@"System.exitApplication"]) { - [[self terminationHandler] handleRequestAppExitMethodCall:call.arguments result:result]; + if ([self terminationHandler] == nil) { + // If the termination handler isn't set, then either we haven't + // initialized it yet, or (more likely) the NSApp delegate isn't a + // FlutterAppDelegate, so it can't cancel requests to exit. So, in that + // case, just terminate when requested. + [NSApp terminate:self]; + result(nil); + } else { + [[self terminationHandler] handleRequestAppExitMethodCall:call.arguments result:result]; + } } else if ([call.method isEqualToString:@"System.initializationComplete"]) { - [self terminationHandler].acceptingRequests = YES; + if ([self terminationHandler] != nil) { + [self terminationHandler].acceptingRequests = YES; + } result(nil); } else { result(FlutterMethodNotImplemented); diff --git a/shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm b/shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm index 4fccfa0dedc9b..fea57a9adf40f 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm +++ b/shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm @@ -47,6 +47,16 @@ - (nonnull NSView*)createWithViewIdentifier:(int64_t)viewId arguments:(nullable @end +@interface PlainAppDelegate : NSObject +@end + +@implementation PlainAppDelegate +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication* _Nonnull)sender { + // Always cancel, so that the test doesn't exit. + return NSTerminateCancel; +} +@end + namespace flutter::testing { TEST_F(FlutterEngineTest, CanLaunch) { @@ -782,6 +792,22 @@ - (nonnull NSView*)createWithViewIdentifier:(int64_t)viewId arguments:(nullable EXPECT_TRUE(triedToTerminate); } +TEST_F(FlutterEngineTest, IgnoresTerminationRequestIfNotFlutterAppDelegate) { + id previousDelegate = [[NSApplication sharedApplication] delegate]; + id plainDelegate = [[PlainAppDelegate alloc] init]; + [NSApplication sharedApplication].delegate = plainDelegate; + + // Creating the engine shouldn't fail here, even though the delegate isn't a + // FlutterAppDelegate. + CreateMockFlutterEngine(nil); + + // Asking to terminate the app should cancel. + EXPECT_EQ([[[NSApplication sharedApplication] delegate] applicationShouldTerminate:NSApp], + NSTerminateCancel); + + [NSApplication sharedApplication].delegate = previousDelegate; +} + TEST_F(FlutterEngineTest, HandleAccessibilityEvent) { __block BOOL announced = NO; id engineMock = CreateMockFlutterEngine(nil); From 034d456a706f1a11ff1dd6b62f6d06cc13dcc0b3 Mon Sep 17 00:00:00 2001 From: Casey Hillers Date: Tue, 18 Jul 2023 10:31:44 -0700 Subject: [PATCH 130/211] [ci.yaml] Skip windows arm on releases (#43771) This is blocking the beta release as the builder is running unnecessarily. --- .ci.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.ci.yaml b/.ci.yaml index 8875c59a1847c..de36b1c73e24b 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -669,7 +669,6 @@ targets: - main properties: add_recipes_cq: "true" - release_build: "true" config_name: windows_arm_host_engine drone_dimensions: - os=Windows From 940a9a87fee9892132cf8da4374c444bfaac8382 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 13:34:15 -0400 Subject: [PATCH 131/211] Roll Skia from b7103fe086c1 to 219ca2581ab2 (1 revision) (#43774) https://skia.googlesource.com/skia.git/+log/b7103fe086c1..219ca2581ab2 2023-07-18 herb@google.com Simplify bounds checks for collections If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4cc5319de0031..e20f1cf769202 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b7103fe086c1fb9095e0fe26644d52edd8932135', + 'skia_revision': '219ca2581ab232039feccb895b8171e9ec3a814c', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index dd7c0e908064f..01a42ca0c6635 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 828c2e2a57dad6a4fd3c39f0832fc1f8 +Signature: 0dfc9487e68f41284fc2b74e4e70b40d ==================================================================================================== LIBRARY: etc1 From 288577639579baf8d85d0846b971068429b3a676 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 14:05:19 -0400 Subject: [PATCH 132/211] Roll ANGLE from 113f847be69f to 52fe3116ead9 (146 revisions) (#43776) Roll ANGLE from 113f847be69f to 52fe3116ead9 (146 revisions) https://chromium.googlesource.com/angle/angle.git/+log/113f847be69f..52fe3116ead9 2023-07-18 syoussefi@chromium.org Vulkan: Deduplicate share group's context set tracking 2023-07-18 phanquangminh217@gmail.com Reland "Vulkan: Remove platform restriction of EGL_ANDROID_native_fence_sync" 2023-07-18 cnorthrop@google.com Android: Update script with sync progress 2023-07-18 hitawala@chromium.org Angle: Copy multiplanar d3d11 texture for readPixels 2023-07-18 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 48a8f73f303f to 8806dade91f0 (572 revisions) 2023-07-17 bsheedy@chromium.org Start Mac Intel 13.4.1 experiment 2023-07-17 syoussefi@chromium.org Move ShareGroup to its own files 2023-07-17 geofflang@chromium.org Metal: Require MSL 2.1. 2023-07-17 geofflang@chromium.org Android: Use ALooper_pollOnce instead of ALooper_pollAll 2023-07-17 romanl@google.com Android: Simplify power metrics collection 2023-07-17 syoussefi@chromium.org Translator: Limit variable sizes vs uint overflow 2023-07-17 m.maiya@samsung.com Vulkan: Bugfix in gl_FragData array redeclaration 2023-07-17 syoussefi@chromium.org Fix deadlock on device loss 2023-07-17 ynovikov@chromium.org Retry angle_deqp_gles2_metal_tests 2023-07-17 cnorthrop@google.com Docs: Add a couple of Android pointers 2023-07-17 romanl@google.com Use VK_EXT_legacy_dithering when available instead of emulation 2023-07-17 ynovikov@chromium.org Skip WebGL2CompatibilityTest.DrawWithZeroSizedBuffer on iOS GL 2023-07-17 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 68d783529187 to 48a8f73f303f (690 revisions) 2023-07-14 dtapuska@chromium.org Fix cfi issue with Angle invoking worker pool 2023-07-14 romanl@google.com Ensure settings get cleaned up on exceptions 2023-07-14 romanl@google.com Revert "Add minimal setup for Go codegen in Android.bp." 2023-07-14 ynovikov@chromium.org Skip dEQP-EGL.functional.native_[color|coord]_mapping.native_window.* 2023-07-14 geofflang@chromium.org Reject program binaries when the renderer string changes 2023-07-14 geofflang@chromium.org Sync all framebuffer attachments when checking completeness. 2023-07-14 syoussefi@chromium.org Translator: Unconditionally limit variable sizes 2023-07-14 ynovikov@chromium.org Remove obsolete VUID suppressions 2023-07-14 geofflang@chromium.org Metal: Call terminate if display initialization fails. 2023-07-14 geofflang@chromium.org Metal: Use the pipeline cache for RenderUtils compute shaders 2023-07-14 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from ad8a66bf7d69 to aa35b58fce7d (7 revisions) 2023-07-14 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from de1153f640b8 to 68d783529187 (590 revisions) 2023-07-14 m.maiya@samsung.com Update input color in YUVSampleLinearFiltering test 2023-07-14 lexa.knyazev@gmail.com Restrict color writemasks for RGB9_E5 color buffers 2023-07-14 cclao@google.com Vulkan: Clean up depth stencil feedback mode part 2 2023-07-14 cclao@google.com Vulkan: Clean up depthStencil feedback loop implementation Part1 2023-07-14 zzyiwei@chromium.org Vulkan: disable explicitlyCastMediumpFloatTo16Bit for Venus 2023-07-13 syoussefi@chromium.org Ensure lockless entry point validations only access private data 2023-07-13 geofflang@chromium.org Metal: Cache compute pipelines for provoking vertex emulation 2023-07-13 syoussefi@chromium.org Prevent accidental misuse of ANGLE_ENABLED 2023-07-13 geofflang@chromium.org Metal: Cache compute pipelines with render pipelines. 2023-07-13 dtapuska@chromium.org Fix Angle creating its own worker pool. 2023-07-13 syoussefi@chromium.org Make insertion/retrieval of Debug messages thread-safe 2023-07-13 lexa.knyazev@gmail.com Skip component type validation of non-existent draw buffers 2023-07-13 geofflang@chromium.org Metal: Use the per-context pipeline cache for RenderUtils 2023-07-13 cnorthrop@google.com Revert "Android: Assert that CFI is disabled" 2023-07-13 syoussefi@chromium.org Make validation make straight calls to ErrorSet 2023-07-13 syoussefi@chromium.org Make error handling and debug messages thread safe ... --- DEPS | 2 +- ci/licenses_golden/excluded_files | 2 +- ci/licenses_golden/licenses_third_party | 850 ++++++++++++------------ 3 files changed, 420 insertions(+), 434 deletions(-) diff --git a/DEPS b/DEPS index e20f1cf769202..bbd60e8ce8213 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + '113f847be69f3e813e55e6c3678a79e7483052e2', + Var('chromium_git') + '/angle/angle.git' + '@' + '52fe3116ead9a5de51ddad17fcb14bf8ecb3a69d', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index 62cb8ba07c3a2..dd7e19286de0f 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -1032,8 +1032,8 @@ ../../../third_party/angle/src/compiler/generate_parser_tools.py ../../../third_party/angle/src/compiler/preprocessor/generate_parser.py ../../../third_party/angle/src/compiler/translator/gen_builtin_symbols.py -../../../third_party/angle/src/compiler/translator/gen_emulated_builtin_function_tables.py ../../../third_party/angle/src/compiler/translator/generate_parser.py +../../../third_party/angle/src/compiler/translator/hlsl/gen_emulated_builtin_function_tables.py ../../../third_party/angle/src/compiler/translator/span_unittest.cpp ../../../third_party/angle/src/feature_support_util/OWNERS ../../../third_party/angle/src/feature_support_util/feature_support_util_unittest.cpp diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a21f4c7eaa0f3..26aba6cf62ba8 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: ff86e3434d56e19fcd722fe8cb2005b9 +Signature: fa9eed750baa6faa409b1ddefa19d3b5 ==================================================================================================== LIBRARY: angle @@ -38250,11 +38250,8 @@ ORIGIN: ../../../third_party/angle/src/common/mathutil.h + ../../../third_party/ ORIGIN: ../../../third_party/angle/src/common/utilities.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/utilities.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/preprocessor/preprocessor.l + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ASTMetadataHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ASTMetadataHLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/BaseTypes.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulator.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulatorGLSL.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/CallDAG.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/CallDAG.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/CollectVariables.cpp + ../../../third_party/angle/LICENSE @@ -38275,14 +38272,6 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/InitializeGlobals.h + ORIGIN: ../../../third_party/angle/src/compiler/translator/IntermNode.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/IntermNode.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/Operator.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputESSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputESSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputGLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputGLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputGLSLBase.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputGLSLBase.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputHLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputTree.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ParseContext.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ParseContext.h + ../../../third_party/angle/LICENSE @@ -38293,14 +38282,6 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/QualifierTypes.h + .. ORIGIN: ../../../third_party/angle/src/compiler/translator/ShaderLang.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/SymbolTable.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/SymbolTable.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorESSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorESSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorGLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorGLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorHLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/TranslatorMetalUtils.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/TranslatorMetalUtils.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/Types.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/Types.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateGlobalInitializer.cpp + ../../../third_party/angle/LICENSE @@ -38312,10 +38293,29 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateVaryingLocati ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateVaryingLocations.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/VariablePacker.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/VariablePacker.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/VersionGLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/VersionGLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/BuiltInFunctionEmulatorGLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/OutputESSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/OutputESSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/OutputGLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/OutputGLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/OutputGLSLBase.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/OutputGLSLBase.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/TranslatorESSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/TranslatorESSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/TranslatorGLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/TranslatorGLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/VersionGLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/VersionGLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/glslang.l + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/glslang.y + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ASTMetadataHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ASTMetadataHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/OutputHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/OutputHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/TranslatorHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/TranslatorHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/UtilsMSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/UtilsMSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/InitializeVariables.cpp + ../../../third_party/angle/LICENSE @@ -38326,24 +38326,24 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RecordConsta ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RecordConstantPrecision.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveDynamicIndexing.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ScalarizeVecAndMatConstructorArgs.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ScalarizeVecAndMatConstructorArgs.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/SeparateDeclarations.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/SeparateDeclarations.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/UnfoldShortCircuitAST.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/UnfoldShortCircuitAST.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/ArrayReturnValueToOutParameter.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/ArrayReturnValueToOutParameter.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RemoveSwitchFallThrough.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RemoveSwitchFallThrough.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateArrayInitialization.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateArrayInitialization.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateExpressionsReturningArrays.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateExpressionsReturningArrays.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/UnfoldShortCircuitToIf.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/UnfoldShortCircuitToIf.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/RegenerateStructNames.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/RegenerateStructNames.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/RegenerateStructNames.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/RegenerateStructNames.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/ScalarizeVecAndMatConstructorArgs.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/ScalarizeVecAndMatConstructorArgs.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/UnfoldShortCircuitAST.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/UnfoldShortCircuitAST.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/ArrayReturnValueToOutParameter.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/ArrayReturnValueToOutParameter.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RemoveSwitchFallThrough.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RemoveSwitchFallThrough.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateArrayInitialization.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateArrayInitialization.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateExpressionsReturningArrays.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateExpressionsReturningArrays.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/UnfoldShortCircuitToIf.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/UnfoldShortCircuitToIf.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/IntermTraverse.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/NodeSearch.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/util.h + ../../../third_party/angle/LICENSE @@ -38408,11 +38408,8 @@ FILE: ../../../third_party/angle/src/common/mathutil.h FILE: ../../../third_party/angle/src/common/utilities.cpp FILE: ../../../third_party/angle/src/common/utilities.h FILE: ../../../third_party/angle/src/compiler/preprocessor/preprocessor.l -FILE: ../../../third_party/angle/src/compiler/translator/ASTMetadataHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/ASTMetadataHLSL.h FILE: ../../../third_party/angle/src/compiler/translator/BaseTypes.h FILE: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulator.cpp -FILE: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulatorGLSL.cpp FILE: ../../../third_party/angle/src/compiler/translator/CallDAG.cpp FILE: ../../../third_party/angle/src/compiler/translator/CallDAG.h FILE: ../../../third_party/angle/src/compiler/translator/CollectVariables.cpp @@ -38433,14 +38430,6 @@ FILE: ../../../third_party/angle/src/compiler/translator/InitializeGlobals.h FILE: ../../../third_party/angle/src/compiler/translator/IntermNode.cpp FILE: ../../../third_party/angle/src/compiler/translator/IntermNode.h FILE: ../../../third_party/angle/src/compiler/translator/Operator.cpp -FILE: ../../../third_party/angle/src/compiler/translator/OutputESSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/OutputESSL.h -FILE: ../../../third_party/angle/src/compiler/translator/OutputGLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/OutputGLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/OutputGLSLBase.cpp -FILE: ../../../third_party/angle/src/compiler/translator/OutputGLSLBase.h -FILE: ../../../third_party/angle/src/compiler/translator/OutputHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/OutputHLSL.h FILE: ../../../third_party/angle/src/compiler/translator/OutputTree.cpp FILE: ../../../third_party/angle/src/compiler/translator/ParseContext.cpp FILE: ../../../third_party/angle/src/compiler/translator/ParseContext.h @@ -38451,14 +38440,6 @@ FILE: ../../../third_party/angle/src/compiler/translator/QualifierTypes.h FILE: ../../../third_party/angle/src/compiler/translator/ShaderLang.cpp FILE: ../../../third_party/angle/src/compiler/translator/SymbolTable.cpp FILE: ../../../third_party/angle/src/compiler/translator/SymbolTable.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorESSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorESSL.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorGLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorGLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorHLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/TranslatorMetalUtils.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/TranslatorMetalUtils.h FILE: ../../../third_party/angle/src/compiler/translator/Types.cpp FILE: ../../../third_party/angle/src/compiler/translator/Types.h FILE: ../../../third_party/angle/src/compiler/translator/ValidateGlobalInitializer.cpp @@ -38470,10 +38451,29 @@ FILE: ../../../third_party/angle/src/compiler/translator/ValidateVaryingLocation FILE: ../../../third_party/angle/src/compiler/translator/ValidateVaryingLocations.h FILE: ../../../third_party/angle/src/compiler/translator/VariablePacker.cpp FILE: ../../../third_party/angle/src/compiler/translator/VariablePacker.h -FILE: ../../../third_party/angle/src/compiler/translator/VersionGLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/VersionGLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/glsl/BuiltInFunctionEmulatorGLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/glsl/OutputESSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/glsl/OutputESSL.h +FILE: ../../../third_party/angle/src/compiler/translator/glsl/OutputGLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/glsl/OutputGLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/glsl/OutputGLSLBase.cpp +FILE: ../../../third_party/angle/src/compiler/translator/glsl/OutputGLSLBase.h +FILE: ../../../third_party/angle/src/compiler/translator/glsl/TranslatorESSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/glsl/TranslatorESSL.h +FILE: ../../../third_party/angle/src/compiler/translator/glsl/TranslatorGLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/glsl/TranslatorGLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/glsl/VersionGLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/glsl/VersionGLSL.h FILE: ../../../third_party/angle/src/compiler/translator/glslang.l FILE: ../../../third_party/angle/src/compiler/translator/glslang.y +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ASTMetadataHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ASTMetadataHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/OutputHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/OutputHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/TranslatorHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/TranslatorHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/UtilsMSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/UtilsMSL.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/InitializeVariables.cpp @@ -38484,24 +38484,24 @@ FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RecordConstant FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RecordConstantPrecision.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveDynamicIndexing.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ScalarizeVecAndMatConstructorArgs.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ScalarizeVecAndMatConstructorArgs.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/SeparateDeclarations.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/SeparateDeclarations.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/UnfoldShortCircuitAST.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/UnfoldShortCircuitAST.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/ArrayReturnValueToOutParameter.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/ArrayReturnValueToOutParameter.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RemoveSwitchFallThrough.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RemoveSwitchFallThrough.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateArrayInitialization.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateArrayInitialization.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateExpressionsReturningArrays.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateExpressionsReturningArrays.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/UnfoldShortCircuitToIf.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/UnfoldShortCircuitToIf.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/RegenerateStructNames.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/RegenerateStructNames.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/RegenerateStructNames.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/RegenerateStructNames.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/ScalarizeVecAndMatConstructorArgs.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/ScalarizeVecAndMatConstructorArgs.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/UnfoldShortCircuitAST.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/UnfoldShortCircuitAST.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/ArrayReturnValueToOutParameter.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/ArrayReturnValueToOutParameter.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RemoveSwitchFallThrough.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RemoveSwitchFallThrough.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateArrayInitialization.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateArrayInitialization.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateExpressionsReturningArrays.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateExpressionsReturningArrays.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/UnfoldShortCircuitToIf.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/UnfoldShortCircuitToIf.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/IntermTraverse.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/NodeSearch.h FILE: ../../../third_party/angle/src/compiler/translator/util.h @@ -39234,7 +39234,7 @@ ORIGIN: ../../../third_party/angle/src/compiler/preprocessor/Preprocessor.h + .. ORIGIN: ../../../third_party/angle/src/compiler/preprocessor/Token.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/preprocessor/Token.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulator.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulatorGLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/BuiltInFunctionEmulatorGLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/length_limits.h + ../../../third_party/angle/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/angle/src/compiler/preprocessor/DirectiveParser.cpp @@ -39247,7 +39247,7 @@ FILE: ../../../third_party/angle/src/compiler/preprocessor/Preprocessor.h FILE: ../../../third_party/angle/src/compiler/preprocessor/Token.cpp FILE: ../../../third_party/angle/src/compiler/preprocessor/Token.h FILE: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulator.h -FILE: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulatorGLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/glsl/BuiltInFunctionEmulatorGLSL.h FILE: ../../../third_party/angle/src/compiler/translator/length_limits.h ---------------------------------------------------------------------------------------------------- Copyright 2011 The ANGLE Project Authors. All rights reserved. @@ -39682,8 +39682,8 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateOutputs.cpp + ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateOutputs.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/blocklayout.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/blocklayout.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/blocklayoutHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/blocklayoutHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/blocklayoutHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/blocklayoutHLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/gpu_info_util/SystemInfo.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/gpu_info_util/SystemInfo.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/gpu_info_util/SystemInfo_internal.h + ../../../third_party/angle/LICENSE @@ -39743,8 +39743,8 @@ FILE: ../../../third_party/angle/src/compiler/translator/ValidateOutputs.cpp FILE: ../../../third_party/angle/src/compiler/translator/ValidateOutputs.h FILE: ../../../third_party/angle/src/compiler/translator/blocklayout.cpp FILE: ../../../third_party/angle/src/compiler/translator/blocklayout.h -FILE: ../../../third_party/angle/src/compiler/translator/blocklayoutHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/blocklayoutHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/blocklayoutHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/blocklayoutHLSL.h FILE: ../../../third_party/angle/src/gpu_info_util/SystemInfo.cpp FILE: ../../../third_party/angle/src/gpu_info_util/SystemInfo.h FILE: ../../../third_party/angle/src/gpu_info_util/SystemInfo_internal.h @@ -39987,17 +39987,17 @@ ORIGIN: ../../../third_party/angle/src/common/system_utils.h + ../../../third_pa ORIGIN: ../../../third_party/angle/src/common/system_utils_win.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/tls.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/tls.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulatorHLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ResourcesHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ResourcesHLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ShaderVars.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/StructureHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/StructureHLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/UtilsHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/UtilsHLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteElseBlocks.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteElseBlocks.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/BuiltInFunctionEmulatorHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/BuiltInFunctionEmulatorHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ResourcesHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ResourcesHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/StructureHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/StructureHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/UtilsHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/UtilsHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteElseBlocks.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteElseBlocks.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/image_util/copyimage.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/image_util/loadimage.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/AttributeMap.cpp + ../../../third_party/angle/LICENSE @@ -40030,6 +40030,7 @@ ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/ProgramImpl.h + ../../. ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/RenderbufferImpl.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/SamplerImpl.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/ShaderImpl.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/ShareGroupImpl.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/SurfaceImpl.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/TextureImpl.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/TransformFeedbackImpl.h + ../../../third_party/angle/LICENSE @@ -40095,17 +40096,17 @@ FILE: ../../../third_party/angle/src/common/system_utils.h FILE: ../../../third_party/angle/src/common/system_utils_win.cpp FILE: ../../../third_party/angle/src/common/tls.cpp FILE: ../../../third_party/angle/src/common/tls.h -FILE: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/BuiltInFunctionEmulatorHLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/ResourcesHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/ResourcesHLSL.h FILE: ../../../third_party/angle/src/compiler/translator/ShaderVars.cpp -FILE: ../../../third_party/angle/src/compiler/translator/StructureHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/StructureHLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/UtilsHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/UtilsHLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteElseBlocks.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteElseBlocks.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/BuiltInFunctionEmulatorHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/BuiltInFunctionEmulatorHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ResourcesHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ResourcesHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/StructureHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/StructureHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/UtilsHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/UtilsHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteElseBlocks.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteElseBlocks.h FILE: ../../../third_party/angle/src/image_util/copyimage.inc FILE: ../../../third_party/angle/src/image_util/loadimage.inc FILE: ../../../third_party/angle/src/libANGLE/AttributeMap.cpp @@ -40138,6 +40139,7 @@ FILE: ../../../third_party/angle/src/libANGLE/renderer/ProgramImpl.h FILE: ../../../third_party/angle/src/libANGLE/renderer/RenderbufferImpl.h FILE: ../../../third_party/angle/src/libANGLE/renderer/SamplerImpl.h FILE: ../../../third_party/angle/src/libANGLE/renderer/ShaderImpl.h +FILE: ../../../third_party/angle/src/libANGLE/renderer/ShareGroupImpl.h FILE: ../../../third_party/angle/src/libANGLE/renderer/SurfaceImpl.h FILE: ../../../third_party/angle/src/libANGLE/renderer/TextureImpl.h FILE: ../../../third_party/angle/src/libANGLE/renderer/TransformFeedbackImpl.h @@ -40432,10 +40434,10 @@ ORIGIN: ../../../third_party/angle/src/common/system_utils_ios.cpp + ../../../th ORIGIN: ../../../third_party/angle/src/common/system_utils_ios.mm + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/system_utils_linux.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/system_utils_mac.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ExtensionGLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ExtensionGLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteDoWhile.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteDoWhile.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/ExtensionGLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/glsl/ExtensionGLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteDoWhile.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteDoWhile.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/FindSymbolNode.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/FindSymbolNode.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/image_util/generatemip.inc + ../../../third_party/angle/LICENSE @@ -40568,10 +40570,10 @@ FILE: ../../../third_party/angle/src/common/system_utils_ios.cpp FILE: ../../../third_party/angle/src/common/system_utils_ios.mm FILE: ../../../third_party/angle/src/common/system_utils_linux.cpp FILE: ../../../third_party/angle/src/common/system_utils_mac.cpp -FILE: ../../../third_party/angle/src/compiler/translator/ExtensionGLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/ExtensionGLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteDoWhile.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteDoWhile.h +FILE: ../../../third_party/angle/src/compiler/translator/glsl/ExtensionGLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/glsl/ExtensionGLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteDoWhile.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteDoWhile.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/FindSymbolNode.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/FindSymbolNode.h FILE: ../../../third_party/angle/src/image_util/generatemip.inc @@ -40849,12 +40851,12 @@ ORIGIN: ../../../third_party/angle/src/common/vulkan/vk_headers.h + ../../../thi ORIGIN: ../../../third_party/angle/src/compiler/fuzz/translator_fuzzer.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ConstantUnion.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/Severity.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TextureFunctionHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TextureFunctionHLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorVulkan.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorVulkan.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateMaxParameters.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateMaxParameters.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/TextureFunctionHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/TextureFunctionHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/spirv/TranslatorSPIRV.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/spirv/TranslatorSPIRV.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/DeferGlobalInitializers.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/DeferGlobalInitializers.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveInvariantDeclaration.cpp + ../../../third_party/angle/LICENSE @@ -40865,20 +40867,20 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/SimplifyLoop ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/SimplifyLoopConditions.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/SplitSequenceOperator.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/SplitSequenceOperator.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/AddAndTrueToLoopCondition.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/AddAndTrueToLoopCondition.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteUnaryMinusOperatorFloat.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteUnaryMinusOperatorFloat.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AddDefaultReturnStatements.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AddDefaultReturnStatements.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/BreakVariableAliasingInInnerLoops.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/BreakVariableAliasingInInnerLoops.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/ExpandIntegerPowExpressions.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/ExpandIntegerPowExpressions.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteUnaryMinusOperatorInt.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteUnaryMinusOperatorInt.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/UseInterfaceBlockFields.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/UseInterfaceBlockFields.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/UseInterfaceBlockFields.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/UseInterfaceBlockFields.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/AddAndTrueToLoopCondition.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/AddAndTrueToLoopCondition.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteUnaryMinusOperatorFloat.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteUnaryMinusOperatorFloat.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AddDefaultReturnStatements.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AddDefaultReturnStatements.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/BreakVariableAliasingInInnerLoops.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/BreakVariableAliasingInInnerLoops.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/ExpandIntegerPowExpressions.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/ExpandIntegerPowExpressions.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteUnaryMinusOperatorInt.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteUnaryMinusOperatorInt.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/IntermNodePatternMatcher.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/IntermNodePatternMatcher.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/image_util/imageformats.cpp + ../../../third_party/angle/LICENSE @@ -41043,12 +41045,12 @@ FILE: ../../../third_party/angle/src/common/vulkan/vk_headers.h FILE: ../../../third_party/angle/src/compiler/fuzz/translator_fuzzer.cpp FILE: ../../../third_party/angle/src/compiler/translator/ConstantUnion.cpp FILE: ../../../third_party/angle/src/compiler/translator/Severity.h -FILE: ../../../third_party/angle/src/compiler/translator/TextureFunctionHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TextureFunctionHLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorVulkan.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorVulkan.h FILE: ../../../third_party/angle/src/compiler/translator/ValidateMaxParameters.cpp FILE: ../../../third_party/angle/src/compiler/translator/ValidateMaxParameters.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/TextureFunctionHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/TextureFunctionHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/spirv/TranslatorSPIRV.cpp +FILE: ../../../third_party/angle/src/compiler/translator/spirv/TranslatorSPIRV.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/DeferGlobalInitializers.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/DeferGlobalInitializers.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveInvariantDeclaration.cpp @@ -41059,20 +41061,20 @@ FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/SimplifyLoopCo FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/SimplifyLoopConditions.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/SplitSequenceOperator.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/SplitSequenceOperator.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/AddAndTrueToLoopCondition.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/AddAndTrueToLoopCondition.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteUnaryMinusOperatorFloat.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteUnaryMinusOperatorFloat.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AddDefaultReturnStatements.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AddDefaultReturnStatements.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/BreakVariableAliasingInInnerLoops.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/BreakVariableAliasingInInnerLoops.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/ExpandIntegerPowExpressions.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/ExpandIntegerPowExpressions.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteUnaryMinusOperatorInt.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteUnaryMinusOperatorInt.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/UseInterfaceBlockFields.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/UseInterfaceBlockFields.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/UseInterfaceBlockFields.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/UseInterfaceBlockFields.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/AddAndTrueToLoopCondition.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/AddAndTrueToLoopCondition.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteUnaryMinusOperatorFloat.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteUnaryMinusOperatorFloat.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AddDefaultReturnStatements.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AddDefaultReturnStatements.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/BreakVariableAliasingInInnerLoops.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/BreakVariableAliasingInInnerLoops.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/ExpandIntegerPowExpressions.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/ExpandIntegerPowExpressions.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteUnaryMinusOperatorInt.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteUnaryMinusOperatorInt.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/IntermNodePatternMatcher.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/IntermNodePatternMatcher.h FILE: ../../../third_party/angle/src/image_util/imageformats.cpp @@ -41338,8 +41340,6 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/Declarator.cpp + ../. ORIGIN: ../../../third_party/angle/src/compiler/translator/Declarator.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ExtensionBehavior.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/HashNames.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ImageFunctionHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ImageFunctionHLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/IsASTDepthBelowLimit.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/IsASTDepthBelowLimit.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputTree.h + ../../../third_party/angle/LICENSE @@ -41348,7 +41348,9 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/Symbol.cpp + ../../.. ORIGIN: ../../../third_party/angle/src/compiler/translator/Symbol.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/SymbolUniqueId.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/SymbolUniqueId.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/emulated_builtin_functions_hlsl_autogen.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ImageFunctionHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ImageFunctionHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/emulated_builtin_functions_hlsl_autogen.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampFragDepth.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampFragDepth.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampPointSize.cpp + ../../../third_party/angle/LICENSE @@ -41359,8 +41361,8 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveArrayL ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveArrayLengthMethod.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveUnreferencedVariables.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveUnreferencedVariables.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/WrapSwitchStatementsInBlocks.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/WrapSwitchStatementsInBlocks.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/WrapSwitchStatementsInBlocks.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/WrapSwitchStatementsInBlocks.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/FindMain.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/FindMain.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/IntermNode_util.cpp + ../../../third_party/angle/LICENSE @@ -41427,8 +41429,6 @@ FILE: ../../../third_party/angle/src/compiler/translator/Declarator.cpp FILE: ../../../third_party/angle/src/compiler/translator/Declarator.h FILE: ../../../third_party/angle/src/compiler/translator/ExtensionBehavior.cpp FILE: ../../../third_party/angle/src/compiler/translator/HashNames.cpp -FILE: ../../../third_party/angle/src/compiler/translator/ImageFunctionHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/ImageFunctionHLSL.h FILE: ../../../third_party/angle/src/compiler/translator/IsASTDepthBelowLimit.cpp FILE: ../../../third_party/angle/src/compiler/translator/IsASTDepthBelowLimit.h FILE: ../../../third_party/angle/src/compiler/translator/OutputTree.h @@ -41437,7 +41437,9 @@ FILE: ../../../third_party/angle/src/compiler/translator/Symbol.cpp FILE: ../../../third_party/angle/src/compiler/translator/Symbol.h FILE: ../../../third_party/angle/src/compiler/translator/SymbolUniqueId.cpp FILE: ../../../third_party/angle/src/compiler/translator/SymbolUniqueId.h -FILE: ../../../third_party/angle/src/compiler/translator/emulated_builtin_functions_hlsl_autogen.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ImageFunctionHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ImageFunctionHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/emulated_builtin_functions_hlsl_autogen.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampFragDepth.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampFragDepth.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampPointSize.cpp @@ -41448,8 +41450,8 @@ FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveArrayLen FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveArrayLengthMethod.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveUnreferencedVariables.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveUnreferencedVariables.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/WrapSwitchStatementsInBlocks.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/WrapSwitchStatementsInBlocks.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/WrapSwitchStatementsInBlocks.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/WrapSwitchStatementsInBlocks.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/FindMain.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/FindMain.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/IntermNode_util.cpp @@ -41678,7 +41680,7 @@ FILE: ../../../third_party/angle/src/common/packed_cl_enums.json FILE: ../../../third_party/angle/src/common/packed_egl_enums.json FILE: ../../../third_party/angle/src/common/packed_gl_enums.json FILE: ../../../third_party/angle/src/compiler/translator/builtin_function_declarations.txt -FILE: ../../../third_party/angle/src/compiler/translator/emulated_builtin_function_data_hlsl.json +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/emulated_builtin_function_data_hlsl.json FILE: ../../../third_party/angle/src/feature_support_util/a4a_rules.json FILE: ../../../third_party/angle/src/libANGLE/es3_copy_conversion_formats.json FILE: ../../../third_party/angle/src/libANGLE/es3_format_type_combinations.json @@ -41941,20 +41943,18 @@ ORIGIN: ../../../third_party/angle/src/common/hash_utils.h + ../../../third_part ORIGIN: ../../../third_party/angle/src/common/matrix_utils.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/system_utils.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/system_utils_posix.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/AtomicCounterFunctionHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/AtomicCounterFunctionHLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/FunctionLookup.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/FunctionLookup.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ImmutableString.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ImmutableStringBuilder.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ImmutableStringBuilder.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ShaderStorageBlockFunctionHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ShaderStorageBlockFunctionHLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ShaderStorageBlockOutputHLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/ShaderStorageBlockOutputHLSL.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/NameEmbeddedUniformStructsMetal.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/NameEmbeddedUniformStructsMetal.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/builtin_variables.json + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/AtomicCounterFunctionHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/AtomicCounterFunctionHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ShaderStorageBlockFunctionHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ShaderStorageBlockFunctionHLSL.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ShaderStorageBlockOutputHLSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/hlsl/ShaderStorageBlockOutputHLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/FoldExpressions.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/FoldExpressions.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/PruneEmptyCases.cpp + ../../../third_party/angle/LICENSE @@ -41963,14 +41963,16 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteStruc ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteStructSamplers.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/SeparateStructFromUniformDeclarations.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/SeparateStructFromUniformDeclarations.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteAtomicFunctionExpressions.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteAtomicFunctionExpressions.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteExpressionsWithShaderStorageBlock.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteExpressionsWithShaderStorageBlock.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateArrayConstructorStatements.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateArrayConstructorStatements.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/RewriteRepeatedAssignToSwizzled.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/RewriteRepeatedAssignToSwizzled.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/RewriteRepeatedAssignToSwizzled.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/RewriteRepeatedAssignToSwizzled.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteAtomicFunctionExpressions.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteAtomicFunctionExpressions.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteExpressionsWithShaderStorageBlock.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteExpressionsWithShaderStorageBlock.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateArrayConstructorStatements.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateArrayConstructorStatements.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/NameEmbeddedUniformStructsMetal.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/NameEmbeddedUniformStructsMetal.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceVariable.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceVariable.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/Visit.h + ../../../third_party/angle/LICENSE @@ -42064,6 +42066,8 @@ ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/Conv ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/CopyImageToBuffer.comp.00000000.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/CopyImageToBuffer.comp.00000001.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/EtcToBc.comp.00000000.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/EtcToBc.comp.00000001.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ExportStencil.frag.00000000.inc + ../../../third_party/angle/LICENSE @@ -42189,20 +42193,18 @@ FILE: ../../../third_party/angle/src/common/hash_utils.h FILE: ../../../third_party/angle/src/common/matrix_utils.cpp FILE: ../../../third_party/angle/src/common/system_utils.cpp FILE: ../../../third_party/angle/src/common/system_utils_posix.cpp -FILE: ../../../third_party/angle/src/compiler/translator/AtomicCounterFunctionHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/AtomicCounterFunctionHLSL.h FILE: ../../../third_party/angle/src/compiler/translator/FunctionLookup.cpp FILE: ../../../third_party/angle/src/compiler/translator/FunctionLookup.h FILE: ../../../third_party/angle/src/compiler/translator/ImmutableString.h FILE: ../../../third_party/angle/src/compiler/translator/ImmutableStringBuilder.cpp FILE: ../../../third_party/angle/src/compiler/translator/ImmutableStringBuilder.h -FILE: ../../../third_party/angle/src/compiler/translator/ShaderStorageBlockFunctionHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/ShaderStorageBlockFunctionHLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/ShaderStorageBlockOutputHLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/ShaderStorageBlockOutputHLSL.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/NameEmbeddedUniformStructsMetal.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/NameEmbeddedUniformStructsMetal.h FILE: ../../../third_party/angle/src/compiler/translator/builtin_variables.json +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/AtomicCounterFunctionHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/AtomicCounterFunctionHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ShaderStorageBlockFunctionHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ShaderStorageBlockFunctionHLSL.h +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ShaderStorageBlockOutputHLSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/hlsl/ShaderStorageBlockOutputHLSL.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/FoldExpressions.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/FoldExpressions.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/PruneEmptyCases.cpp @@ -42211,14 +42213,16 @@ FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteStructS FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteStructSamplers.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/SeparateStructFromUniformDeclarations.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/SeparateStructFromUniformDeclarations.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteAtomicFunctionExpressions.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteAtomicFunctionExpressions.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteExpressionsWithShaderStorageBlock.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RewriteExpressionsWithShaderStorageBlock.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateArrayConstructorStatements.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/SeparateArrayConstructorStatements.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/RewriteRepeatedAssignToSwizzled.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/gl/RewriteRepeatedAssignToSwizzled.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/RewriteRepeatedAssignToSwizzled.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/RewriteRepeatedAssignToSwizzled.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteAtomicFunctionExpressions.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteAtomicFunctionExpressions.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteExpressionsWithShaderStorageBlock.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RewriteExpressionsWithShaderStorageBlock.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateArrayConstructorStatements.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/SeparateArrayConstructorStatements.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/NameEmbeddedUniformStructsMetal.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/NameEmbeddedUniformStructsMetal.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceVariable.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceVariable.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/Visit.h @@ -42312,6 +42316,8 @@ FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/Conver FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/CopyImageToBuffer.comp.00000000.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/CopyImageToBuffer.comp.00000001.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/EtcToBc.comp.00000000.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/EtcToBc.comp.00000001.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ExportStencil.frag.00000000.inc @@ -42609,14 +42615,14 @@ ORIGIN: ../../../third_party/angle/src/compiler/preprocessor/preprocessor.l + .. ORIGIN: ../../../third_party/angle/src/compiler/preprocessor/preprocessor.y + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/preprocessor/preprocessor_lex_autogen.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/preprocessor/preprocessor_tab_autogen.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/BuiltinsWorkaroundGLSL.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/BuiltinsWorkaroundGLSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateAST.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateAST.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/glslang.l + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/glslang.y + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/glslang_lex_autogen.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/glslang_tab_autogen.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/spirv/BuiltinsWorkaround.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/spirv/BuiltinsWorkaround.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveInactiveInterfaceVariables.cpp + ../../../third_party/angle/LICENSE @@ -42628,8 +42634,8 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteCubeM ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteCubeMapSamplersAs2DArray.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteDfdy.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteDfdy.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteRowMajorMatrices.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteRowMajorMatrices.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteRowMajorMatrices.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteRowMajorMatrices.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/BuiltIn.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/FindFunction.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/FindFunction.h + ../../../third_party/angle/LICENSE @@ -42800,14 +42806,14 @@ FILE: ../../../third_party/angle/src/compiler/preprocessor/preprocessor.l FILE: ../../../third_party/angle/src/compiler/preprocessor/preprocessor.y FILE: ../../../third_party/angle/src/compiler/preprocessor/preprocessor_lex_autogen.cpp FILE: ../../../third_party/angle/src/compiler/preprocessor/preprocessor_tab_autogen.cpp -FILE: ../../../third_party/angle/src/compiler/translator/BuiltinsWorkaroundGLSL.cpp -FILE: ../../../third_party/angle/src/compiler/translator/BuiltinsWorkaroundGLSL.h FILE: ../../../third_party/angle/src/compiler/translator/ValidateAST.cpp FILE: ../../../third_party/angle/src/compiler/translator/ValidateAST.h FILE: ../../../third_party/angle/src/compiler/translator/glslang.l FILE: ../../../third_party/angle/src/compiler/translator/glslang.y FILE: ../../../third_party/angle/src/compiler/translator/glslang_lex_autogen.cpp FILE: ../../../third_party/angle/src/compiler/translator/glslang_tab_autogen.cpp +FILE: ../../../third_party/angle/src/compiler/translator/spirv/BuiltinsWorkaround.cpp +FILE: ../../../third_party/angle/src/compiler/translator/spirv/BuiltinsWorkaround.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveInactiveInterfaceVariables.cpp @@ -42819,8 +42825,8 @@ FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteCubeMap FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteCubeMapSamplersAs2DArray.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteDfdy.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteDfdy.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteRowMajorMatrices.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/apple/RewriteRowMajorMatrices.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteRowMajorMatrices.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/glsl/apple/RewriteRowMajorMatrices.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/BuiltIn.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/FindFunction.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/FindFunction.h @@ -43106,97 +43112,96 @@ ORIGIN: ../../../third_party/angle/src/common/gl/cgl/FunctionsCGL.h + ../../../t ORIGIN: ../../../third_party/angle/src/common/system_utils_apple.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/vulkan/vulkan_icd.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/vulkan/vulkan_icd.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/DriverUniformMetal.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/DriverUniformMetal.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ImmutableString_ESSL_autogen.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ImmutableString_autogen.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/SymbolTable_ESSL_autogen.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/SymbolTable_autogen.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/SymbolTable_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/AddExplicitTypeCasts.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/AddExplicitTypeCasts.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/AstHelpers.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/AstHelpers.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DebugSink.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DiscoverDependentFunctions.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DiscoverDependentFunctions.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DiscoverEnclosingFunctionTraverser.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DiscoverEnclosingFunctionTraverser.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/EmitMetal.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/FixTypeConstructors.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/FixTypeConstructors.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/HoistConstants.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/HoistConstants.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IdGen.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IdGen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IntermRebuild.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IntroduceVertexIndexID.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IntroduceVertexIndexID.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Layout.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Layout.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/MapFunctionsToDefinitions.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/MapFunctionsToDefinitions.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/MapSymbols.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/MapSymbols.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ModifyStruct.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ModifyStruct.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Name.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Name.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Pipeline.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Pipeline.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ReduceInterfaceBlocks.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ReduceInterfaceBlocks.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Reference.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteCaseDeclarations.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteCaseDeclarations.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteOutArgs.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteOutArgs.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewritePipelines.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewritePipelines.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteUnaddressableReferences.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteUnaddressableReferences.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundExpressions.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundExpressions.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SkippingTraverser.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SymbolEnv.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SymbolEnv.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ToposortStructs.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ToposortStructs.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/TransposeRowMajorMatrices.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/TransposeRowMajorMatrices.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/WrapMain.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/WrapMain.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateBarrierFunctionCall.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateBarrierFunctionCall.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateClipCullDistance.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateClipCullDistance.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ConvertUnsupportedConstructorsToFunctionCalls.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ConvertUnsupportedConstructorsToFunctionCalls.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/AsNode.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/AstHelpers.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/AstHelpers.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/DebugSink.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/DiscoverDependentFunctions.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/DiscoverDependentFunctions.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/DiscoverEnclosingFunctionTraverser.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/DiscoverEnclosingFunctionTraverser.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/DriverUniformMetal.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/DriverUniformMetal.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/EmitMetal.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/EmitMetal.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/IdGen.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/IdGen.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/IntermRebuild.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/IntermRebuild.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/Layout.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/Layout.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/MapFunctionsToDefinitions.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/MapFunctionsToDefinitions.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/MapSymbols.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/MapSymbols.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/ModifyStruct.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/ModifyStruct.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/Name.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/Name.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/NodeType.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/Pipeline.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/Pipeline.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/ProgramPrelude.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/ProgramPrelude.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/Reference.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/RewritePipelines.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/RewritePipelines.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/SkippingTraverser.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/SymbolEnv.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/SymbolEnv.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/ToposortStructs.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/ToposortStructs.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/TranslatorMSL.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/TranslatorMSL.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ForcePrecisionQualifier.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ForcePrecisionQualifier.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RecordUniformBlocksWithLargeArrayMember.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RecordUniformBlocksWithLargeArrayMember.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/FlagSamplersWithTexelFetch.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/FlagSamplersWithTexelFetch.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/RewriteInterpolateAtOffset.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/RewriteInterpolateAtOffset.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/AsNode.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RecordUniformBlocksWithLargeArrayMember.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RecordUniformBlocksWithLargeArrayMember.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/AddExplicitTypeCasts.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/AddExplicitTypeCasts.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/ConvertUnsupportedConstructorsToFunctionCalls.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/ConvertUnsupportedConstructorsToFunctionCalls.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/FixTypeConstructors.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/FixTypeConstructors.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/HoistConstants.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/HoistConstants.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/IntroduceVertexIndexID.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/IntroduceVertexIndexID.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/ReduceInterfaceBlocks.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/ReduceInterfaceBlocks.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteCaseDeclarations.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteCaseDeclarations.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteOutArgs.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteOutArgs.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteUnaddressableReferences.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteUnaddressableReferences.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/SeparateCompoundExpressions.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/SeparateCompoundExpressions.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/SeparateCompoundStructDeclarations.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/SeparateCompoundStructDeclarations.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/TransposeRowMajorMatrices.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/TransposeRowMajorMatrices.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/WrapMain.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/WrapMain.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/FlagSamplersWithTexelFetch.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/FlagSamplersWithTexelFetch.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/RewriteInterpolateAtOffset.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/RewriteInterpolateAtOffset.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/DriverUniform.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/DriverUniform.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/IntermRebuild.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/IntermRebuild.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/NodeType.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceArrayOfMatrixVarying.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceArrayOfMatrixVarying.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceClipCullDistanceVariable.cpp + ../../../third_party/angle/LICENSE @@ -43289,10 +43294,8 @@ ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/TransformFeedback ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/TransformFeedbackMtl.mm + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/file_hooking/shader_cache_file_hooking.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/mtl_format_table_autogen.mm + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_2_0_ios_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_2_0_macos_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_2_1_ios_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_2_1_macos_autogen.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_ios_autogen.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_macos_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_src_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/CommandProcessor.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/CommandProcessor.h + ../../../third_party/angle/LICENSE @@ -43327,24 +43330,9 @@ ORIGIN: ../../../third_party/angle/src/libANGLE/validationES31_autogen.h + ../.. ORIGIN: ../../../third_party/angle/src/libANGLE/validationES32_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/validationES3_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/validationESEXT_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL11_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL12_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL13_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL14_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL15_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL1_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL21_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL2_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL31_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL32_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL33_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL3_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL41_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL42_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL43_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL44_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL45_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL46_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/validationGL4_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libEGL/libEGL_autogen.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libEGL/libEGL_autogen.def + ../../../third_party/angle/LICENSE @@ -43399,97 +43387,96 @@ FILE: ../../../third_party/angle/src/common/gl/cgl/FunctionsCGL.h FILE: ../../../third_party/angle/src/common/system_utils_apple.cpp FILE: ../../../third_party/angle/src/common/vulkan/vulkan_icd.cpp FILE: ../../../third_party/angle/src/common/vulkan/vulkan_icd.h -FILE: ../../../third_party/angle/src/compiler/translator/DriverUniformMetal.cpp -FILE: ../../../third_party/angle/src/compiler/translator/DriverUniformMetal.h FILE: ../../../third_party/angle/src/compiler/translator/ImmutableString_ESSL_autogen.cpp FILE: ../../../third_party/angle/src/compiler/translator/ImmutableString_autogen.cpp FILE: ../../../third_party/angle/src/compiler/translator/SymbolTable_ESSL_autogen.cpp FILE: ../../../third_party/angle/src/compiler/translator/SymbolTable_autogen.cpp FILE: ../../../third_party/angle/src/compiler/translator/SymbolTable_autogen.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/AddExplicitTypeCasts.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/AddExplicitTypeCasts.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/AstHelpers.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/AstHelpers.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DebugSink.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DiscoverDependentFunctions.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DiscoverDependentFunctions.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DiscoverEnclosingFunctionTraverser.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/DiscoverEnclosingFunctionTraverser.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/EmitMetal.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/FixTypeConstructors.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/FixTypeConstructors.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/HoistConstants.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/HoistConstants.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IdGen.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IdGen.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IntermRebuild.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IntroduceVertexIndexID.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/IntroduceVertexIndexID.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Layout.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Layout.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/MapFunctionsToDefinitions.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/MapFunctionsToDefinitions.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/MapSymbols.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/MapSymbols.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ModifyStruct.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ModifyStruct.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Name.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Name.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Pipeline.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Pipeline.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ReduceInterfaceBlocks.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ReduceInterfaceBlocks.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/Reference.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteCaseDeclarations.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteCaseDeclarations.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteOutArgs.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteOutArgs.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewritePipelines.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewritePipelines.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteUnaddressableReferences.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteUnaddressableReferences.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundExpressions.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundExpressions.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SkippingTraverser.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SymbolEnv.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/SymbolEnv.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ToposortStructs.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ToposortStructs.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/TransposeRowMajorMatrices.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/TransposeRowMajorMatrices.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/WrapMain.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/WrapMain.h FILE: ../../../third_party/angle/src/compiler/translator/ValidateBarrierFunctionCall.cpp FILE: ../../../third_party/angle/src/compiler/translator/ValidateBarrierFunctionCall.h FILE: ../../../third_party/angle/src/compiler/translator/ValidateClipCullDistance.cpp FILE: ../../../third_party/angle/src/compiler/translator/ValidateClipCullDistance.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ConvertUnsupportedConstructorsToFunctionCalls.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ConvertUnsupportedConstructorsToFunctionCalls.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/AsNode.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/AstHelpers.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/AstHelpers.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/DebugSink.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/DiscoverDependentFunctions.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/DiscoverDependentFunctions.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/DiscoverEnclosingFunctionTraverser.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/DiscoverEnclosingFunctionTraverser.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/DriverUniformMetal.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/DriverUniformMetal.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/EmitMetal.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/EmitMetal.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/IdGen.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/IdGen.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/IntermRebuild.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/IntermRebuild.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/Layout.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/Layout.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/MapFunctionsToDefinitions.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/MapFunctionsToDefinitions.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/MapSymbols.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/MapSymbols.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/ModifyStruct.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/ModifyStruct.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/Name.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/Name.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/NodeType.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/Pipeline.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/Pipeline.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/ProgramPrelude.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/ProgramPrelude.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/Reference.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/RewritePipelines.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/RewritePipelines.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/SkippingTraverser.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/SymbolEnv.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/SymbolEnv.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/ToposortStructs.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/ToposortStructs.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/TranslatorMSL.cpp +FILE: ../../../third_party/angle/src/compiler/translator/msl/TranslatorMSL.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ForcePrecisionQualifier.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ForcePrecisionQualifier.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RecordUniformBlocksWithLargeArrayMember.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/RecordUniformBlocksWithLargeArrayMember.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/FlagSamplersWithTexelFetch.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/FlagSamplersWithTexelFetch.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/RewriteInterpolateAtOffset.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/RewriteInterpolateAtOffset.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_util/AsNode.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RecordUniformBlocksWithLargeArrayMember.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/RecordUniformBlocksWithLargeArrayMember.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/AddExplicitTypeCasts.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/AddExplicitTypeCasts.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/ConvertUnsupportedConstructorsToFunctionCalls.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/ConvertUnsupportedConstructorsToFunctionCalls.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/FixTypeConstructors.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/FixTypeConstructors.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/HoistConstants.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/HoistConstants.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/IntroduceVertexIndexID.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/IntroduceVertexIndexID.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/ReduceInterfaceBlocks.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/ReduceInterfaceBlocks.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteCaseDeclarations.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteCaseDeclarations.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteOutArgs.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteOutArgs.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteUnaddressableReferences.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteUnaddressableReferences.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/SeparateCompoundExpressions.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/SeparateCompoundExpressions.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/SeparateCompoundStructDeclarations.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/SeparateCompoundStructDeclarations.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/TransposeRowMajorMatrices.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/TransposeRowMajorMatrices.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/WrapMain.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/WrapMain.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/FlagSamplersWithTexelFetch.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/FlagSamplersWithTexelFetch.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/RewriteInterpolateAtOffset.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/RewriteInterpolateAtOffset.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/DriverUniform.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/DriverUniform.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_util/IntermRebuild.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_util/IntermRebuild.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_util/NodeType.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceArrayOfMatrixVarying.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceArrayOfMatrixVarying.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/ReplaceClipCullDistanceVariable.cpp @@ -43582,10 +43569,8 @@ FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/TransformFeedbackMt FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/TransformFeedbackMtl.mm FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/file_hooking/shader_cache_file_hooking.cpp FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/mtl_format_table_autogen.mm -FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_2_0_ios_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_2_0_macos_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_2_1_ios_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_2_1_macos_autogen.h +FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_ios_autogen.h +FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_macos_autogen.h FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/shaders/mtl_internal_shaders_src_autogen.h FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/CommandProcessor.cpp FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/CommandProcessor.h @@ -43620,24 +43605,9 @@ FILE: ../../../third_party/angle/src/libANGLE/validationES31_autogen.h FILE: ../../../third_party/angle/src/libANGLE/validationES32_autogen.h FILE: ../../../third_party/angle/src/libANGLE/validationES3_autogen.h FILE: ../../../third_party/angle/src/libANGLE/validationESEXT_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL11_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL12_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL13_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL14_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL15_autogen.h FILE: ../../../third_party/angle/src/libANGLE/validationGL1_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL21_autogen.h FILE: ../../../third_party/angle/src/libANGLE/validationGL2_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL31_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL32_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL33_autogen.h FILE: ../../../third_party/angle/src/libANGLE/validationGL3_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL41_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL42_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL43_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL44_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL45_autogen.h -FILE: ../../../third_party/angle/src/libANGLE/validationGL46_autogen.h FILE: ../../../third_party/angle/src/libANGLE/validationGL4_autogen.h FILE: ../../../third_party/angle/src/libEGL/libEGL_autogen.cpp FILE: ../../../third_party/angle/src/libEGL/libEGL_autogen.def @@ -43779,13 +43749,13 @@ ORIGIN: ../../../third_party/angle/src/common/spirv/spirv_instruction_parser_aut ORIGIN: ../../../third_party/angle/src/common/spirv/spirv_types.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/vulkan/libvulkan_loader.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/vulkan/libvulkan_loader.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/BuildSPIRV.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/BuildSPIRV.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/Operator_autogen.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputSPIRV.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/OutputSPIRV.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateTypeSizeLimitations.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/ValidateTypeSizeLimitations.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/spirv/BuildSPIRV.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/spirv/BuildSPIRV.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/spirv/OutputSPIRV.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/spirv/OutputSPIRV.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampIndirectIndices.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampIndirectIndices.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/DeclarePerVertexBlocks.cpp + ../../../third_party/angle/LICENSE @@ -43793,10 +43763,10 @@ ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/DeclarePerVe ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteArrayOfArrayOfOpaqueUniforms.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateFragColorData.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateFragColorData.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/RewriteR32fImages.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/RewriteR32fImages.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateFragColorData.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateFragColorData.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/RewriteR32fImages.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/RewriteR32fImages.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/FindPreciseNodes.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_util/FindPreciseNodes.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/CLBitField.h + ../../../third_party/angle/LICENSE @@ -43953,13 +43923,13 @@ FILE: ../../../third_party/angle/src/common/spirv/spirv_instruction_parser_autog FILE: ../../../third_party/angle/src/common/spirv/spirv_types.h FILE: ../../../third_party/angle/src/common/vulkan/libvulkan_loader.cpp FILE: ../../../third_party/angle/src/common/vulkan/libvulkan_loader.h -FILE: ../../../third_party/angle/src/compiler/translator/BuildSPIRV.cpp -FILE: ../../../third_party/angle/src/compiler/translator/BuildSPIRV.h FILE: ../../../third_party/angle/src/compiler/translator/Operator_autogen.h -FILE: ../../../third_party/angle/src/compiler/translator/OutputSPIRV.cpp -FILE: ../../../third_party/angle/src/compiler/translator/OutputSPIRV.h FILE: ../../../third_party/angle/src/compiler/translator/ValidateTypeSizeLimitations.cpp FILE: ../../../third_party/angle/src/compiler/translator/ValidateTypeSizeLimitations.h +FILE: ../../../third_party/angle/src/compiler/translator/spirv/BuildSPIRV.cpp +FILE: ../../../third_party/angle/src/compiler/translator/spirv/BuildSPIRV.h +FILE: ../../../third_party/angle/src/compiler/translator/spirv/OutputSPIRV.cpp +FILE: ../../../third_party/angle/src/compiler/translator/spirv/OutputSPIRV.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampIndirectIndices.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/ClampIndirectIndices.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/DeclarePerVertexBlocks.cpp @@ -43967,10 +43937,10 @@ FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/DeclarePerVert FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.h FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewriteArrayOfArrayOfOpaqueUniforms.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateFragColorData.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateFragColorData.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/RewriteR32fImages.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/RewriteR32fImages.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateFragColorData.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateFragColorData.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/RewriteR32fImages.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/RewriteR32fImages.h FILE: ../../../third_party/angle/src/compiler/translator/tree_util/FindPreciseNodes.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_util/FindPreciseNodes.h FILE: ../../../third_party/angle/src/libANGLE/CLBitField.h @@ -44248,21 +44218,21 @@ ORIGIN: ../../../third_party/angle/src/common/backtrace_utils_noop.cpp + ../../. ORIGIN: ../../../third_party/angle/src/common/frame_capture_utils.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/frame_capture_utils.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/BaseTypes.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ConstantNames.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/GuardFragDepthWrite.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/GuardFragDepthWrite.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/msl/ConstantNames.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/RewritePixelLocalStorage.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AggregateAssignArraysInSSBOs.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AggregateAssignArraysInSSBOs.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AggregateAssignStructsInSSBOs.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AggregateAssignStructsInSSBOs.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateAdvancedBlendEquations.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateAdvancedBlendEquations.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateDithering.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateDithering.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateYUVBuiltIns.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateYUVBuiltIns.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AggregateAssignArraysInSSBOs.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AggregateAssignArraysInSSBOs.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AggregateAssignStructsInSSBOs.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AggregateAssignStructsInSSBOs.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/GuardFragDepthWrite.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/GuardFragDepthWrite.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateAdvancedBlendEquations.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateAdvancedBlendEquations.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateDithering.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateDithering.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateYUVBuiltIns.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateYUVBuiltIns.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/image_util/AstcDecompressor.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/image_util/AstcDecompressor.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/image_util/AstcDecompressorNoOp.cpp + ../../../third_party/angle/LICENSE @@ -44329,21 +44299,21 @@ FILE: ../../../third_party/angle/src/common/backtrace_utils_noop.cpp FILE: ../../../third_party/angle/src/common/frame_capture_utils.cpp FILE: ../../../third_party/angle/src/common/frame_capture_utils.h FILE: ../../../third_party/angle/src/compiler/translator/BaseTypes.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/ConstantNames.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/GuardFragDepthWrite.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/GuardFragDepthWrite.h +FILE: ../../../third_party/angle/src/compiler/translator/msl/ConstantNames.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/RewritePixelLocalStorage.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AggregateAssignArraysInSSBOs.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AggregateAssignArraysInSSBOs.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AggregateAssignStructsInSSBOs.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/d3d/AggregateAssignStructsInSSBOs.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateAdvancedBlendEquations.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateAdvancedBlendEquations.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateDithering.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateDithering.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateYUVBuiltIns.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateYUVBuiltIns.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AggregateAssignArraysInSSBOs.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AggregateAssignArraysInSSBOs.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AggregateAssignStructsInSSBOs.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/hlsl/AggregateAssignStructsInSSBOs.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/GuardFragDepthWrite.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/GuardFragDepthWrite.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateAdvancedBlendEquations.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateAdvancedBlendEquations.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateDithering.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateDithering.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateYUVBuiltIns.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateYUVBuiltIns.h FILE: ../../../third_party/angle/src/image_util/AstcDecompressor.cpp FILE: ../../../third_party/angle/src/image_util/AstcDecompressor.h FILE: ../../../third_party/angle/src/image_util/AstcDecompressorNoOp.cpp @@ -44462,14 +44432,20 @@ LIBRARY: angle ORIGIN: ../../../third_party/angle/src/common/FixedQueue.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/platform_helpers.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/common/platform_helpers.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteInterpolants.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteInterpolants.h + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateFramebufferFetch.cpp + ../../../third_party/angle/LICENSE -ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateFramebufferFetch.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteInterpolants.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteInterpolants.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateFramebufferFetch.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateFramebufferFetch.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/GlobalMutex.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/GlobalMutex.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/ShareGroup.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/ShareGroup.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/SharedContextMutex.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/SharedContextMutex.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/context_private_call_gl.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/context_private_call_gl_autogen.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/context_private_call_gles.cpp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/context_private_call_gles_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/blocklayoutMetal.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/blocklayoutMetal.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/metal/mtl_library_cache.h + ../../../third_party/angle/LICENSE @@ -44486,20 +44462,28 @@ ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/SecondaryCommand ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/SecondaryCommandPool.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/ShareGroupVk.cpp + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/ShareGroupVk.h + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/CopyImageToBuffer.comp + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/CopyImageToBuffer.comp.json + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libGLESv2/egl_context_lock_autogen.h + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libGLESv2/egl_context_lock_impl.h + ../../../third_party/angle/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/angle/src/common/FixedQueue.h FILE: ../../../third_party/angle/src/common/platform_helpers.cpp FILE: ../../../third_party/angle/src/common/platform_helpers.h -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteInterpolants.cpp -FILE: ../../../third_party/angle/src/compiler/translator/TranslatorMetalDirect/RewriteInterpolants.h -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateFramebufferFetch.cpp -FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/vulkan/EmulateFramebufferFetch.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteInterpolants.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/msl/RewriteInterpolants.h +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateFramebufferFetch.cpp +FILE: ../../../third_party/angle/src/compiler/translator/tree_ops/spirv/EmulateFramebufferFetch.h FILE: ../../../third_party/angle/src/libANGLE/GlobalMutex.cpp FILE: ../../../third_party/angle/src/libANGLE/GlobalMutex.h +FILE: ../../../third_party/angle/src/libANGLE/ShareGroup.cpp +FILE: ../../../third_party/angle/src/libANGLE/ShareGroup.h FILE: ../../../third_party/angle/src/libANGLE/SharedContextMutex.cpp FILE: ../../../third_party/angle/src/libANGLE/SharedContextMutex.h +FILE: ../../../third_party/angle/src/libANGLE/context_private_call_gl.cpp +FILE: ../../../third_party/angle/src/libANGLE/context_private_call_gl_autogen.h +FILE: ../../../third_party/angle/src/libANGLE/context_private_call_gles.cpp +FILE: ../../../third_party/angle/src/libANGLE/context_private_call_gles_autogen.h FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/blocklayoutMetal.cpp FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/blocklayoutMetal.h FILE: ../../../third_party/angle/src/libANGLE/renderer/metal/mtl_library_cache.h @@ -44516,6 +44500,8 @@ FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/SecondaryCommandPo FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/SecondaryCommandPool.h FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/ShareGroupVk.cpp FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/ShareGroupVk.h +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/CopyImageToBuffer.comp +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/CopyImageToBuffer.comp.json FILE: ../../../third_party/angle/src/libGLESv2/egl_context_lock_autogen.h FILE: ../../../third_party/angle/src/libGLESv2/egl_context_lock_impl.h ---------------------------------------------------------------------------------------------------- From 3b283f29caf6d2adae13bd4e6a39049da55478e5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 14:28:10 -0400 Subject: [PATCH 133/211] Roll Skia from 219ca2581ab2 to 4e518e65fea0 (2 revisions) (#43777) https://skia.googlesource.com/skia.git/+log/219ca2581ab2..4e518e65fea0 2023-07-18 brianosman@google.com CPU backend: Don't ignore paint alpha with opaque shader + color filter 2023-07-18 jvanverth@google.com [graphite] Fill out semaphore support for Vulkan swapchain. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bbd60e8ce8213..4909acf07704e 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '219ca2581ab232039feccb895b8171e9ec3a814c', + 'skia_revision': '4e518e65fea051eb148e8078bfce88c72aeb6c6d', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 01a42ca0c6635..f9b2e826b2a69 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0dfc9487e68f41284fc2b74e4e70b40d +Signature: 492e9ac27edf845d6fd14a615d4a460e ==================================================================================================== LIBRARY: etc1 From 3647ba20b5cac1f29dbf43683d05dc8584bd2c39 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Tue, 18 Jul 2023 14:28:13 -0400 Subject: [PATCH 134/211] [web] sync => isSync , scuba => golden (#43699) This PR addresses some of the items in https://github.com/flutter/flutter/issues/100394 --- lib/ui/painting.dart | 6 +++--- lib/web_ui/lib/src/engine/util.dart | 6 +++--- .../test/engine/recording_canvas_test.dart | 2 +- .../canvas_draw_image_golden_test.dart | 4 ++-- .../drawing/canvas_rrect_golden_test.dart | 2 +- .../test/html/drawing/conic_golden_test.dart | 6 +++--- lib/web_ui/test/html/paragraph/helper.dart | 2 +- .../{text_scuba.dart => text_goldens.dart} | 21 +++++++------------ .../text_multiline_clipping_golden_test.dart | 18 +++++++--------- .../paragraph/text_overflow_golden_test.dart | 6 +++--- .../text_placeholders_golden_test.dart | 8 +++---- .../test/html/path_to_svg_golden_test.dart | 6 +++--- .../html/recording_canvas_golden_test.dart | 4 ++-- lib/web_ui/test/html/screenshot.dart | 4 ++-- 14 files changed, 43 insertions(+), 52 deletions(-) rename lib/web_ui/test/html/paragraph/{text_scuba.dart => text_goldens.dart} (85%) diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 238dcd5047caf..0a6ccf33315d2 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -6933,10 +6933,10 @@ Future _futurize(_Callbacker callbacker) { // If the callback synchronously throws an error, then synchronously // rethrow that error instead of adding it to the completer. This // prevents the Zone from receiving an uncaught exception. - bool sync = true; + bool isSync = true; final String? error = callbacker((T? t) { if (t == null) { - if (sync) { + if (isSync) { throw Exception('operation failed'); } else { completer.completeError(Exception('operation failed')); @@ -6945,7 +6945,7 @@ Future _futurize(_Callbacker callbacker) { completer.complete(t); } }); - sync = false; + isSync = false; if (error != null) { throw Exception(error); } diff --git a/lib/web_ui/lib/src/engine/util.dart b/lib/web_ui/lib/src/engine/util.dart index 13f2377d71ecb..bd4ad5b0ef333 100644 --- a/lib/web_ui/lib/src/engine/util.dart +++ b/lib/web_ui/lib/src/engine/util.dart @@ -52,10 +52,10 @@ Future futurize(Callbacker callbacker) { // If the callback synchronously throws an error, then synchronously // rethrow that error instead of adding it to the completer. This // prevents the Zone from receiving an uncaught exception. - bool sync = true; + bool isSync = true; final String? error = callbacker((T? t) { if (t == null) { - if (sync) { + if (isSync) { throw Exception('operation failed'); } else { completer.completeError(Exception('operation failed')); @@ -64,7 +64,7 @@ Future futurize(Callbacker callbacker) { completer.complete(t); } }); - sync = false; + isSync = false; if (error != null) { throw Exception(error); } diff --git a/lib/web_ui/test/engine/recording_canvas_test.dart b/lib/web_ui/test/engine/recording_canvas_test.dart index 6ff41a2bff902..14ebcb824aea6 100644 --- a/lib/web_ui/test/engine/recording_canvas_test.dart +++ b/lib/web_ui/test/engine/recording_canvas_test.dart @@ -187,7 +187,7 @@ void testMain() { }); }); - test('preserve old scuba test behavior', () { + test('preserve old golden test behavior', () { final RRect outer = RRect.fromRectAndCorners(const Rect.fromLTRB(10, 20, 30, 40)); final RRect inner = diff --git a/lib/web_ui/test/html/drawing/canvas_draw_image_golden_test.dart b/lib/web_ui/test/html/drawing/canvas_draw_image_golden_test.dart index 6c6de54d98300..66e7d425b5885 100644 --- a/lib/web_ui/test/html/drawing/canvas_draw_image_golden_test.dart +++ b/lib/web_ui/test/html/drawing/canvas_draw_image_golden_test.dart @@ -382,7 +382,7 @@ Future testMain() async { region: region); } finally { // The page is reused across tests, so remove the element after taking the - // Scuba screenshot. + // screenshot. sceneElement.remove(); } }); @@ -421,7 +421,7 @@ Future testMain() async { region: region); } finally { // The page is reused across tests, so remove the element after taking the - // Scuba screenshot. + // screenshot. sceneElement.remove(); } }); diff --git a/lib/web_ui/test/html/drawing/canvas_rrect_golden_test.dart b/lib/web_ui/test/html/drawing/canvas_rrect_golden_test.dart index 31f5d45e7b1c3..3a7e1359a9013 100644 --- a/lib/web_ui/test/html/drawing/canvas_rrect_golden_test.dart +++ b/lib/web_ui/test/html/drawing/canvas_rrect_golden_test.dart @@ -17,7 +17,7 @@ Future testMain() async { late RecordingCanvas rc; const Rect canvasRect = Rect.fromLTWH(0, 0, 500, 100); - const Rect region = Rect.fromLTWH(8, 8, 500, 100); // Compensate for old scuba tester padding + const Rect region = Rect.fromLTWH(8, 8, 500, 100); // Compensate for old golden tester padding final SurfacePaint niceRRectPaint = SurfacePaint() ..color = const Color.fromRGBO(250, 186, 218, 1.0) // #fabada diff --git a/lib/web_ui/test/html/drawing/conic_golden_test.dart b/lib/web_ui/test/html/drawing/conic_golden_test.dart index 535f7d1529b91..851b97801de7e 100644 --- a/lib/web_ui/test/html/drawing/conic_golden_test.dart +++ b/lib/web_ui/test/html/drawing/conic_golden_test.dart @@ -14,9 +14,9 @@ void main() { } Future testMain() async { - const Rect region = Rect.fromLTWH(8, 8, 600, 800); // Compensate for old scuba tester padding + const Rect region = Rect.fromLTWH(8, 8, 600, 800); // Compensate for old golden tester padding - Future testPath(Path path, String scubaFileName) async { + Future testPath(Path path, String goldenFileName) async { const Rect canvasBounds = Rect.fromLTWH(0, 0, 600, 800); final BitmapCanvas bitmapCanvas = BitmapCanvas(canvasBounds, RenderStrategy()); @@ -38,7 +38,7 @@ Future testMain() async { domDocument.body!.append(bitmapCanvas.rootElement); canvas.apply(bitmapCanvas, canvasBounds); - await matchGoldenFile('$scubaFileName.png', region: region); + await matchGoldenFile('$goldenFileName.png', region: region); bitmapCanvas.rootElement.remove(); } diff --git a/lib/web_ui/test/html/paragraph/helper.dart b/lib/web_ui/test/html/paragraph/helper.dart index 23d56fa27cc0b..855da331fb625 100644 --- a/lib/web_ui/test/html/paragraph/helper.dart +++ b/lib/web_ui/test/html/paragraph/helper.dart @@ -85,7 +85,7 @@ Future takeScreenshot( await matchGoldenFile('$fileName.png', region: region); } finally { // The page is reused across tests, so remove the element after taking the - // Scuba screenshot. + // screenshot. sceneElement.remove(); } } diff --git a/lib/web_ui/test/html/paragraph/text_scuba.dart b/lib/web_ui/test/html/paragraph/text_goldens.dart similarity index 85% rename from lib/web_ui/test/html/paragraph/text_scuba.dart rename to lib/web_ui/test/html/paragraph/text_goldens.dart index 1f2c5cbb352c6..f6542a54e8221 100644 --- a/lib/web_ui/test/html/paragraph/text_scuba.dart +++ b/lib/web_ui/test/html/paragraph/text_goldens.dart @@ -13,29 +13,24 @@ import 'package:web_engine_tester/golden_tester.dart'; import 'helper.dart'; /// Class that controls some details of how screenshotting is made. -/// -/// (For Googlers: Not really related with internal Scuba anymore) -class EngineScubaTester { - EngineScubaTester(this.viewportSize); +class EngineGoldenTester { + EngineGoldenTester(this.viewportSize); - /// The size of the browser window used in this scuba test. + /// The size of the browser window used in this golden test. final ui.Size viewportSize; - static Future initialize( + static Future initialize( {ui.Size viewportSize = const ui.Size(2400, 1800)}) async { assert(() { if (viewportSize.width.ceil() != viewportSize.width || viewportSize.height.ceil() != viewportSize.height) { throw Exception( - 'Scuba only supports integer screen sizes, but found: $viewportSize'); - } - if (viewportSize.width < 472) { - throw Exception('Scuba does not support screen width smaller than 472'); + 'Gold only supports integer screen sizes, but found: $viewportSize'); } return true; }()); - return EngineScubaTester(viewportSize); + return EngineGoldenTester(viewportSize); } ui.Rect get viewportRegion => @@ -51,7 +46,7 @@ class EngineScubaTester { ); } - /// Prepares the DOM and inserts all the necessary nodes, then invokes scuba's + /// Prepares the DOM and inserts all the necessary nodes, then invokes Gold's /// screenshot diffing. /// /// It also cleans up the DOM after itself. @@ -81,7 +76,7 @@ class EngineScubaTester { ); } finally { // The page is reused across tests, so remove the element after taking the - // Scuba screenshot. + // screenshot. sceneElement.remove(); } } diff --git a/lib/web_ui/test/html/paragraph/text_multiline_clipping_golden_test.dart b/lib/web_ui/test/html/paragraph/text_multiline_clipping_golden_test.dart index 3350c212c97a3..375cc68eeb681 100644 --- a/lib/web_ui/test/html/paragraph/text_multiline_clipping_golden_test.dart +++ b/lib/web_ui/test/html/paragraph/text_multiline_clipping_golden_test.dart @@ -9,7 +9,7 @@ import 'package:ui/src/engine.dart'; import 'package:ui/ui.dart'; import '../../common/test_initialization.dart'; -import 'text_scuba.dart'; +import 'text_goldens.dart'; typedef PaintTest = void Function(RecordingCanvas recordingCanvas); @@ -18,8 +18,7 @@ void main() { } Future testMain() async { - // Scuba doesn't give us viewport smaller than 472px wide. - final EngineScubaTester scuba = await EngineScubaTester.initialize( + final EngineGoldenTester goldenTester = await EngineGoldenTester.initialize( viewportSize: const Size(600, 600), ); @@ -42,7 +41,7 @@ Future testMain() async { // [DomCanvas] doesn't support clip commands. if (canvas is! DomCanvas) { paintTest(canvas, paintTextWithClipRect); - return scuba.diffCanvasScreenshot( + return goldenTester.diffCanvasScreenshot( canvas, 'multiline_text_clipping_rect'); } return null; @@ -55,7 +54,7 @@ Future testMain() async { // [DomCanvas] doesn't support clip commands. if (canvas is! DomCanvas) { paintTest(canvas, paintTextWithClipRectTranslated); - return scuba.diffCanvasScreenshot( + return goldenTester.diffCanvasScreenshot( canvas, 'multiline_text_clipping_rect_translate'); } return null; @@ -68,7 +67,7 @@ Future testMain() async { // [DomCanvas] doesn't support clip commands. if (canvas is! DomCanvas) { paintTest(canvas, paintTextWithClipRoundRect); - return scuba.diffCanvasScreenshot( + return goldenTester.diffCanvasScreenshot( canvas, 'multiline_text_clipping_roundrect'); } return null; @@ -81,7 +80,7 @@ Future testMain() async { // [DomCanvas] doesn't support clip commands. if (canvas is! DomCanvas) { paintTest(canvas, paintTextWithClipPath); - return scuba.diffCanvasScreenshot( + return goldenTester.diffCanvasScreenshot( canvas, 'multiline_text_clipping_path'); } return null; @@ -93,11 +92,8 @@ Future testMain() async { (EngineCanvas canvas) { // [DomCanvas] doesn't support clip commands. if (canvas is! DomCanvas) { - // TODO(mdebbar): https://github.com/flutter/flutter/issues/35086 - // This produces the wrong result when using [BitmapCanvas] but without - // the new experimental canvas mode. paintTest(canvas, paintTextWithClipStack); - return scuba.diffCanvasScreenshot( + return goldenTester.diffCanvasScreenshot( canvas, 'multiline_text_clipping_stack1'); } return null; diff --git a/lib/web_ui/test/html/paragraph/text_overflow_golden_test.dart b/lib/web_ui/test/html/paragraph/text_overflow_golden_test.dart index 6d922396d99fe..26744ec87da9a 100644 --- a/lib/web_ui/test/html/paragraph/text_overflow_golden_test.dart +++ b/lib/web_ui/test/html/paragraph/text_overflow_golden_test.dart @@ -9,7 +9,7 @@ import 'package:ui/src/engine.dart'; import 'package:ui/ui.dart' hide window; import '../../common/test_initialization.dart'; -import 'text_scuba.dart'; +import 'text_goldens.dart'; const String threeLines = 'First\nSecond\nThird'; const String veryLong = @@ -21,7 +21,7 @@ void main() { } Future testMain() async { - final EngineScubaTester scuba = await EngineScubaTester.initialize( + final EngineGoldenTester goldenTester = await EngineGoldenTester.initialize( viewportSize: const Size(800, 800), ); @@ -55,6 +55,6 @@ Future testMain() async { canvas.drawParagraph(p, offset); offset = offset.translate(0, p.height + 10); - return scuba.diffCanvasScreenshot(canvas, 'text_max_lines'); + return goldenTester.diffCanvasScreenshot(canvas, 'text_max_lines'); }); } diff --git a/lib/web_ui/test/html/paragraph/text_placeholders_golden_test.dart b/lib/web_ui/test/html/paragraph/text_placeholders_golden_test.dart index 15a961ced6343..916d28a2838d3 100644 --- a/lib/web_ui/test/html/paragraph/text_placeholders_golden_test.dart +++ b/lib/web_ui/test/html/paragraph/text_placeholders_golden_test.dart @@ -8,14 +8,14 @@ import 'package:ui/ui.dart'; import '../../common/test_initialization.dart'; import 'helper.dart'; -import 'text_scuba.dart'; +import 'text_goldens.dart'; void main() { internalBootstrapBrowserTest(() => testMain); } Future testMain() async { - final EngineScubaTester scuba = await EngineScubaTester.initialize( + final EngineGoldenTester goldenTester = await EngineGoldenTester.initialize( viewportSize: const Size(600, 600), ); @@ -42,7 +42,7 @@ Future testMain() async { } recordingCanvas.endRecording(); recordingCanvas.apply(canvas, screenRect); - return scuba.diffCanvasScreenshot(canvas, 'text_with_placeholders'); + return goldenTester.diffCanvasScreenshot(canvas, 'text_with_placeholders'); }); testEachCanvas('text alignment and placeholders', (EngineCanvas canvas) { @@ -75,7 +75,7 @@ Future testMain() async { ); recordingCanvas.endRecording(); recordingCanvas.apply(canvas, screenRect); - return scuba.diffCanvasScreenshot(canvas, 'text_align_with_placeholders'); + return goldenTester.diffCanvasScreenshot(canvas, 'text_align_with_placeholders'); }); } diff --git a/lib/web_ui/test/html/path_to_svg_golden_test.dart b/lib/web_ui/test/html/path_to_svg_golden_test.dart index c40471289cf21..048803defc5a4 100644 --- a/lib/web_ui/test/html/path_to_svg_golden_test.dart +++ b/lib/web_ui/test/html/path_to_svg_golden_test.dart @@ -22,9 +22,9 @@ enum PaintMode { Future testMain() async { const Rect region = - Rect.fromLTWH(8, 8, 600, 400); // Compensate for old scuba tester padding + Rect.fromLTWH(8, 8, 600, 400); // Compensate for old golden tester padding - Future testPath(Path path, String scubaFileName, + Future testPath(Path path, String goldenFileName, {SurfacePaint? paint, PaintMode mode = PaintMode.kStrokeAndFill}) async { const Rect canvasBounds = Rect.fromLTWH(0, 0, 600, 400); @@ -72,7 +72,7 @@ Future testMain() async { sceneElement.append(bitmapCanvas.rootElement); sceneElement.append(svgElement); - await matchGoldenFile('$scubaFileName.png', + await matchGoldenFile('$goldenFileName.png', region: region); bitmapCanvas.rootElement.remove(); diff --git a/lib/web_ui/test/html/recording_canvas_golden_test.dart b/lib/web_ui/test/html/recording_canvas_golden_test.dart index 8326648b4b0ab..071754c1fe3ac 100644 --- a/lib/web_ui/test/html/recording_canvas_golden_test.dart +++ b/lib/web_ui/test/html/recording_canvas_golden_test.dart @@ -35,7 +35,7 @@ Future testMain() async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect, RenderStrategy()); - // Draws the estimated bounds so we can spot the bug in Scuba. + // Draws the estimated bounds so we can spot the bug in Gold. engineCanvas ..save() ..drawRect( @@ -63,7 +63,7 @@ Future testMain() async { await matchGoldenFile('paint_bounds_for_$fileName.png', region: region); } finally { // The page is reused across tests, so remove the element after taking the - // Scuba screenshot. + // screenshot. sceneElement.remove(); } } diff --git a/lib/web_ui/test/html/screenshot.dart b/lib/web_ui/test/html/screenshot.dart index 445744c51cfb4..f27177caab9b5 100644 --- a/lib/web_ui/test/html/screenshot.dart +++ b/lib/web_ui/test/html/screenshot.dart @@ -48,7 +48,7 @@ Future canvasScreenshot( region: region); } finally { // The page is reused across tests, so remove the element after taking the - // Scuba screenshot. + // screenshot. sceneElement.remove(); } } @@ -65,7 +65,7 @@ Future sceneScreenshot(SurfaceSceneBuilder sceneBuilder, String fileName, region: region); } finally { // The page is reused across tests, so remove the element after taking the - // Scuba screenshot. + // screenshot. sceneElement?.remove(); } } From 3bf25bd5e62c1f8a209d992fbe7d1b5f26f52bc4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 15:50:03 -0400 Subject: [PATCH 135/211] Roll Skia from 4e518e65fea0 to 0adae44dd9cd (6 revisions) (#43779) https://skia.googlesource.com/skia.git/+log/4e518e65fea0..0adae44dd9cd 2023-07-18 armansito@google.com [graphite][PathAtlas]: Apply correct subpixel offset 2023-07-18 cmumford@google.com [canvaskit] Add error check when loading SKP 2023-07-18 cmumford@google.com [debugger] only serialize audit trail when enabled 2023-07-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from cb22d697262b to f0752efcbdb2 (7 revisions) 2023-07-18 herb@google.com Fix data going empty for fuzz 2023-07-18 brianosman@google.com Remove obsolete MSKP corpus information If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4909acf07704e..d14f51dc77747 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '4e518e65fea051eb148e8078bfce88c72aeb6c6d', + 'skia_revision': '0adae44dd9cde8036ade811077929016bab485bd', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f9b2e826b2a69..7988926d9850e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 492e9ac27edf845d6fd14a615d4a460e +Signature: 8d58d09f39e7ebe6a32fe8f31c9f312a ==================================================================================================== LIBRARY: etc1 From fe7898491e93cda1af88318fb2d29f4c588b7861 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 16:26:02 -0400 Subject: [PATCH 136/211] Roll Skia from 0adae44dd9cd to 9a0f6d82a6f5 (1 revision) (#43780) https://skia.googlesource.com/skia.git/+log/0adae44dd9cd..9a0f6d82a6f5 2023-07-18 jvanverth@google.com [graphite] Rename VulkanTestContext files to GraphiteVulkanTestContext. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index d14f51dc77747..085de9f0d1068 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '0adae44dd9cde8036ade811077929016bab485bd', + 'skia_revision': '9a0f6d82a6f5e5eed3ecdb1460411aa686ebec6f', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 74c458423045d91df6481f615c75a3465fff2ead Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 16:56:00 -0400 Subject: [PATCH 137/211] Roll Fuchsia Linux SDK from ixKM7wyMrqmPDaQ11... to ZABO4Om1vToxhI394... (#43782) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 085de9f0d1068..e5bc6f98bdacb 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'ixKM7wyMrqmPDaQ1116iI_iWW_tr97Vb1gGiPG1BmLAC' + 'version': 'ZABO4Om1vToxhI394y3P1X0fu7gcLz2d65YNEeNTBZUC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', From 7f5e337302785fa61d957e74bf05dde4e5cde222 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 17:11:05 -0400 Subject: [PATCH 138/211] Roll Skia from 9a0f6d82a6f5 to dcc56df202cc (1 revision) (#43784) https://skia.googlesource.com/skia.git/+log/9a0f6d82a6f5..dcc56df202cc 2023-07-18 johnstiles@google.com Remove swizzle-parsing logic from SkSL parser. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e5bc6f98bdacb..eb35b15205b11 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '9a0f6d82a6f5e5eed3ecdb1460411aa686ebec6f', + 'skia_revision': 'dcc56df202cca129edda3f6f8bae04ec306b264e', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7988926d9850e..c14ead343aa58 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8d58d09f39e7ebe6a32fe8f31c9f312a +Signature: fa6e714d84cfa2e3c4abaf6c933cf1a4 ==================================================================================================== LIBRARY: etc1 From 2de9db3abd8d1c8d1309ee7d2854585c142bdbd0 Mon Sep 17 00:00:00 2001 From: Brandon DeRosier Date: Tue, 18 Jul 2023 14:52:13 -0700 Subject: [PATCH 139/211] [Impeller] Fix GL_NUM_EXTENSIONS check for desktop GL (#43785) Follow-up fix for https://github.com/flutter/engine/pull/43727. Fixes the GL playground on MacOS. --- .../renderer/backend/gles/description_gles.cc | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/impeller/renderer/backend/gles/description_gles.cc b/impeller/renderer/backend/gles/description_gles.cc index 08817abb5546c..a2142c1191444 100644 --- a/impeller/renderer/backend/gles/description_gles.cc +++ b/impeller/renderer/backend/gles/description_gles.cc @@ -82,28 +82,29 @@ DescriptionGLES::DescriptionGLES(const ProcTableGLES& gl) sl_version_string_(GetGLString(gl, GL_SHADING_LANGUAGE_VERSION)) { is_es_ = DetermineIfES(gl_version_string_); - if (is_es_) { + auto gl_version = DetermineVersion(gl_version_string_); + if (!gl_version.has_value()) { + VALIDATION_LOG << "Could not determine GL version."; + return; + } + gl_version_ = gl_version.value(); + + // GL_NUM_EXTENSIONS is only available in OpenGL 3+ and OpenGL ES 3+ + if (gl_version_.IsAtLeast(Version(3, 0, 0))) { + int extension_count = 0; + gl.GetIntegerv(GL_NUM_EXTENSIONS, &extension_count); + for (auto i = 0; i < extension_count; i++) { + extensions_.insert(GetGLStringi(gl, GL_EXTENSIONS, i)); + } + } else { const auto extensions = GetGLString(gl, GL_EXTENSIONS); std::stringstream extensions_stream(extensions); std::string extension; while (std::getline(extensions_stream, extension, ' ')) { extensions_.insert(extension); } - } else { - int extension_count = 0; - gl.GetIntegerv(GL_NUM_EXTENSIONS, &extension_count); - for (auto i = 0; i < extension_count; i++) { - extensions_.insert(GetGLStringi(gl, GL_EXTENSIONS, i)); - } } - auto gl_version = DetermineVersion(gl_version_string_); - if (!gl_version.has_value()) { - VALIDATION_LOG << "Could not determine GL version."; - return; - } - gl_version_ = gl_version.value(); - auto sl_version = DetermineVersion(sl_version_string_); if (!sl_version.has_value()) { VALIDATION_LOG << "Could not determine SL version."; From 9506f1dc03abcbef4e617e1cf376a2da4abf934f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 18:17:09 -0400 Subject: [PATCH 140/211] Roll ANGLE from 52fe3116ead9 to 6eea5ff4db82 (1 revision) (#43789) https://chromium.googlesource.com/angle/angle.git/+log/52fe3116ead9..6eea5ff4db82 2023-07-18 hailinzhang@google.com Vulkan: fix default MSAA framebuffer clear issue. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/angle-flutter-engine Please CC bdero@google.com,flutter-engine@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: http://anglebug.com/new To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index eb35b15205b11..c8b11506f0d56 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + '52fe3116ead9a5de51ddad17fcb14bf8ecb3a69d', + Var('chromium_git') + '/angle/angle.git' + '@' + '6eea5ff4db822c87bdb5d5540503037f5aaec33e', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 26aba6cf62ba8..c8715f52c1eb6 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: fa9eed750baa6faa409b1ddefa19d3b5 +Signature: bc8b7108161e822d0d666c7d0a1c1ba9 ==================================================================================================== LIBRARY: angle From b3c510b6e93cb2d32ab048f49c5150248ad49332 Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Tue, 18 Jul 2023 15:22:11 -0700 Subject: [PATCH 141/211] Remove obsolete legacy engine builds from staging (#43790) These builds have had engine v2 variants running for nearly a quarter or more in most cases, and they are now not serving much of a purpose. Additionally, during MTV peak hours, queue times and therefore overall cycle times are getting too long, and we should be freeing up these resources. --- .ci.yaml | 241 ------------------------------------------------------- 1 file changed, 241 deletions(-) diff --git a/.ci.yaml b/.ci.yaml index de36b1c73e24b..4546366a1b1ad 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -82,26 +82,6 @@ platform_properties: os: Windows-10 targets: - - name: Linux Android AOT Engine - recipe: engine/engine - bringup: true - properties: - build_android_aot: "true" - android_sdk_license: \n24333f8a63b6825ea9c5514f83c2829b004d1fee - android_sdk_preview_license: \n84831b9409646a918e30573bab4c9c91346d8abd - timeout: 60 - - - name: Linux Android Debug Engine - recipe: engine/engine - bringup: true - properties: - build_android_debug: "true" - build_android_jit_release: "true" - build_android_vulkan: "true" - android_sdk_license: \n24333f8a63b6825ea9c5514f83c2829b004d1fee - android_sdk_preview_license: \n84831b9409646a918e30573bab4c9c91346d8abd - timeout: 60 - - name: Linux linux_android_emulator_tests enabled_branches: - main @@ -192,17 +172,6 @@ targets: } timeout: 60 - - name: Linux Benchmarks - bringup: true - enabled_branches: - - main - recipe: engine/engine_metrics - presubmit: false - properties: - build_host: "true" - upload_metrics: "false" - timeout: 60 - - name: Linux linux_benchmarks enabled_branches: - main @@ -260,80 +229,6 @@ targets: - main timeout: 60 - - name: Linux Host Engine - recipe: engine/engine - bringup: true - properties: - gclient_variables: >- - {"download_emsdk": true} - build_host: "true" - cores: "32" - timeout: 60 - - - name: Linux Unopt - bringup: true - recipe: engine/engine_unopt - properties: - clobber: "true" - timeout: 60 - - - name: Linux License - bringup: true - recipe: engine/engine_license - properties: - clobber: "true" - timeout: 60 - - - name: Linux Host clang-tidy - bringup: true - recipe: engine/engine_lint - properties: - cores: "32" - lint_android: "false" - lint_host: "true" - timeout: 60 - runIf: - - DEPS - - .ci.yaml - - .clang-tidy - - tools/** - - ci/** - - "**.h" - - "**.c" - - "**.cc" - - "**.fbs" - - "**.frag" - - "**.vert" - - - name: Linux Android clang-tidy - bringup: true - recipe: engine/engine_lint - properties: - cores: "32" - lint_android: "true" - lint_host: "false" - timeout: 60 - runIf: - - DEPS - - .ci.yaml - - .clang-tidy - - tools/** - - ci/** - - "**.h" - - "**.c" - - "**.cc" - - "**.fbs" - - "**.frag" - - "**.vert" - - "**.py" # Run pylint on the fastest clang-tidy builder. - - - name: Linux Arm Host Engine - bringup: true - recipe: engine/engine_arm - properties: - build_host: "true" - timeout: 90 - - name: Linux linux_fuchsia bringup: true recipe: engine_v2/engine_v2 @@ -454,24 +349,6 @@ targets: - ci/** - flutter_frontend_server/** - - name: Mac Android AOT Engine - bringup: true - recipe: engine/engine - properties: - android_sdk_license: \n24333f8a63b6825ea9c5514f83c2829b004d1fee - android_sdk_preview_license: \n84831b9409646a918e30573bab4c9c91346d8abd - build_android_aot: "true" - timeout: 60 - - - name: Mac Host Engine - bringup: true - recipe: engine/engine - properties: - gclient_variables: >- - {"download_emsdk": true} - build_host: "true" - timeout: 75 - - name: Linux mac_android_aot_engine recipe: engine_v2/engine_v2 timeout: 60 @@ -527,75 +404,6 @@ targets: add_recipes_cq: "true" timeout: 60 - - name: Mac Unopt - bringup: true - recipe: engine/engine_unopt - properties: - $flutter/osx_sdk : >- - { - "sdk_version": "14e300c", - "runtime_versions": - [ - "ios-16-4_14e300c", - "ios-16-2_14c18" - ] - } - timeout: 75 - - - name: Mac Host clang-tidy - bringup: true - recipe: engine/engine_lint - properties: - cpu: arm64 - lint_host: "true" - lint_ios: "false" - timeout: 120 - runIf: - - DEPS - - .ci.yaml - - .clang-tidy - - tools/** - - ci/** - - "**.h" - - "**.c" - - "**.cc" - - "**.fbs" - - "**.frag" - - "**.vert" - - "**.m" - - "**.mm" - - - name: Mac iOS clang-tidy - bringup: true - recipe: engine/engine_lint - properties: - cpu: arm64 - lint_host: "false" - lint_ios: "true" - timeout: 120 - runIf: - - DEPS - - .ci.yaml - - .clang-tidy - - tools/** - - ci/** - - "**.h" - - "**.c" - - "**.cc" - - "**.fbs" - - "**.frag" - - "**.vert" - - "**.m" - - "**.mm" - - - name: Mac iOS Engine - bringup: true - recipe: engine/engine - properties: - build_ios: "true" - ios_debug: "true" - timeout: 60 - - name: Mac mac_ios_engine recipe: engine_v2/engine_v2 timeout: 60 @@ -623,24 +431,6 @@ targets: cpu: arm64 config_name: mac_impeller_cmake_example - - name: Windows Android AOT Engine - bringup: true - recipe: engine/engine - properties: - build_android_aot: "true" - android_sdk_license: \n24333f8a63b6825ea9c5514f83c2829b004d1fee - android_sdk_preview_license: \n84831b9409646a918e30573bab4c9c91346d8abd - timeout: 60 - - - name: Windows Host Engine - bringup: true - recipe: engine/engine - timeout: 60 - properties: - gclient_variables: >- - {"download_emsdk": true} - build_host: "true" - - name: Windows windows_android_aot_engine recipe: engine_v2/engine_v2 timeout: 60 @@ -679,37 +469,6 @@ targets: properties: config_name: windows_unopt - - name: Windows Unopt - bringup: true - recipe: engine/engine_unopt - properties: - add_recipes_cq: "true" - timeout: 75 - - - name: Mac iOS Engine Profile - bringup: true - recipe: engine/engine - properties: - build_ios: "true" - ios_profile: "true" - timeout: 90 - runIf: - - DEPS - - .ci.yaml - - ci/** - - - name: Mac iOS Engine Release - bringup: true - recipe: engine/engine - properties: - build_ios: "true" - ios_release: "true" - timeout: 90 - runIf: - - DEPS - - .ci.yaml - - ci/** - - name: Linux ci_yaml engine roller bringup: true recipe: infra/ci_yaml From a001a7787f1fea0421f072ee8825c82c209ee6fc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 18:52:11 -0400 Subject: [PATCH 142/211] Roll Skia from dcc56df202cc to 280fb8391187 (1 revision) (#43793) https://skia.googlesource.com/skia.git/+log/dcc56df202cc..280fb8391187 2023-07-18 lovisolo@google.com [bazel] //gm/BUILD.bazel and cc_test_with_flags: Fix broken targets. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index c8b11506f0d56..75a47a1624cfa 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'dcc56df202cca129edda3f6f8bae04ec306b264e', + 'skia_revision': '280fb8391187beeb00dc66774d88c97f5a5cc87f', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From aa4f7b87668ff1e602c34b04e8d52b29ccad4691 Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Tue, 18 Jul 2023 16:44:11 -0700 Subject: [PATCH 143/211] Increase engine v2 orchestrator timeouts (#43788) This PR increases orchestrator timeouts to avoid the case where subjobs that are making progress after a long queue time may be needlessly cancelled if the orchestrator runs over a too-small timeout. --- .ci.yaml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.ci.yaml b/.ci.yaml index 4546366a1b1ad..0e69d4803b246 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -241,13 +241,13 @@ targets: - name: Linux linux_clang_tidy recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: config_name: linux_clang_tidy - name: Linux linux_arm_host_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -257,7 +257,7 @@ targets: - name: Linux linux_host_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -267,7 +267,7 @@ targets: - name: Linux linux_host_desktop_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -277,7 +277,7 @@ targets: - name: Linux linux_android_aot_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -287,7 +287,7 @@ targets: - name: Linux linux_android_debug_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -297,7 +297,7 @@ targets: - name: Linux linux_license recipe: engine_v2/builder - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" config_name: linux_license @@ -305,7 +305,7 @@ targets: - name: Linux linux_web_engine recipe: engine_v2/engine_v2 - timeout: 70 + timeout: 120 properties: release_build: "true" config_name: linux_web_engine @@ -314,7 +314,7 @@ targets: - name: Linux linux_unopt recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: config_name: linux_unopt @@ -351,7 +351,7 @@ targets: - name: Linux mac_android_aot_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -361,7 +361,7 @@ targets: - name: Mac mac_clang_tidy recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: config_name: mac_clang_tidy runIf: @@ -380,7 +380,7 @@ targets: - name: Mac mac_host_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -402,11 +402,11 @@ targets: properties: config_name: mac_unopt add_recipes_cq: "true" - timeout: 60 + timeout: 120 - name: Mac mac_ios_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -433,7 +433,7 @@ targets: - name: Windows windows_android_aot_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -443,7 +443,7 @@ targets: - name: Windows windows_host_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 properties: add_recipes_cq: "true" release_build: "true" @@ -453,7 +453,7 @@ targets: - name: Windows windows_arm_host_engine recipe: engine_v2/engine_v2 - timeout: 60 + timeout: 120 enabled_branches: # Don't run this on release branches - main @@ -465,7 +465,7 @@ targets: - name: Windows windows_unopt recipe: engine_v2/builder - timeout: 60 + timeout: 120 properties: config_name: windows_unopt From 765febb5c9e7b64daaa28235d4395d683e3fdd5d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 21:22:27 -0400 Subject: [PATCH 144/211] Roll Dart SDK from ec95774043ec to c184cac2d22f (1 revision) (#43794) https://dart.googlesource.com/sdk.git/+log/ec95774043ec..c184cac2d22f 2023-07-18 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-324.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 75a47a1624cfa..58d340bfef0a1 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'ec95774043ecef404ea7bd359d7d40f15b6b5508', + 'dart_revision': 'c184cac2d22f18176126097a19fc78a1f9a10f40', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 78ab306c39c932330100db4b4fdb6d13fc404cde Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 22:04:06 -0400 Subject: [PATCH 145/211] Roll Skia from 280fb8391187 to d1d2b623799e (1 revision) (#43795) https://skia.googlesource.com/skia.git/+log/280fb8391187..d1d2b623799e 2023-07-19 michaelludwig@google.com [skif] Implement image delegate for graphite If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 58d340bfef0a1..7130995920036 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '280fb8391187beeb00dc66774d88c97f5a5cc87f', + 'skia_revision': 'd1d2b623799e2aafb8c1112d177ca00e5c796ef0', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c14ead343aa58..aeca7ebdf7d11 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fa6e714d84cfa2e3c4abaf6c933cf1a4 +Signature: 5a0941d088d05555943e73f4da872d75 ==================================================================================================== LIBRARY: etc1 From 10597e05e3f41b2a94ff12d06a9498df16624477 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 22:25:02 -0400 Subject: [PATCH 146/211] Roll ANGLE from 6eea5ff4db82 to b32d661389a6 (1 revision) (#43796) https://chromium.googlesource.com/angle/angle.git/+log/6eea5ff4db82..b32d661389a6 2023-07-19 angle-autoroll@skia-public.iam.gserviceaccount.com Manual roll vulkan-deps from aa35b58fce7d to 831910dbe1f3 (8 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/angle-flutter-engine Please CC bdero@google.com,flutter-engine@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: http://anglebug.com/new To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 7130995920036..e9e6c79161c2a 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + '6eea5ff4db822c87bdb5d5540503037f5aaec33e', + Var('chromium_git') + '/angle/angle.git' + '@' + 'b32d661389a6442eb96d1513c0f8dafbb7a3949d', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', From c726caee9b9d7d1327f4f7297ad1c363f22b6759 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Jul 2023 23:25:03 -0400 Subject: [PATCH 147/211] Roll Skia from d1d2b623799e to caf0d191bd07 (1 revision) (#43797) https://skia.googlesource.com/skia.git/+log/d1d2b623799e..caf0d191bd07 2023-07-19 brianosman@google.com Ignore failing test on IntelIrisXe + Vulkan If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index e9e6c79161c2a..084caef278c20 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'd1d2b623799e2aafb8c1112d177ca00e5c796ef0', + 'skia_revision': 'caf0d191bd07a6743f99ae1432584721f2614caf', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From f2e5a91abde8f4f3ff09535d6dfe3e308d797d68 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 01:12:12 -0400 Subject: [PATCH 148/211] Roll Dart SDK from c184cac2d22f to 9f5e86b4c108 (1 revision) (#43798) https://dart.googlesource.com/sdk.git/+log/c184cac2d22f..9f5e86b4c108 2023-07-19 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-325.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 084caef278c20..81dd70aa7e61b 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'c184cac2d22f18176126097a19fc78a1f9a10f40', + 'dart_revision': '9f5e86b4c108674736b8f95cbc62106073fec860', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index 51e467e384bb3..036048f001849 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: ee281eb9eea39635eaf18ffd3268bee4 +Signature: 64c35ee79f78b8bddec264eea9e052c2 ==================================================================================================== LIBRARY: dart From 72dcf9723cae6430c668ffd53ac5e300a1b36f3f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 01:22:22 -0400 Subject: [PATCH 149/211] Roll Skia from caf0d191bd07 to 9062ca6a691c (1 revision) (#43799) https://skia.googlesource.com/skia.git/+log/caf0d191bd07..9062ca6a691c 2023-07-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn from 937670a0ed00 to beaf20f90f1b (19 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 81dd70aa7e61b..4271a2c6f3d84 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'caf0d191bd07a6743f99ae1432584721f2614caf', + 'skia_revision': '9062ca6a691cda303616495c7f1d8a2d9c63f866', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 21ebeb2984b190273060c01308803295d8ea959e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 02:08:00 -0400 Subject: [PATCH 150/211] Roll Fuchsia Mac SDK from SCshjyIlymHWD9W4D... to Iqf3gYJ8Vkq8k8l3O... (#43800) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4271a2c6f3d84..7fe82571af24f 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'SCshjyIlymHWD9W4DLT9CHMS3_5QMCQDb-m-DLzJi78C' + 'version': 'Iqf3gYJ8Vkq8k8l3OYAUUrwZJ8eEi2wVosGclDAPxtwC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From 1f20ee84d86f8b945df3b057b7b98dabfc10a9cf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 02:16:11 -0400 Subject: [PATCH 151/211] Roll Skia from 9062ca6a691c to 035b12a03918 (3 revisions) (#43801) https://skia.googlesource.com/skia.git/+log/9062ca6a691c..035b12a03918 2023-07-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from c10b5129407a to 55a98e279ec6 2023-07-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 0733bf3a7728 to c10b5129407a (7 revisions) 2023-07-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 151fa797ee3e to 4e401427f8dd (1 revision) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7fe82571af24f..71d8e66b9b5e8 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '9062ca6a691cda303616495c7f1d8a2d9c63f866', + 'skia_revision': '035b12a03918d04d5c132d9328cbe846e2b472b0', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index aeca7ebdf7d11..952d8b68dc940 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5a0941d088d05555943e73f4da872d75 +Signature: 1d4c4f239c4f38d6911dbb6f729f0443 ==================================================================================================== LIBRARY: etc1 From 90983880d061d78520fb9f7d7bf97833b766fea9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 03:06:06 -0400 Subject: [PATCH 152/211] Roll Skia from 035b12a03918 to c03050eb2b65 (1 revision) (#43802) https://skia.googlesource.com/skia.git/+log/035b12a03918..c03050eb2b65 2023-07-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from ec2948c5ed1e to b32d661389a6 (7 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 71d8e66b9b5e8..b731e35f7caf9 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '035b12a03918d04d5c132d9328cbe846e2b472b0', + 'skia_revision': 'c03050eb2b657df568e07eef5c116b5d04db236b', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 0ec057fcf4b8a0031a9ffeb7818ae9cd88ca6c7f Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 19 Jul 2023 00:14:06 -0700 Subject: [PATCH 153/211] Fix the rules for determining whether a blur image filter is valid (#43791) See https://github.com/flutter/flutter/issues/130318 --- display_list/effects/dl_image_filter.h | 12 ++++++++---- .../effects/dl_image_filter_unittests.cc | 17 +++++++++++++++++ ...one SE (3rd generation)_16.2_simulator.png | Bin 20583 -> 29524 bytes 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/display_list/effects/dl_image_filter.h b/display_list/effects/dl_image_filter.h index 6e6c68f196ec8..f7350e8bd767d 100644 --- a/display_list/effects/dl_image_filter.h +++ b/display_list/effects/dl_image_filter.h @@ -229,11 +229,15 @@ class DlBlurImageFilter final : public DlImageFilter { static std::shared_ptr Make(SkScalar sigma_x, SkScalar sigma_y, DlTileMode tile_mode) { - if (SkScalarIsFinite(sigma_x) && sigma_x > SK_ScalarNearlyZero && - SkScalarIsFinite(sigma_y) && sigma_y > SK_ScalarNearlyZero) { - return std::make_shared(sigma_x, sigma_y, tile_mode); + if (!SkScalarIsFinite(sigma_x) || !SkScalarIsFinite(sigma_y)) { + return nullptr; } - return nullptr; + if (sigma_x < SK_ScalarNearlyZero && sigma_y < SK_ScalarNearlyZero) { + return nullptr; + } + sigma_x = (sigma_x < SK_ScalarNearlyZero) ? 0 : sigma_x; + sigma_y = (sigma_y < SK_ScalarNearlyZero) ? 0 : sigma_y; + return std::make_shared(sigma_x, sigma_y, tile_mode); } std::shared_ptr shared() const override { diff --git a/display_list/effects/dl_image_filter_unittests.cc b/display_list/effects/dl_image_filter_unittests.cc index 422cb28dbb454..20aa47fc2fd10 100644 --- a/display_list/effects/dl_image_filter_unittests.cc +++ b/display_list/effects/dl_image_filter_unittests.cc @@ -209,6 +209,23 @@ TEST(DisplayListImageFilter, BlurBounds) { TestBounds(filter, input_bounds, expected_output_bounds); } +TEST(DisplayListImageFilter, BlurZeroSigma) { + std::shared_ptr filter = + DlBlurImageFilter::Make(0, 0, DlTileMode::kMirror); + ASSERT_EQ(filter, nullptr); + filter = DlBlurImageFilter::Make(3, SK_ScalarNaN, DlTileMode::kMirror); + ASSERT_EQ(filter, nullptr); + filter = DlBlurImageFilter::Make(SK_ScalarNaN, 3, DlTileMode::kMirror); + ASSERT_EQ(filter, nullptr); + filter = + DlBlurImageFilter::Make(SK_ScalarNaN, SK_ScalarNaN, DlTileMode::kMirror); + ASSERT_EQ(filter, nullptr); + filter = DlBlurImageFilter::Make(3, 0, DlTileMode::kMirror); + ASSERT_NE(filter, nullptr); + filter = DlBlurImageFilter::Make(0, 3, DlTileMode::kMirror); + ASSERT_NE(filter, nullptr); +} + TEST(DisplayListImageFilter, DilateConstructor) { DlDilateImageFilter filter(5.0, 6.0); } diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_negative_backdrop_filter_iPhone SE (3rd generation)_16.2_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_negative_backdrop_filter_iPhone SE (3rd generation)_16.2_simulator.png index bc5162bebdae39fe8d2c50e818cf3e6f5cb94bc7..769f186b1ca4cb60c6bfabc01dacfff5effbbbb4 100644 GIT binary patch literal 29524 zcmeIbX*iU9_&+Rhr(IgyN>mv8GBcL!+As{VXRnwMk`R(DZB!F6gP9S^z9car*;5#E z4P^~k3Ztx<$uidGE8V~6fBauO&x_~9bNr9P;l(W1HQ)7IKIi8=zn6#SjrDf#IJ|>{ zgJU;J|Ew7Y2j>(A2e&d0C-~-Eak?pZ+2U)acbel>v*1tg;XLL73TtG3;5%RaO2?m^PYnP23|Qhwm#qTe_wsh`QKH}spnh&d(W-Beq-vcJAND-Ivl98 zrz~!6ndo!y5k$Qc`XS1*YEiiOrXA4@C;c?wr`+qNUg4%}r*mTGQf;Ucr!tR_AW?Py z8}HtYM~LcQcbu0$@pRBB#!~-;_J^&s{YUjhPxJ}zJ=D)C(;H5!E59qx$u(s<*q0U* z?CWK8yQWsVc1pbV-29#^+FLleczBP!cHLr%ZAmMbUjLx;yz;h0TPTm;ZI1P;6E-@8 zZq|=+^*^^>kw4b-M)>s6V>;_sgAVax<}?-;jsM)*vojJg8F7BwdKKF67gUOL{s+1=)1u1nRXsBG%prd8QggiVjI>0UR%!zMKP|AaH;)>vyxDf3^~ z3dWYgmbF)htSkE;Z(j$Y9O33WvzwmTewq3EasQ4;g!l))D}TJN&R{!dDwK2oXv!a; z%X{+0Z3*Ag_7Si@*p|y!_Soi6*RlNOGHr@P`2Sy;W1sx%i)+}Afa%r`dhF^l-?p!M z(fyi-O_okusZ+Ma}36iGYg3?O8^dhNg{#Y@_WSU;IkaoOt z^KyHK#vh}hz~z4!V-|<<4`eY;MCavsE}diegn}wrw=4b1};lMltm2$8oV}@+P6H zY^sU2<_dc>t6M9OsVphpD;#=ra(I1005vu{t>11KVjhPgprY8l1IcT%1udb=Gwf(> zt)RIH&oMX^?ltgksF|HoX{-O|H*@7y*q5xNofx6&TX9SXPjC%g{Mp^nkvN=~m)DR( zKdJtA`-8sXtR8MeigvD~1)^RGoU*`au0E-|RaWu&P> zc6uQ@oISg`O}xV>sI&_Tnq}Od-N)7ChbO)>!L?W~4wnsX+n^X;=-ib+PH$nI^?8NQRozB5Cv(8>{uPLH>b`n}9fbZzN(NnBwMF9c^i5XqqaY2kK_ z9@pWsq;^}z{Wg=(m03iWpk;6l6K&~Hl#=*iIICZ&x#njXsfyNJ{L zS9mdelKmBd1pSzn5cCO@XQohKsNBzxL~b~{J)MgjoLFPJFI`GevZW#rsbw#DpCm&j z`I<~SR=jN*A3fVKI_UGP!mS_9mXu#DSeuoPUTtZq>~HxiOkVPzjx~wuLOTiZCSl7! zP)BCwtF>u-q|=jbRoPTtE*be48kzjf>I6g>= zWjURAEN+;RR0Qr|o0c_j1anLWQ&obwS?n_(stv(YMRvVJqX+E2Y)T?3Mzv z*ud3gDH80bXz5d`aVYtOQARw$(ueRNAuzwK?L!(Dx&11iRaA6nMarxq>CLUh8(&F` zpKThi&XJsjm;P+Updc6d9O=X3$B(_?pLYp}yj&iUmtUI^4qIiVIAPg_eCU!(N$1Gk z)|Kf`+bw{=Q=_$`1TvJGa2N1?3X)%fu`^x>b58R;7XrQ*PL5LPaVDb*{yiJ^f=3Xv zjr;Pl3HLN+JT7$Mn`JIyZ6R8FX2r& zEf?MrL2_=2B_FWnv(Ht)E1EwXW$na74dijs+vW#`E9Za9ZmjIDeD0oeB(Vn3g!Bus zw_}-TL_>sAAOeN4vSOmpB+;ghF1F5HH1f$oWX`8yZnm3{@aohYI+Xkg&wiSp!rRu#{}z6 z=c=2*F13pb?bA<2rGF29pL`c#bZu#AWo@pkYf0ema!hiAor0t>ap*od`QE_oX6}d- z8QRr?md7l8we2&eMQp*Fj2AxnZBA>86Ai*CqjR-uBh||zAJq98^5UhBiw z<}Hg&qhF)i&~v`G^G~x#q?`&lYmd>+nl+~Uz)H&+`+Lgj&yQ=1P6I0uDO&Top}HH! zJ~(K7a~ZK23i#}p2DEsJ_Ys?{R1-^YW-B?>;5mt9p0eB*`~WkB!gH~-R~tYpDOD}5 z{L9Chg3V}q|CoT96&}S%#CE|lONUpPua^2otl(v<620~bgt%(9Y5r|?wo@oUsXEYR zN(`^(_)MvytPL&HtJt<&GbwJvi{Bd!onoeaJqOdKhc+qONV8hjmiwxgX{-eKlt_f| zxjE4dG1OZ(zu!bk-!Dak-HelAg4;qEabq!0XTE<7Ysu1Y_8@CrBTg{u_FAJv%f3yI zcMb8g?ABHX)@0{-n(udRS9>U}HJ6#=}@%q14^;%*U#ir(n;5@q51; zN1;L&+Xl2(<&wqz3X9?3=e3oTsqy?u`7NAh2DMkT1$lVinuMD;s`{inVfH&6zn;_j z>!7Wp!N!U{Bh_Tg3cD(wAa4jQPw@TQ60Cz4{^xok2tlriq-y>(&(=KlRSRrs$H|P1 zFF3*}d~cUm6DaP{^?w2!F#D?0gRNPbVfW(`_%`5yE9^RZd4yD~@4I1yw{SYiTxb8D z<*)Ai>$SIVy23zk(|!BOp1*RZ#F=37s){kWWB1pP7aVvSygVlz zR!7^Aa?pebXo7zJ3eVprW;ql1yPVbxL+@@Ns$9#+Cn!@8-Xt>$-pSDmT_h{U9&KU+vdB zqd(IXdH{Aoq25$}Lu8FX>LO`R#kGyp#s5o}_FA}WKe)pWaZc}XTDT-XUG>XP_Evrj z7}3d`+tGLp$%4Dn4udKbTDj!!#M+V1FC59j-w{5ryzS;A6+cM*054{Wx9tVb zu5bahYb&KQb*`NWeSGD!>NFEAnU>%MDF5!l1CH>5g9~4@D+@FqbPZ$yF-ckMUpl_M zBEdSUTJsfMPmhcUAPCeJhbxk~O zr25h9@FDwa)9Dc@i_xPuzb#V4US4%$)FrXM2TokO(qlLn%+(p@J=%6cmaPWlV7#J& zTvJ$c=yHFrjW4tyKm0DGZ*kPhL`ax{4O=mBzfZI?&Gdn0`~|%o&QK=53etpt(7|4> zmM;}q2X(NwM$N=?QtQDt?7ZI60Z;0)`xLWs{bKOw2PR?tB)gl zr4y3!t^Klxc#1OcLrD{(Dx*kRb1=i9|CXS4=m<&BvkDv1v<4L9;x^FSo_}okr;VS- zHkkV7NKoz*TPD*F#$9C?DWZSqgon2RTL1|M^E3bH~!j`V#yq5aNL3eG>?%;(X+RI(?w#&qrXSg(N)@)Itr z>o$VZNNBrUFLHc!_A|>lEaWQu%0#efK}BTE6nE#E)8%}ytb;W5Z-d1?*SVG zl&9JMisFO}S3eDoEE2tA;V%#<7G3JRv~Xpu(`1}2D6Srdbx)k?sLe|`c(N$J!Sn^@ zUfgV9yR*=M2Ft(CBrn#D&pw_&IqI)fX6ey<+EN6l-t`DD;-i<<+RyCI&W@R!x%zpR zTqz&aTQ|hc7EeG^bf4`|YsetGM9uJYe(ikIs;>~pIN4x9Mn&elF4B$P=OHBA-#IrE zdEPlJhhh1GBI7vssFE~Mq_kq3a}m8O)(zXNPo{P?Dx!`*g!yLqpyM3lInfCEP+ejf z9jOvMoPP`9_50>OmhwlG zn&=V)jx&6&4nUJ%Ozy+H2%`f}M)i_hGgG<9Txm06bo4(*IJtxfz>qzEVD36~cCb>A zVr3IAh`dYVbK<)q)nHGTz{f)GfVl7TD2Y=X_ZfVI=qHX`j;`>&Y|_vWqNJ)1W$AVM-(@!^!Mn`WQ*@dc3PHf&GK4&6FTOa~d-} zmoOYV86$z`0_L_`gx}C)1bjjU}7g8S}&(r7~ z;+D|@B-r#xX)()KYA7G%lVQfx`q4p>ar1W+PQF$MTe3{2 zvJPTOc=1WLnv_hESd(ats2S7)MIt@OWd||t7%1MkGfBmyD=;G~qRWmea2Uyr zZAG@RSq8w(0d)LIB&#n#TEQ2M4ddg~J)znJZwb}ZD42*{U^0JcL~|wdToWTrd`-S+ zn;Fk=X}ciJI%Nr?3#-DW)#r3e8oR#qMFk*}|pGW74X`*TrV%ieJkZJJ`AlZf?GlQ6Nvr%r#Uj>q~xsU<%f^9FGTwD)e z$8-_CWH-{)o?OH@R~sLOuX-#dzFp9~_)^v9SQ6Iua1Qn#viHuxo|aC20F20h5I5Rp zOqtewZg%eb$H~Bq!eg243e`eYOM$widqnn^%SJwsH=)dCuDm`{tO2^)b++XK%g*{% z%VDZ`9>P!4-*dk`_IXZXlZ+eIvDm@`6Mr9}R7>DeZbR=t()fX)B36MEo z{HO`O{Y0@AY|BW8L=8@mMfE&k^&l>6R1QRE-tY?s|5~Mp$5gDK>22;iAl6su9?z$N(I8-{eq3LoM^{jXCAJwRes=tHV z?OSgq>=l|7abrZ8C`5?p4E6%cGEm=L{wzm_dDf@i_PjuXUCT$fNb$0U5A?XFnU^x0 zSaGpxBJexSeo~!rqbTLm`3CA1SF%lKLwjl5#S+hx*z5laTwXDF|F6^Z2yO@5j*ydN zfx+f5=pD=LcMOodMFTHqb5O5HuXG=gM^e;+M~GtfssUWR0zv}CBMS6N z>2QOCNZ+saw~}y(abOvj-{_K3_Gn)n}*|h?=@Fk`?0{EM%`_BxlLL*I-L16u~rBUkf6W{FAOp`v0`s0WOp7BGe>g{`gS`?K}oX^;d}w4wc(>3ah#L8<|o+&eo7=#>$~ zLqy;R1gC9N$p07({lr~{Uf%gCN@VLEgdy%Di<*LAYwEr<1pQ4YQjOS%NQHtw7NxwW z?h-a6Q%hMClGG=A>__w?MHJGj-hrtbNs6}p_-rzNd!}Gkl=5hn`wBhYO&33wuXiRG zu-nfcf=Vry=ZdUX+*1C-1))*`$Oha}Lwgf(2Ry7=5|W{Xmd2t}O@wmpyi~;wKM=hB z1VOuDR+SGaW_jlBqFilD^pnd%7-15|hV>QV+)7+1Mq4d21A~y=zm*;I$vF!}*StEH zGcR>K$lV3dZ*6ue^m1G#A<(HsJde9%U1$IXP&_PSREZ2<_G?L*^K*CmdX91BAsQAJ zsvpH(`WE3rwq+-#U>Dt_siG?uD_2sq z-!EDMnMEo(iaZ~XIiUkawEzP^QsvSdY*h68%n3s~W<;2=tY*HSf>Hv3%RHKkEPyHE zT3E^#!sle<%_4X39d!>ud-{G!L!j>yZv^$`tlatc^GIFe>wn0JipWq`4JM?o+>M$P z?akNs4SCyqz>L#KYvAH;%b#6DYjU)ywC&yYlgk>7*-cPyD~{K^G#fC{T5xswWH0N< zH-IeA*$Sk&_L$rEq@BZigID{riemF}_M0=>TQ7{N578v3(ED{W=Ov4mKu%5C8HS9u z_PE^7V8)#3a5mBxk;VOhJJ&(dDse>iWKgBR_Ov_n#WpeDc08*AET$r5!XBq`lms({ zEs?wo$Ynxq*qjfd4)oi_=SYuiM0U|RAwJAlvm&z7<&nGnU{Xp{DRbSw|0mMweEN-z zDa!;GGbd_$tGq~4yV*d75XA~pZ-ildXbTAJzGXe|?(7vv+VeQfS7p3mUj_eVsZZ&B zcI3c@UL5;yWV$v4NH@v><&N5$@LBxKnGm|^=b6QRjM$>FsBI0$ry>vAYF8S2o)J% z%dfl9;k4OP;}vE;bv$t2#3a!tvQ6p5Dl?eXA1b}tcbg`y>5YhF@^+D4vCgX`Sc>XX z@wVGGStw7~6M;!mbWioH0Gc9YZVL0j#5&jOxoaO$$)Yw}GP?ngU%mrMBzYA1crk}} z$7lA3>mW|8LZe>(R#fN+^{Ta#cvZVIq}bs;aF$e&X@HSN!Mx!wRGKR<@4YRV>k=?0omO>hc7e0 zK0y>4VOXMv+O!Gc)6LFMkoTyG})x9!c&Bp6yzWOB}K&3Y?|}muHaDbdY!S<6N*N z3Edgp6>5V%yW5{#Y#K2v)B80(8e!e7b)+|)WM8pjMPQG?Sv$FSzNP?XA#ARnt;NOM zrX@ytgeXo|Q6lzQ%Rb4dQYu!oUShl(4<7T&jL-d-^;r;qqTY!4Xq90Ra`&4TpHFqIrZkVJ+Q(iggL0zc|&)MkIe*LNq$R?vLh zxg_}fw__oF{#BUjQWYb`?m1U0fxO$JM}Z~)ycrsj5o$gkXOoKdfmn4k4bUO;`>%aV7MGC$zHh(AtLmXevCXY5Dqs>f;E8p!p+& z^?awW7aFK_0U(sB_#m44&fyj|4q>w2CMv!W$6f75HKR*=mcFMwMjo+b8H^`6#~+4N z?-7SyT(uL1rX+5rW%@nR^&DXaCDGO?Y%H z&K8@E^2Cb9E<17KZKd(kWB47+9B$uyC=!v=y9pJSzt!+c6lN-TLe(P2SOpH*r6@ zMJPI2{$^tDce*q&bfxX3@yFw5e=hJ>KH&!rdTm9Q5|MV{%23bA8CKe!J12gvo^m4Qe|SZFn@Q+{>Ut znAR0rwjIB(*eFKU^m)~#Bb5gM?q7WhCLgh|>?0oz31Va$ZDVcZYLX2@QW%+m)D-VM=iv7~oImF-~h zp7xnQUt4lw6yO?xxu1&&!q)K6eolB0B;y{c(QL^DI=lmJa)O(m_Qwvc(-_q zL9{PYl&frZS|PZcp1tUU-W`-dx-ognzJu@~{&jqGqmXbO$*{;*z+cWOx21hoj09yV zOqzq|1~BkyPvT2fPlekjBG)dC;&;Tyq8*BF+@P8{6#V|=gD#_ASC(siB~~K|Rj5`N zR?xl^vqYL)lz#IB9&c(I(AJ;q0!;KTI@ne(-N`3YPRGJ19xu?Vwk<8V;NV9eyK}s;S}G;i!pvb_Iy=4HPXSOKv+Hrh_DBG}lrBJ&?Zh6Maa@%MJ8ii!LJTN7K5W46^vCHh4=c@}xR5`&W zRy_fm==rRYX2Sy{70>-aXiXjP%x21wsNsGNkA+mA6TBKx9; z4E#(PM4A>L@a2H3VRN|kJM36SafHNy1M120hpFDbnAjr!f5UELXzud2$4wrUR?+aRM$Fqz{`KB+EM zL)JYY6<4DQWNB1Gt;fHClf5%3_DqQfih(VjK3Z*#uM?xYtW2kw63g_TNXeWd=(MG8 zBcnh!cO`~Izr@to??h;MyT!Y>7f(+;f(u6l9HNWThwFB{kF`YP*n%9=i&$5{&f5WE z`)Y)4-IU|8U7j2{HJKj(Q!rB^v^@_8Z!7DuuJ1d?An3%=}w#>d& zz^i5s6YYsB{T{*V#*=aoEJ*K*&#%k*8;d$^f0c(`O}~%W>C+0yK*Nk`=NT_fdf&ME z39!k=>uHwy4$~I1i~T#Nd|t%{E(o9hRV<>A2Bi(!)72RvlLbMV;KnIK9YUFW;B?Sl zPMZ^yS93>qhEBiWc3qCAC?H=M?==;2{c2_;0!AncCVnWwOQ@t~x&6gE_n(&neh17= z^?g(DK>GAgbN%)JFyJwO0rC_5gqrRhqAd%c)hwgi%a$(&h}!L@LN350embW^_=zy<3EalnvZo+f*fB$yVvGclPp+OADUX+X zY|q=H>*=6@vpNJe4C)`&;HpxuSf2VdPBA6s97JZ4>T3iOT<+{oO((Jbh3A9pP>mN5 zy=u?lgL`!c+22OyBb>~9i1$hMbj4J((B90u)oCIgQGxRd*OR(42JcCbrUL|<3f8CQ z2u2)qX+Cpa z)f)?vmJw+mt7-SU)n!^hY)5e6!ytafOMnIBc5fMd2#(!+0`l-v$u*WSiAA3yy_0p+dC&KZ*JdtgAS-uXTxU=k%(|e4**e8pcIRirJ`5r}RyEU< zNVV-cfW>-Z^&VrT8iqMvbxr#5vJz5m^VWm~Xd2IZ#G$bRjMF63IBzFXM97{WN5i*)9B0j9nmU)3 z$kU~2u@C9LeqC;culOvic6{sZts9yB_Py_$=?Ta$7P?tMD@{=~9uT%XPg9n@hm8_Q zd3zwTmmXw8~H`UU|IEf@-M7j70yC)E^pKIP<}3Sk+||hM|ukCH)G$ zJA^{jmVYsSEz`d-C%?_eK)4=g_U7Y4y!P_m9A#gEbA8YAKoQbAjv#3&?p6m5QOz|L zjamZmgeO=Xs8g>^P*xCsqtlPc6G`Z_^yOdU-^#lp#8Jp`!8W2b2=$0=j9N%htRdam zS6xoaDJ!0-`fbP&0bs!eZGs@)GZHa=WBP8!mi4IkG-z<=i;9WkJj1y|?~2iJ!mFVR zZSoOLB@%c=WLFa|?0{urj#fYc9pW-K#SRk*F5eXjY;y&XS~<^s!0z*oWbM6FF&oYi z9saNz5dM@eW| zqeeJ@JRsU?g0na$q^LLvbNn@+$j^KHtnO~-{gQuMg3|k9z_|fg7#mkzmV>s$6s@p- zefK8>%F|^6r1hgvG8gU|?|tWzpm;-;DmY3kJj-%vR^V{=cH>CqqSL`kH$_@77&N`OR92pU7!X1Gi4t%LGj@otMT5LfuD3L;RTMS^! z{~=Q@?9u3b_Yz0S&%cF!Wt}UA7`l~F)*e8Gm+4C8U>L-3z?=7NVUO5LAhn!)$8$hD z&-1JdxRCXHZGg;E3H)|K;L$dp?&g znSNg342civ0%^6g`jLT(1?9$Jd9%{;RIbC z+o+u4^>p$AcSYzgmrgoPdxFux8hj;^PlZvWtY!o?J?hS@W|510~d5>{YMxMIYtYegz*_Rp-Nft zj+s+MasJ&JneflE~F?4wXL^fW*>P<3|mpZXyMbBR*ml1_;JT0y% zIxZggW8r96o?j?9pAx;!)Cpsah3n9{?=v(!fjVPgfcU`XtZ^LNH& z`yYxW{1FZ8-xI0>H&(9Mf3={6vwFO3%*9@iy$q(A6ZB_o`TauM5~C|zR&Q#Ay}@&$ ztFGNAa*=;a(DP6kS4Y(bY)>E`nNZ<=(n*ixd+!Y7i-J-*im0>y&(2@#H6Vuo3H|s| zYh(EVqAAwCfuMF)Zmdjg`JFCFJcr({Zh45L6m6Q(7@?BirqX2{F`iDU@W~{>2Nb(F zM=>l$zc;nn)StRfiZ0Xp##LFeS8AW781`ygjs~K@ zB0&bzEOGQ%=~IEcJAC$1A6|w7#;GJ0=aDeQRP>brF$f7D7eU8*{{W_*lvdWRqVmB`>#Q$>hGon2f(xV9a;GPV z7C)TxI*Q7oA3N8XZLCN}0>kN}7ZuA&_FuLbhp8l|kxL_LF@y zHFJjjk7crIPbRzJAX&B>H|p9|!iArf`tbE?+wGx-U2x~-ydLBcJT7h_HWqrD;pKyt z-D+S)jqSJP#ZMG6^7&FhyNcTl0tGbyypnVc?WWIPj8_EJ znc8b*c&{;OXS?nbVXdry%Fd=?BUVDF(JruEbFQ8+U$o??=qHV4jrKuxHb8TxH$j% zGy5+FFV6-88;68{z4stJLOdcXkU91XCXMaXK{g?&a=zsuRkcKiCOlRA;daX`lGpij zWV<9%IQHJd*?fwfx4RoE)v{Ps9ckNfVgM5Yy==hwRe|`xzFhH+VLm&lx3HQ)3`W;R zB2+E*s1N+M3JPA2TL05EJWqS&g?_pvtSh3+FOPUDD_;t^6KNSI@R2BRIT^F$?kN5H zmJFFHH7NE8;KaM4pW4ypOoRMnkO+?!xFYqTU3pr0DzL zx!wSZ&vs9u?wWV_f#Y(zBp3TteDx2Cf2>(kzBI9OtkH_oMs6QD9C%tTa$a6tn?21T zJTso7MF(UUb|8H--O5JL86>5)c6;Ly;+RnpZK0?CjlX-Wv?U&hvMILYl8i6uu|v_x zb%xmzCVkPpc3Qbs(UqVZ2%9AWpkZT%j6ENv9IX*+UR)OsLaa&veI17~ih;k6e0mk` z6}|N1Cy($$m7%;`gk5gqz|z@>0}4?)kNaw?!orW4V%M`U?sOx$2ez-UWD?efXZdpm zGO+y7zFuW@WG(I{{0wxVF?PiUCqU1hvxub5y%j}@6N`ERf_eObLdQAtT?Vxd*yl{U zpPwOku>sb<_W>BjZh)m8+|8s0h@Ss^T=LrtafSM*@2jHMW5m$@6RbP8hD|~>eO`RB z+Ji!ggde*Pa@+z}>a&E?Me&pNr!?+-p3BZ{`Fag$^s^ph>5QdDNWc#J591~ao25G} zy0RNYKU_7<9D^&B6W&9IG4(zqfy?zsAPld9ZL>pcj-lnA7mG4z; zAOr}g!j_!99N#MXq9?_xMCmxs5u#LzXcP4PQzSyE*kYELmJ1PWbJ0lt5295vq)coQ z-wnQyR_2hP?}NLksCCTm1BOA%uV8N3A$lg=x*G-`E(qd&+}$F33CD?wJHxy)6pQ9O z<%4cTr=llaKB9{ZL*m;GUG7W*g)0M~2q>x=OWx;N5^v$`{-?%|T&f$ND}fw+7+>D# z64vRgOX%K#1pK?Bf-j(P{h$g%O`*Y0V|-gU%K^jXk8D?4+#b#@)tHUm=Wa$+z16{V z)shF*A=+!mru6i}c5Lj$&RpmV$r|H&N7B$WR|+Y2g=~#{atoSqY2!Jc@~X)~3@c4- z@B8JhzEf)G%s*I5?AIM$&F~J*nRs5jgt;4*rZ`U1g-bqZ>3J?FJB`qezf>}k-Rr+@ zdH;sML44sPCo>{d+*bVM*I>&+(O!~l{Kpa`8Wh4^cx|LW&xI)Di{x-Dq-YtHL&}tG z0LX@Hd)ODv&iw~EuhfL}AlO(@MfEMCY$)wUgg~!5k}+Z+88@ttr0^kgl|0}eT2d`m zjI#F%XtN6f3;#p%`trbJvgRju&aex|!rFat%YFqSo@-JJ7A+ck35z~`^c*OzD;k`i zm3WdaMR^%V;>Siy;M);fjU0#}=0qEDqSiYrEa6V41Z6_BwmtZKN#MMOnHAN}t2o{> zAA;mW-dd1zxbQ0z5HHdP-QgVDizS%Gvg=%IYw-E zPA?4-XNgzmA}kLB(#rBEwHb#fpjg4eGXb9*EIGfHFG1;p%d298aHPzNbFu_bLxi-% zdCs{;0jn>O0!dIRg1B>TjX#o!vyh^H%fZyw>#ZCZJ z#=o^Ks2?J#R90py;v?asA@%-_=r`$)h9vL`rq-9U6wCuwjRdfEb3qowZXYO{4%u;J zjdYihF7{k*3ob~MK<1rtcA)K2q+L#$@Cp>m!AuR<6E&q(XhlS&MGJ>4@SBFO@Mm@F zO#3P@KTDMPW>=WPT8((AOh!!iyNPHoR+?12MYxOA$@=dDkl4uTO}pngm!Sw+sF!?# z4ajCU;1tapT8@l3bbh%Z-DDw|QGz4`R}(ld`vGdDN$jL2!MDbxG}{g0xXinyV3wMdvjm0wcALwTW zBE4b)OuOJC?=xEDmhx{wL8e%jObzVS!_+h(44o=({^jk9LYzSlEMVUo5lBkNesDG7y;$J?UKp@W^ zYQWhxR#3hACQIe&wW`iJ(%~Ih2+KPHZrHpg+;`~RfdCjWv6NOCSWs43cCJ5oV4qXx zMC^)GO}kmL*rEj-R&94YrzB;peEm4XCsP1jPP+F5+lDLAMcp*W!Y&FY8g^}o9xZt! zmO$Mm8CoF_P5u;!EU0T*hl#Qu+D8nx%lVFGisE-sK#5e){Y)597X|Yw z#m2cB7daV_~kULAXY7K7k9lS3MUIcaf=G8l9qI5UILHk(PCe z?n0^f`Lb3f;bh+)_)x(3ZNK3ettx;=e+>eu+@_MQb|Zk3x&?KloAH!|-)$x-Fu*XC zJl>7Te00EB_nb?pZf%;UyPJ^$VEn$*N_+(|@r=&$_S&w}?DuHPE7uT4{Z|-?Wc?m& zjP3|FL}q(t6ka9!?!Zx;$hzp`Kqtt@(lj$V_x3b}JE4ad!!l&cV)v{cm&tfmm%8nkE_64Q;r_q zt*#!fbjO01TAeg=0pAqsJVsJ#k|{v(P z@iggi9wf#>^l*snn&GWH1!PLKzl+e$wfJNemIQ#HB! z1a0xo2nm#46?D~tKwyCn$eJOcnXQxxsYXYYBo*sqJk2d|3G2&AFA6E2OqXw1vg;bF zPBm1*R9snh;UWx8;*@&vz0HTb>+_@+ahgs5SFGoJlx#;AdKSILRZGx`JkP3Ytek-P zoUABvNw_h*z&&0n{BvM2r9JUA!s*8HWW>^tm=C0RGTOpX3L;Q477Tw8&61ME&d6igs{xpxOkm^&!_l zJ$ov|#@&zC&UpiHuJsbg^>3f&fkG<3 z;Wvo@K!PtKZ%Yg*{yl4Z7%+ZMwwbg6Yq)+&#k5{^kB6#@K;l0V3e@=;P;Y`K( z{yjQ#MF!MF327MpJyCX6V05F^|Ec!ec;W>hbDIC_z7TYO^Os`M#*Ms~XIuXa>$Z+F zV7F!l-PAU2Jl1q_+xl>Uf2{}pb*Q%O#>V*n)Cg}3_z76$`ny>_HyQvF5!{@}=8kNN z)57{3{hYz9`Fq3%X-zZtUwUDzZa zHd&NSUTcFN+$88WnZ`}-cU>3$dt|{Ti?Ye0{GZRF)Qqfs{F}Bp_Q`6HIqjMF>f1)@ zgd?1m^6y5{2mHedko@zEFs|Fk0)^L|B6uJAd+iCgT-dd*H~-^O=H#xkY5m;4|2|au z3V8II$56e;-we*{fN)wu5dWvJzj>#^nvwDPCtZJy>&0o1uZ{yoy3X?5*4Hf1P}oo5RCL1q9P(C<0wt~sDO$T z5rUKuMj(nHY7{JxV4`9SBu0=x>URQs_ue)CzqRhVH;W&6^S6hTJnFa$Qu|zs3BK$J@;nfH=n%vZ zTq{7Ja;qRqq)osdB>gl5Hh&F)=z~wtRXOzEccAR@CI7yb-ywaNP+{Ezfgm9V_Uv?v zlbak>svi%Ehkp+Vc(g^~icYo4_0V?6dEK=UdkmWPoyp3-^?Oa>(Ds*4Z(&~9?6~G) zaH#2KuUm;rRqi^5^R5jw`!JW^BxIb|Yc=%m)*Z{$$%m;_j6@4UFNehXTMK9*5{`t| zJ}x@B_MDXfOQlVv5PwY?$3ADjTkZW=qN20)CTZx9g~P~AMHK~!!COHmEO9zTPN1fP zOohln^^~g3^{O~*n1YH9vOH1lSfxP0SNZ^^kY!xnmsLz`n{SC@%exh_^`fK?K%Wm% z4K2>`*)H=fTQv>`wc=mMOS?!VJ%Qfsf5L3Dop1RSjm%{_?9z}8CNrbVL1Z|SMG#qR zl%*J1@|4j68M}i0lQ$L(&XKJ3XxMzV_(y(6Qa+l~GfzuXk)d*&zK7~D4h!t_#bIRb z>C3EB^HdaB-jr%cIsSHTvFUC=VK>$SvMZ&WxFP6W=g@%hMY6jBaM(*NIr{U=7j_&_ z-}`ALs0FsWef8m>^>mvX^VC=6lu5a4K$%IUt|4=p|2Qnd!bPe4ajb}yp7O=Q@&4o- ze>mb@ApU-+%aWt<9pS*x$h1DA0O#@k13>>Dd6>Z0`w`xmT&HAeb#BG<0aWXkkIJ2sRBXF|ZBLx-ar8^#26*^J zkKt1u^1cjsE8Bg~A=`babVYT1=~kiycK&SJ1=(h3y#=H zdKevA96hv!lfrZ5Py(9=zq}9SVOic-_G7q1fB>cMKxEb0tGVu*uh${CN@%i2VdJ0! zSFOw{LAAVbFoiCl#{ST)8~GT@eiVWybc#;f3OAMgx?t|$)nA!P&b$DAujNW>-Ux#u z`m}S|DEDs-w0M^6hn@XMaA^wUe|t5ZYylU%-9{LBF!=s;{P>2%5sYOqruSHAnV0Ya zb0-Ct*-1584AXBEqI`m$+w)pL&lHIr%Zrvc8QS@PM@69ZY{yb<@z!5@?~Jswd{Lth zK3@$j!_ovUHglgsc^^3Jra|K$UH1v>j-f*J_>STExGx7aQu{iqypojlq+e9O=2aX;i5c}k0kr~ z-*|%ldADxzyQpCDx2lMn@m)%$64Em5SdKwN%g3EG@yu>upQ2{$03VK!%z3!@J-&gS ziWtV0_-$ISw7cmGZksuU&~Ep6i-(zR44;W@6g_JWi+?>MX`$ei5yCvCZA4{f4F90n z;-uY;Utn^r=RUD^M2Mg2q8+s`Q(enw#F;)$GKcivh>0=*&EDNMTeTtn(?F>8Xwnoh z6fRisA(gMk%Nd3iqU*PNm{qjWjv0DU1a&5TpeFg%vc(*Whx&RHo|!yZHLV=~q*-H} zn)~hzr~V!DAbJsz6GSBW*q7S2n1H!94s}ND`po;#5AaGt`Pg&_t7Gy^%Gs{-$I<)d z2Xr^6S32V#?PM}@%QqqNvm@gD%--8fLWtSSMQq#~M?``UI1j-|554H)HT%HyA|J01 zn1n}B4t*fL;gOaQk{eD}88~B~bCw}y8*P&dH5T2VQM!r5nWnv1BBLahJ$FCCK5Bqh zp*%XH**NSlhlD4IryTir;X0e>-2hRmAJF`=~f<#!mV9 zW|^`0MBO3`+>O7J5X4hGnQ>b4n_jScOd>gTLPBXok~w|T{o%0-k;~s2=wauyN_H(+ zw_mrsum5j$#eyYC=U{GypRH`t79v-{USw`z+UV{@RD4#bHh+eRTE6I1nV@V?YD-_W zu+`604+rHjzOG&zMP2S#uzHO0qUYr4mG>EwUv60(#TZP%ctZQ&!W4`hL43@)>ADDi zFE9nKxAxZ;gJ({vVWXB~)qmNq+Ptwoar43y>b1Zq);TU47b5|fLT~`@uxz3KXLqzH zKQaqAN}NCLLm(}pTalI(Xqw5W?DSJh7j0eHzG)IlQftIukPN{c;=xw-id~Nf{?o9M%j9-RxNOI66vqYUNjL?zL-- zx-w1d&ym@Q!JahbD<3q&zU_zJR0>!`Zc3rNrQ$;T>rut~pNW8T~X#z`caX z%%^QgydT%oL1%mPSVv^VYQsHhW?yPM`s*oHn|D;*>6In6I2}tc?NM?r|f0>?*~h1g#d* zX)XR<-y)Vn(a3-~x+p7Iw!BPy*9<%$l1~Vj&;iC{orm+ZnQ#)I6k18hm zrKo0ac|mGy&=vUy&scFD!TC>r$=b3t8P$IPvs0vPaofVg`o4{cUGUNHL#d=wAd;NQ zXyceFjjUG|55$o(8H3?hF2uygRpL&+IsK7#C3Zwr(Eso}8H6eSy-*_Qq3$U>)6Ji+ zxJ0tqVfMCF6Gc>ozI&yltlhrXO7}~>{F=g zg~EjX*TH#7;n|Ez?WvwPb{8fvJ34G<`NdR2SKUjao_`ZW?4_kIR~Vdinvf`QH8h*Z z&X_}pF2Nk;dDOrPjS?kQovpPXvWL%vr(kg&y@{sTYHZ0|_H-fB@}%gvkdPgv7rPPZ ze-?z^?^rn>Y!L~YL*t*ai}-+u7{NQN8Z0wy!*Irf!GX=DvBaR>z7J>M`^SthKh|+G z+5+pAC3Gzn2++#;<{%82^ zRMKTAHFw>%=vXRxtd7nM>2)MX`VYggHt49}V#MoQ-#k(>tlcOQ{s&upB$sJwu4Lvq z_WbSmEh|Y8X2M)~@>>mqam9(gPS9QAd*+N6^cg6}^X^!ay@;gk>8&Aos&P(2_7nTy zzJOM7+3cuukT~t3f*e#42m`;q$O==zF+1rLZ*z*Kh2|%RccEG;1oZkUxT;5p@>a+4 z2+(S}#P4EkPy*_OI3C9|S!W+iFA{&JAuiJfZEt{-PO1S5D9oij9#?D8%}Md`i9>~z zMx^aRQMGtJ>qE3OJk;MmHH5iu8uKkYc7TwO6B~5=sSTlp1Shk87Bpq)Uy1Ez4T)b$ zDbm;d0CyYGg5KO#^ijiG*_aaTXMEphh~N+XMleBk%&V9)5)aH0Xq!Ih%y;T8?{`k$ z>u25jCgrIb5;y!Kf4^TzU zLy40F|IO~d8=ZAaIzxhMKPqQVNB&}(Nl{N~$X9*4R{ET$)nPJG4aX$!WNl;p zaR>|jvFG7)CE+SS2kwHf_hwZC${WWV_a`JHB~^Og5W6jPw&sB;xl_YgofKP9Eaat2 zMmresD9~Z{PPjMB|uIM;2gJjX-B=bo9r)QJgiKK0iby9#`oDZ&d4m?b+Y866}<8 zjYpBW2mW5iIx<$?@`&8z(P>frrYKQY4tiSdnEs)VdIT<+@m!o&8W?yuvN};;4tfCG zR}86f1ov~ahtZwk^+ z&Qapw|3u)Y>IjE>H}_UG^;hNFjT)~~q6yJ3Q+%K{+^@x8N8Qv7Ov>rVk*RE}WMi4St1HAjypTz8M8Z6^^^%1ap>>+ zgS=X)7MrhbrCTe092d!4qiM#2(-GgcWoK_dr6RqhBJa=Wgk&6?TpH4C(A>S{r-v{9 zQdMt{U)DH#9RkgNy7Jc-S3zpGSst2x@2FW>SJnez4yiz1FN5{nZc!bq$s*CjW!J^xJ@LuNk z7z!!{K&C1jq+Vkw3d4NFcj8_y4YzQ`&pEe`RnMl_Cu#!uN@ok`@PJjIrstTX8-v12 zq66)sE{t-i+L60_8oJn@ZD293fIP*hot?peF|~2>eTvSUfh66Oxd4poqk)*f3Z@N3 zuq~lKTxIPnH_gm+tpgXO;x9U5AZHyRmzdw z3Q51YB%EoFf6^ic7mGgB@NNS3naJI&E112ggc)! zdt}4)^llT*6-$>)=Cn2oFuR41dEILJpEWrEUv37UF}D+W#5epuvPu)r89*swx`81CTsh`+MP$M zi%HYTUHLtj{GJA$Saic`A{{ek(jb{0Ucs$DJ$ixByM#W(th+$}@|f}d4iVIXC@j{; zXGgNhosneYJ^q2xl4*RQWRhwf{sa)gN9jgeCkAu3sGMK3s7%zP8eYq_a9mI=R)ajf z{Gz}7g4m#ARNi;;bN`~mD-T|WZuG=0NElC+SDSlTM=s`7IS`|f3hoP{3G4x|oBQ(x z#YX2a68O1nIHb&&3lvP|D)XuzPKLXAeNz@y7Gz#o%$(0FvIHbcuQKug=$8x#G9bu+ zAOnJ|;F6V-vf5mxJV>*ltVWR42r>yy1_YT}D^rbRs*&v20%SuO5axjpQN1n^0#WXf z{uY3YCdulB|3CG@;*smZVeY~|kT0YL*&UfRWS$^HfeZyQ6v$8@LxBthG8D*AAVb0b hY83cCf=ZO1eB5-;?tT{d89@l-z+RU Date: Wed, 19 Jul 2023 04:35:06 -0400 Subject: [PATCH 154/211] Roll ANGLE from b32d661389a6 to 255dec886475 (1 revision) (#43804) https://chromium.googlesource.com/angle/angle.git/+log/b32d661389a6..255dec886475 2023-07-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 8806dade91f0 to e3bcada48f45 (580 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/angle-flutter-engine Please CC bdero@google.com,flutter-engine@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: http://anglebug.com/new To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index b731e35f7caf9..f794e28d9d50f 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + 'b32d661389a6442eb96d1513c0f8dafbb7a3949d', + Var('chromium_git') + '/angle/angle.git' + '@' + '255dec886475a25dfd51cd8bd5f7e940c681188d', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', From aa9b2ae3cc84f14e37e07292875dd813f007aad8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 04:55:04 -0400 Subject: [PATCH 155/211] Roll Dart SDK from 9f5e86b4c108 to a013e7bf089e (1 revision) (#43805) https://dart.googlesource.com/sdk.git/+log/9f5e86b4c108..a013e7bf089e 2023-07-19 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-326.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index f794e28d9d50f..d4e050456b22a 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '9f5e86b4c108674736b8f95cbc62106073fec860', + 'dart_revision': 'a013e7bf089e82f00e787c0f225f5b2815eced92', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From cc82ce9b2b1c8f413d98af6b6ca0945541ccb827 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 07:04:54 -0400 Subject: [PATCH 156/211] Roll Skia from c03050eb2b65 to e9409b832799 (1 revision) (#43808) https://skia.googlesource.com/skia.git/+log/c03050eb2b65..e9409b832799 2023-07-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from f0752efcbdb2 to 616ec95a04fe (10 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index d4e050456b22a..87a1817083e0a 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'c03050eb2b657df568e07eef5c116b5d04db236b', + 'skia_revision': 'e9409b8327997dbefb4df8e76153f4e30bf5ead6', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From da66419d5f8e9841581a310781f646e1b089ab8f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 07:37:47 -0400 Subject: [PATCH 157/211] Roll ANGLE from 255dec886475 to 4dcaad2a894d (1 revision) (#43809) https://chromium.googlesource.com/angle/angle.git/+log/255dec886475..4dcaad2a894d 2023-07-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 151fa797ee3e to 4e401427f8dd (1 revision) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/angle-flutter-engine Please CC bdero@google.com,flutter-engine@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: http://anglebug.com/new To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 87a1817083e0a..6996c886a7fdb 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + '255dec886475a25dfd51cd8bd5f7e940c681188d', + Var('chromium_git') + '/angle/angle.git' + '@' + '4dcaad2a894d90c1f3910d1a11489d64cffdffdd', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', From 4837e0f18c682c0fd0ee5bf9183404735e8d274b Mon Sep 17 00:00:00 2001 From: Kevin Lubick Date: Wed, 19 Jul 2023 08:26:05 -0400 Subject: [PATCH 158/211] Update legacy call to SkImage::makeSubset (#43786) In https://skia-review.googlesource.com/c/skia/+/671679 Skia updated the calls to SkImage::makeSubset() to always need a `GrDirectContext*`. This updates Flutter's one call that needed it. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [ ] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See [testing the engine] for instructions on writing and running engine tests. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat --- shell/platform/embedder/tests/embedder_unittests_util.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/platform/embedder/tests/embedder_unittests_util.cc b/shell/platform/embedder/tests/embedder_unittests_util.cc index 3bffe7802f5d0..a29bf166a3ae5 100644 --- a/shell/platform/embedder/tests/embedder_unittests_util.cc +++ b/shell/platform/embedder/tests/embedder_unittests_util.cc @@ -168,6 +168,7 @@ bool ImageMatchesFixture(const std::string& fixture_file_name, FML_CHECK(scene_image) << "Invalid scene image."; auto scene_image_subset = scene_image->makeSubset( + nullptr, SkIRect::MakeWH(fixture_image->width(), fixture_image->height())); FML_CHECK(scene_image_subset) From 51a7ed7f5463395307f152b807034e1224eccd58 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 08:44:27 -0400 Subject: [PATCH 159/211] Roll Fuchsia Linux SDK from ZABO4Om1vToxhI394... to -SNz0augjLKFVsUWn... (#43810) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6996c886a7fdb..c70b192a76161 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'ZABO4Om1vToxhI394y3P1X0fu7gcLz2d65YNEeNTBZUC' + 'version': '-SNz0augjLKFVsUWnMnuevifpykHjCqZd5_eL7gslrMC' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index e57b529a9a864..6749097f079ba 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: c85f7cff8f2c967c63e1b38bcd3d2aa5 +Signature: 733c77acaed83e79b4e68b0e642ea143 ==================================================================================================== LIBRARY: fuchsia_sdk From 7b5a8a6e9b7929313a378278b5c3342851c943a6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 10:32:04 -0400 Subject: [PATCH 160/211] Roll Skia from e9409b832799 to 1f175b7a2155 (1 revision) (#43811) https://skia.googlesource.com/skia.git/+log/e9409b832799..1f175b7a2155 2023-07-19 robertphillips@google.com [graphite] Add initial precompilation fuzzer If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c70b192a76161..45d9c5fac341e 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'e9409b8327997dbefb4df8e76153f4e30bf5ead6', + 'skia_revision': '1f175b7a21557b975982111164e4be52ebe120e3', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 952d8b68dc940..c1089835042ac 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1d4c4f239c4f38d6911dbb6f729f0443 +Signature: b0048d208dcdc012695fae105ae68d25 ==================================================================================================== LIBRARY: etc1 @@ -8868,8 +8868,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/fuzz/FuzzCubicRoots.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/fuzz/FuzzPrecompile.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/fuzz/FuzzQuadRoots.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/fuzz/oss_fuzz/FuzzCubicRoots.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/fuzz/oss_fuzz/FuzzPrecompile.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/fuzz/oss_fuzz/FuzzQuadRoots.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/BazelGMRunner.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/gm/BazelNoopRunner.cpp + ../../../third_party/skia/LICENSE @@ -9074,8 +9076,10 @@ ORIGIN: ../../../third_party/skia/src/utils/SkTestCanvas.cpp + ../../../third_pa ORIGIN: ../../../third_party/skia/toolchain/android_trampolines/gen_trampolines/gen_trampolines.go + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/fuzz/FuzzCubicRoots.cpp +FILE: ../../../third_party/skia/fuzz/FuzzPrecompile.cpp FILE: ../../../third_party/skia/fuzz/FuzzQuadRoots.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzCubicRoots.cpp +FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzPrecompile.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzQuadRoots.cpp FILE: ../../../third_party/skia/gm/BazelGMRunner.cpp FILE: ../../../third_party/skia/gm/BazelNoopRunner.cpp From 31495640009f7adb77165c9b96a48d8e706e18fe Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 11:09:03 -0400 Subject: [PATCH 161/211] Roll Skia from 1f175b7a2155 to 16475d7aa315 (1 revision) (#43812) https://skia.googlesource.com/skia.git/+log/1f175b7a2155..16475d7aa315 2023-07-19 cmumford@google.com [bazel] Add skia_app_container macro If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 45d9c5fac341e..6cf2b35e41813 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '1f175b7a21557b975982111164e4be52ebe120e3', + 'skia_revision': '16475d7aa31533f53295e9dc58d15585b2a80e5f', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 9a294840e343fa3c363810d11bf100a21b012d8f Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 19 Jul 2023 08:15:02 -0700 Subject: [PATCH 162/211] Apply the offset to the child bounds of an ImageFilterLayer with no filter (#43783) Fixes https://github.com/flutter/flutter/issues/130318 --- flow/layers/image_filter_layer.cc | 1 + flow/layers/image_filter_layer_unittests.cc | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/flow/layers/image_filter_layer.cc b/flow/layers/image_filter_layer.cc index ceb8ce0828155..834df45ce857d 100644 --- a/flow/layers/image_filter_layer.cc +++ b/flow/layers/image_filter_layer.cc @@ -64,6 +64,7 @@ void ImageFilterLayer::Preroll(PrerollContext* context) { PrerollChildren(context, &child_bounds); if (!filter_) { + child_bounds.offset(offset_); set_paint_bounds(child_bounds); return; } diff --git a/flow/layers/image_filter_layer_unittests.cc b/flow/layers/image_filter_layer_unittests.cc index 7b32e08571fb2..ee8f08c8491be 100644 --- a/flow/layers/image_filter_layer_unittests.cc +++ b/flow/layers/image_filter_layer_unittests.cc @@ -711,6 +711,19 @@ TEST_F(ImageFilterLayerDiffTest, ImageFilterLayerInflatestChildSize) { EXPECT_EQ(damage.frame_damage, SkIRect::MakeLTRB(40, 40, 170, 170)); } +TEST_F(ImageFilterLayerTest, EmptyFilterWithOffset) { + const SkRect child_bounds = SkRect::MakeLTRB(10.0f, 11.0f, 19.0f, 20.0f); + const SkPath child_path = SkPath().addRect(child_bounds); + const DlPaint child_paint = DlPaint(DlColor::kYellow()); + auto mock_layer = std::make_shared(child_path, child_paint); + const SkPoint offset = SkPoint::Make(5.0f, 6.0f); + auto layer = std::make_shared(nullptr, offset); + layer->Add(mock_layer); + + layer->Preroll(preroll_context()); + EXPECT_EQ(layer->paint_bounds(), child_bounds.makeOffset(offset)); +} + } // namespace testing } // namespace flutter From acbaa7b953fe9af4f794505a59c032c65472e85b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 11:52:01 -0400 Subject: [PATCH 163/211] Roll Skia from 16475d7aa315 to 4728980564b1 (1 revision) (#43815) https://skia.googlesource.com/skia.git/+log/16475d7aa315..4728980564b1 2023-07-19 cmumford@google.com [infra] Add rule to build final debugger-app image If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 6cf2b35e41813..7199cde5c9bd1 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '16475d7aa31533f53295e9dc58d15585b2a80e5f', + 'skia_revision': '4728980564b11ae9448e0b82797cc359bcd32137', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 31c286685b1e6dfe1c6f463b6b71cddaabb0a3f9 Mon Sep 17 00:00:00 2001 From: Brandon DeRosier Date: Wed, 19 Jul 2023 09:57:50 -0700 Subject: [PATCH 164/211] [Impeller] Disable color attachment on clip pipelines for Metal & Vulkan. (#43781) Remove the color attachment completely in Metal and Vulkan clips. When the color write mask is set to all false, Metal is smart about not executing the fragment shader at all, but some Vulkan and GL drivers may not be. GL requires binding shader objects to draw, and so a cap check is needed here. In the future, we could add minimal no-op shaders to use with the GL clip pipeline to shave off a few flops on drivers that aren't smart about the color write mask. --- impeller/entity/contents/content_context.cc | 213 +++++++++--------- .../renderer/backend/gles/context_gles.cc | 1 + .../renderer/backend/gles/render_pass_gles.cc | 4 +- .../renderer/backend/metal/context_mtl.mm | 1 + .../backend/vulkan/capabilities_vk.cc | 6 + .../renderer/backend/vulkan/capabilities_vk.h | 3 + impeller/renderer/capabilities.cc | 17 ++ impeller/renderer/capabilities.h | 5 + 8 files changed, 146 insertions(+), 104 deletions(-) diff --git a/impeller/entity/contents/content_context.cc b/impeller/entity/contents/content_context.cc index 87939972b157e..c6ffbf9343d7f 100644 --- a/impeller/entity/contents/content_context.cc +++ b/impeller/entity/contents/content_context.cc @@ -29,102 +29,104 @@ void ContentContextOptions::ApplyToPipelineDescriptor( desc.SetSampleCount(sample_count); - ColorAttachmentDescriptor color0 = *desc.GetColorAttachmentDescriptor(0u); - color0.format = color_attachment_pixel_format; - color0.alpha_blend_op = BlendOperation::kAdd; - color0.color_blend_op = BlendOperation::kAdd; - - switch (pipeline_blend) { - case BlendMode::kClear: - color0.dst_alpha_blend_factor = BlendFactor::kZero; - color0.dst_color_blend_factor = BlendFactor::kZero; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - case BlendMode::kSource: - color0.blending_enabled = false; - color0.dst_alpha_blend_factor = BlendFactor::kZero; - color0.dst_color_blend_factor = BlendFactor::kZero; - color0.src_alpha_blend_factor = BlendFactor::kOne; - color0.src_color_blend_factor = BlendFactor::kOne; - break; - case BlendMode::kDestination: - color0.dst_alpha_blend_factor = BlendFactor::kOne; - color0.dst_color_blend_factor = BlendFactor::kOne; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - case BlendMode::kSourceOver: - color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kOne; - color0.src_color_blend_factor = BlendFactor::kOne; - break; - case BlendMode::kDestinationOver: - color0.dst_alpha_blend_factor = BlendFactor::kOne; - color0.dst_color_blend_factor = BlendFactor::kOne; - color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - break; - case BlendMode::kSourceIn: - color0.dst_alpha_blend_factor = BlendFactor::kZero; - color0.dst_color_blend_factor = BlendFactor::kZero; - color0.src_alpha_blend_factor = BlendFactor::kDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kDestinationAlpha; - break; - case BlendMode::kDestinationIn: - color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - case BlendMode::kSourceOut: - color0.dst_alpha_blend_factor = BlendFactor::kZero; - color0.dst_color_blend_factor = BlendFactor::kZero; - color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - break; - case BlendMode::kDestinationOut: - color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - case BlendMode::kSourceATop: - color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kDestinationAlpha; - break; - case BlendMode::kDestinationATop: - color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - break; - case BlendMode::kXor: - color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - break; - case BlendMode::kPlus: - color0.dst_alpha_blend_factor = BlendFactor::kOne; - color0.dst_color_blend_factor = BlendFactor::kOne; - color0.src_alpha_blend_factor = BlendFactor::kOne; - color0.src_color_blend_factor = BlendFactor::kOne; - break; - case BlendMode::kModulate: - color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kSourceColor; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - default: - FML_UNREACHABLE(); + auto* color0_ref = desc.GetColorAttachmentDescriptor(0u); + if (color0_ref) { + ColorAttachmentDescriptor color0 = *color0_ref; + color0.format = color_attachment_pixel_format; + color0.alpha_blend_op = BlendOperation::kAdd; + color0.color_blend_op = BlendOperation::kAdd; + + switch (pipeline_blend) { + case BlendMode::kClear: + color0.dst_alpha_blend_factor = BlendFactor::kZero; + color0.dst_color_blend_factor = BlendFactor::kZero; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + case BlendMode::kSource: + color0.blending_enabled = false; + color0.dst_alpha_blend_factor = BlendFactor::kZero; + color0.dst_color_blend_factor = BlendFactor::kZero; + color0.src_alpha_blend_factor = BlendFactor::kOne; + color0.src_color_blend_factor = BlendFactor::kOne; + break; + case BlendMode::kDestination: + color0.dst_alpha_blend_factor = BlendFactor::kOne; + color0.dst_color_blend_factor = BlendFactor::kOne; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + case BlendMode::kSourceOver: + color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kOne; + color0.src_color_blend_factor = BlendFactor::kOne; + break; + case BlendMode::kDestinationOver: + color0.dst_alpha_blend_factor = BlendFactor::kOne; + color0.dst_color_blend_factor = BlendFactor::kOne; + color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + break; + case BlendMode::kSourceIn: + color0.dst_alpha_blend_factor = BlendFactor::kZero; + color0.dst_color_blend_factor = BlendFactor::kZero; + color0.src_alpha_blend_factor = BlendFactor::kDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kDestinationAlpha; + break; + case BlendMode::kDestinationIn: + color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + case BlendMode::kSourceOut: + color0.dst_alpha_blend_factor = BlendFactor::kZero; + color0.dst_color_blend_factor = BlendFactor::kZero; + color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + break; + case BlendMode::kDestinationOut: + color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + case BlendMode::kSourceATop: + color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kDestinationAlpha; + break; + case BlendMode::kDestinationATop: + color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + break; + case BlendMode::kXor: + color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + break; + case BlendMode::kPlus: + color0.dst_alpha_blend_factor = BlendFactor::kOne; + color0.dst_color_blend_factor = BlendFactor::kOne; + color0.src_alpha_blend_factor = BlendFactor::kOne; + color0.src_color_blend_factor = BlendFactor::kOne; + break; + case BlendMode::kModulate: + color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kSourceColor; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + default: + FML_UNREACHABLE(); + } + desc.SetColorAttachmentDescriptor(0u, color0); } - desc.SetColorAttachmentDescriptor(0u, color0); - if (!has_stencil_attachment) { desc.ClearStencilAttachments(); } @@ -320,15 +322,22 @@ ContentContext::ContentContext(std::shared_ptr context) if (maybe_pipeline_desc.has_value()) { auto clip_pipeline_descriptor = maybe_pipeline_desc.value(); clip_pipeline_descriptor.SetLabel("Clip Pipeline"); + // Disable write to all color attachments. - auto color_attachments = - clip_pipeline_descriptor.GetColorAttachmentDescriptors(); - for (auto& color_attachment : color_attachments) { - color_attachment.second.write_mask = - static_cast(ColorWriteMask::kNone); + if (context_->GetCapabilities() + ->SupportsPipelinesWithNoColorAttachments()) { + clip_pipeline_descriptor.SetColorAttachmentDescriptors({}); + } else { + auto color_attachments = + clip_pipeline_descriptor.GetColorAttachmentDescriptors(); + for (auto& color_attachment : color_attachments) { + color_attachment.second.write_mask = + static_cast(ColorWriteMask::kNone); + } + clip_pipeline_descriptor.SetColorAttachmentDescriptors( + std::move(color_attachments)); } - clip_pipeline_descriptor.SetColorAttachmentDescriptors( - std::move(color_attachments)); + clip_pipelines_[default_options_] = std::make_unique(*context_, clip_pipeline_descriptor); } else { diff --git a/impeller/renderer/backend/gles/context_gles.cc b/impeller/renderer/backend/gles/context_gles.cc index 34b095d46ab48..091a2632e5a76 100644 --- a/impeller/renderer/backend/gles/context_gles.cc +++ b/impeller/renderer/backend/gles/context_gles.cc @@ -77,6 +77,7 @@ ContextGLES::ContextGLES(std::unique_ptr gl, .SetSupportsReadFromOnscreenTexture(false) .SetSupportsDecalTileMode(false) .SetSupportsMemorylessTextures(false) + .SetSupportsPipelinesWithNoColorAttachments(false) .Build(); } diff --git a/impeller/renderer/backend/gles/render_pass_gles.cc b/impeller/renderer/backend/gles/render_pass_gles.cc index 2cdadb4fc3cd7..33da6a0ad2f1f 100644 --- a/impeller/renderer/backend/gles/render_pass_gles.cc +++ b/impeller/renderer/backend/gles/render_pass_gles.cc @@ -257,8 +257,8 @@ struct RenderPassData { const auto* color_attachment = pipeline.GetDescriptor().GetLegacyCompatibleColorAttachment(); if (!color_attachment) { - VALIDATION_LOG - << "Color attachment is too complicated for a legacy renderer."; + VALIDATION_LOG << "The OpenGLES backend requires pipelines to have color " + "attachments."; return false; } diff --git a/impeller/renderer/backend/metal/context_mtl.mm b/impeller/renderer/backend/metal/context_mtl.mm index db2c1fef0cc21..604ec6120786c 100644 --- a/impeller/renderer/backend/metal/context_mtl.mm +++ b/impeller/renderer/backend/metal/context_mtl.mm @@ -65,6 +65,7 @@ static bool DeviceSupportsComputeSubgroups(id device) { .SetSupportsReadFromResolve(true) .SetSupportsReadFromOnscreenTexture(true) .SetSupportsMemorylessTextures(true) + .SetSupportsPipelinesWithNoColorAttachments(true) .Build(); } diff --git a/impeller/renderer/backend/vulkan/capabilities_vk.cc b/impeller/renderer/backend/vulkan/capabilities_vk.cc index 33e3ca7ceb748..78e6c0d0ff46f 100644 --- a/impeller/renderer/backend/vulkan/capabilities_vk.cc +++ b/impeller/renderer/backend/vulkan/capabilities_vk.cc @@ -431,6 +431,7 @@ bool CapabilitiesVK::SupportsReadFromOnscreenTexture() const { return false; } +// |Capabilities| bool CapabilitiesVK::SupportsDecalTileMode() const { return true; } @@ -440,6 +441,11 @@ bool CapabilitiesVK::SupportsMemorylessTextures() const { return supports_memoryless_textures_; } +// |Capabilities| +bool CapabilitiesVK::SupportsPipelinesWithNoColorAttachments() const { + return true; +} + // |Capabilities| PixelFormat CapabilitiesVK::GetDefaultColorFormat() const { return color_format_; diff --git a/impeller/renderer/backend/vulkan/capabilities_vk.h b/impeller/renderer/backend/vulkan/capabilities_vk.h index ffa96d46bc98e..3a6af726aee1b 100644 --- a/impeller/renderer/backend/vulkan/capabilities_vk.h +++ b/impeller/renderer/backend/vulkan/capabilities_vk.h @@ -93,6 +93,9 @@ class CapabilitiesVK final : public Capabilities, // |Capabilities| bool SupportsMemorylessTextures() const override; + // |Capabilities| + bool SupportsPipelinesWithNoColorAttachments() const override; + // |Capabilities| PixelFormat GetDefaultColorFormat() const override; diff --git a/impeller/renderer/capabilities.cc b/impeller/renderer/capabilities.cc index d0c9f62348066..680c64b5e4400 100644 --- a/impeller/renderer/capabilities.cc +++ b/impeller/renderer/capabilities.cc @@ -76,10 +76,16 @@ class StandardCapabilities final : public Capabilities { return default_stencil_format_; } + // |Capabilities| bool SupportsMemorylessTextures() const override { return supports_memoryless_textures_; } + // |Capabilities| + bool SupportsPipelinesWithNoColorAttachments() const override { + return supports_pipelines_with_no_color_attachments_; + } + private: StandardCapabilities(bool has_threading_restrictions, bool supports_offscreen_msaa, @@ -93,6 +99,7 @@ class StandardCapabilities final : public Capabilities { bool supports_read_from_resolve, bool supports_decal_tile_mode, bool supports_memoryless_textures, + bool supports_pipelines_with_no_color_attachments, PixelFormat default_color_format, PixelFormat default_stencil_format) : has_threading_restrictions_(has_threading_restrictions), @@ -108,6 +115,8 @@ class StandardCapabilities final : public Capabilities { supports_read_from_resolve_(supports_read_from_resolve), supports_decal_tile_mode_(supports_decal_tile_mode), supports_memoryless_textures_(supports_memoryless_textures), + supports_pipelines_with_no_color_attachments_( + supports_pipelines_with_no_color_attachments), default_color_format_(default_color_format), default_stencil_format_(default_stencil_format) {} @@ -125,6 +134,7 @@ class StandardCapabilities final : public Capabilities { bool supports_read_from_resolve_ = false; bool supports_decal_tile_mode_ = false; bool supports_memoryless_textures_ = false; + bool supports_pipelines_with_no_color_attachments_ = false; PixelFormat default_color_format_ = PixelFormat::kUnknown; PixelFormat default_stencil_format_ = PixelFormat::kUnknown; @@ -215,6 +225,12 @@ CapabilitiesBuilder& CapabilitiesBuilder::SetSupportsMemorylessTextures( return *this; } +CapabilitiesBuilder& +CapabilitiesBuilder::SetSupportsPipelinesWithNoColorAttachments(bool value) { + supports_pipelines_with_no_color_attachments_ = value; + return *this; +} + std::unique_ptr CapabilitiesBuilder::Build() { return std::unique_ptr(new StandardCapabilities( // has_threading_restrictions_, // @@ -229,6 +245,7 @@ std::unique_ptr CapabilitiesBuilder::Build() { supports_read_from_resolve_, // supports_decal_tile_mode_, // supports_memoryless_textures_, // + supports_pipelines_with_no_color_attachments_, // default_color_format_.value_or(PixelFormat::kUnknown), // default_stencil_format_.value_or(PixelFormat::kUnknown) // )); diff --git a/impeller/renderer/capabilities.h b/impeller/renderer/capabilities.h index 87a7f9df08892..c865a84e924c0 100644 --- a/impeller/renderer/capabilities.h +++ b/impeller/renderer/capabilities.h @@ -39,6 +39,8 @@ class Capabilities { virtual bool SupportsMemorylessTextures() const = 0; + virtual bool SupportsPipelinesWithNoColorAttachments() const = 0; + virtual PixelFormat GetDefaultColorFormat() const = 0; virtual PixelFormat GetDefaultStencilFormat() const = 0; @@ -83,6 +85,8 @@ class CapabilitiesBuilder { CapabilitiesBuilder& SetSupportsMemorylessTextures(bool value); + CapabilitiesBuilder& SetSupportsPipelinesWithNoColorAttachments(bool value); + std::unique_ptr Build(); private: @@ -98,6 +102,7 @@ class CapabilitiesBuilder { bool supports_read_from_resolve_ = false; bool supports_decal_tile_mode_ = false; bool supports_memoryless_textures_ = false; + bool supports_pipelines_with_no_color_attachments_ = false; std::optional default_color_format_ = std::nullopt; std::optional default_stencil_format_ = std::nullopt; From 79eb068999fee0a493789fc82467b926888fb508 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 12:57:53 -0400 Subject: [PATCH 165/211] Roll Skia from 4728980564b1 to a352521a3a7c (3 revisions) (#43816) https://skia.googlesource.com/skia.git/+log/4728980564b1..a352521a3a7c 2023-07-19 nigeltao@google.com Roll third_party/wuffs to version 0.3.3 2023-07-19 johnstiles@google.com Enable inlining for runtime effects using SkRP. 2023-07-19 johnstiles@google.com Add instruction count to the top of SkRP dumps. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7199cde5c9bd1..c908c050bae13 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '4728980564b11ae9448e0b82797cc359bcd32137', + 'skia_revision': 'a352521a3a7cc574eaa0101f95f46db084dc4f88', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c1089835042ac..8fd86f1ea83b5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b0048d208dcdc012695fae105ae68d25 +Signature: 2ef59152320cf1b480af37a37dc8e7c6 ==================================================================================================== LIBRARY: etc1 From 0199689ac2056d2bd52a5bb7c89ad3f3452ee653 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 13:37:32 -0400 Subject: [PATCH 166/211] Roll Skia from a352521a3a7c to 8d19d04472e1 (1 revision) (#43818) https://skia.googlesource.com/skia.git/+log/a352521a3a7c..8d19d04472e1 2023-07-19 kjlubick@google.com Use mirror instead of github directory for libavif dep If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index c908c050bae13..99d85ab239b3a 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'a352521a3a7cc574eaa0101f95f46db084dc4f88', + 'skia_revision': '8d19d04472e19dcc6f137a19cfeea1aacc94bbd7', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 89cbfa6f0a339623dfa18622d5f13ddb8df5e96f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 14:37:24 -0400 Subject: [PATCH 167/211] Roll Dart SDK from a013e7bf089e to 936824d49aa7 (1 revision) (#43820) https://dart.googlesource.com/sdk.git/+log/a013e7bf089e..936824d49aa7 2023-07-19 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-327.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 99d85ab239b3a..24e710f617ea4 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'a013e7bf089e82f00e787c0f225f5b2815eced92', + 'dart_revision': '936824d49aa762c202c7ccf7cb048579b877586d', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From b774771f6422c5e1d0d86c68e21c7e00fd327c3d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 14:38:54 -0400 Subject: [PATCH 168/211] Roll Skia from 8d19d04472e1 to 650c980daa72 (6 revisions) (#43821) https://skia.googlesource.com/skia.git/+log/8d19d04472e1..650c980daa72 2023-07-19 jvanverth@google.com [GL] Restrict setMaxLevel mipmap fix 2023-07-19 michaelludwig@google.com Consolidate SkImage::makeWithFilter implementations 2023-07-19 cmumford@google.com Revert "[infra] Add rule to build final debugger-app image" 2023-07-19 aeubanks@google.com Fix newly warned -Wconstant-logical-operand 2023-07-19 bungeman@google.com Roll FreeType from e4586d96 to 5769f13a (9 commits) 2023-07-19 brianosman@google.com Remove gltestthreading config If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 24e710f617ea4..f2503c9deb683 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '8d19d04472e19dcc6f137a19cfeea1aacc94bbd7', + 'skia_revision': '650c980daa72d887602e701db8f84072e26d4d48', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8fd86f1ea83b5..064284214f709 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2ef59152320cf1b480af37a37dc8e7c6 +Signature: fee223a1a1dc4320bb059b759c6f9a99 ==================================================================================================== LIBRARY: etc1 From 648975d4cb4af8fb5ea1e5d9abecb2a6969b9095 Mon Sep 17 00:00:00 2001 From: Jim Graham Date: Wed, 19 Jul 2023 11:40:31 -0700 Subject: [PATCH 169/211] fix handling of clipped rendering inside a layer that applies a filter (#43787) When a saveLayer is rendered with an ImageFilter that modifies the bounds of the rendered pixels, and some of the content of that saveLayer did not intersect the clip, but the filtered output of that content did intersect the clip, we might not accumulate the bounds of those rendering operations into the DisplayList bounds. This bug was not encountered during practical testing, but showed up on some testing with the new NOP culling code. For now, this bug only affects the accuracy of the reported bounds of the DisplayList, but that can affect raster caching and potentially the layer culling done in the LayerTree. It might also affect the accuracy of the RTree associated with the DisplayList, which would only show up in rare circumstances when the indicated operation was used in the presence of an embedded view. --- display_list/display_list_unittests.cc | 64 +++++++++++++++++++ display_list/dl_builder.cc | 21 ++++-- .../testing/dl_rendering_unittests.cc | 54 ++++++++++++++-- display_list/utils/dl_matrix_clip_tracker.cc | 18 +++++- display_list/utils/dl_matrix_clip_tracker.h | 16 +++++ 5 files changed, 163 insertions(+), 10 deletions(-) diff --git a/display_list/display_list_unittests.cc b/display_list/display_list_unittests.cc index 4c16f6e4438dc..62b58a022ce70 100644 --- a/display_list/display_list_unittests.cc +++ b/display_list/display_list_unittests.cc @@ -504,6 +504,70 @@ TEST_F(DisplayListTest, BuilderInitialClipBoundsNonZero) { ASSERT_EQ(builder.GetDestinationClipBounds(), clip_bounds); } +TEST_F(DisplayListTest, UnclippedSaveLayerContentAccountsForFilter) { + SkRect cull_rect = SkRect::MakeLTRB(0.0f, 0.0f, 300.0f, 300.0f); + SkRect clip_rect = SkRect::MakeLTRB(100.0f, 100.0f, 200.0f, 200.0f); + SkRect draw_rect = SkRect::MakeLTRB(50.0f, 140.0f, 101.0f, 160.0f); + auto filter = DlBlurImageFilter::Make(10.0f, 10.0f, DlTileMode::kDecal); + DlPaint layer_paint = DlPaint().setImageFilter(filter); + + ASSERT_TRUE(clip_rect.intersects(draw_rect)); + ASSERT_TRUE(cull_rect.contains(clip_rect)); + ASSERT_TRUE(cull_rect.contains(draw_rect)); + + DisplayListBuilder builder; + builder.Save(); + { + builder.ClipRect(clip_rect, ClipOp::kIntersect, false); + builder.SaveLayer(&cull_rect, &layer_paint); + { // + builder.DrawRect(draw_rect, DlPaint()); + } + builder.Restore(); + } + builder.Restore(); + auto display_list = builder.Build(); + + ASSERT_EQ(display_list->op_count(), 6u); + + SkRect result_rect = draw_rect.makeOutset(30.0f, 30.0f); + ASSERT_TRUE(result_rect.intersect(clip_rect)); + ASSERT_EQ(result_rect, SkRect::MakeLTRB(100.0f, 110.0f, 131.0f, 190.0f)); + ASSERT_EQ(display_list->bounds(), result_rect); +} + +TEST_F(DisplayListTest, ClippedSaveLayerContentAccountsForFilter) { + SkRect cull_rect = SkRect::MakeLTRB(0.0f, 0.0f, 300.0f, 300.0f); + SkRect clip_rect = SkRect::MakeLTRB(100.0f, 100.0f, 200.0f, 200.0f); + SkRect draw_rect = SkRect::MakeLTRB(50.0f, 140.0f, 99.0f, 160.0f); + auto filter = DlBlurImageFilter::Make(10.0f, 10.0f, DlTileMode::kDecal); + DlPaint layer_paint = DlPaint().setImageFilter(filter); + + ASSERT_FALSE(clip_rect.intersects(draw_rect)); + ASSERT_TRUE(cull_rect.contains(clip_rect)); + ASSERT_TRUE(cull_rect.contains(draw_rect)); + + DisplayListBuilder builder; + builder.Save(); + { + builder.ClipRect(clip_rect, ClipOp::kIntersect, false); + builder.SaveLayer(&cull_rect, &layer_paint); + { // + builder.DrawRect(draw_rect, DlPaint()); + } + builder.Restore(); + } + builder.Restore(); + auto display_list = builder.Build(); + + ASSERT_EQ(display_list->op_count(), 6u); + + SkRect result_rect = draw_rect.makeOutset(30.0f, 30.0f); + ASSERT_TRUE(result_rect.intersect(clip_rect)); + ASSERT_EQ(result_rect, SkRect::MakeLTRB(100.0f, 110.0f, 129.0f, 190.0f)); + ASSERT_EQ(display_list->bounds(), result_rect); +} + TEST_F(DisplayListTest, SingleOpSizes) { for (auto& group : allGroups) { for (size_t i = 0; i < group.variants.size(); i++) { diff --git a/display_list/dl_builder.cc b/display_list/dl_builder.cc index ea2a132580780..1536d54b4160d 100644 --- a/display_list/dl_builder.cc +++ b/display_list/dl_builder.cc @@ -522,12 +522,25 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, } } - // Even though Skia claims that the bounds are only a hint, they actually - // use them as the temporary layer bounds during rendering the layer, so - // we set them as if a clip operation were performed. - if (bounds) { + if (options.renders_with_attributes() && current_.getImageFilter()) { + // We use |resetCullRect| here because we will be accumulating bounds of + // primitives before applying the filter to those bounds. We might + // encounter a primitive whose bounds are clipped, but whose filtered + // bounds will not be clipped. If the individual rendering ops bounds + // are clipped, it will not contribute to the overall bounds which + // could lead to inaccurate (subset) bounds of the DisplayList. + // We need to reset the cull rect here to avoid this premature clipping. + // The filtered bounds will be clipped to the existing clip rect when + // this layer is restored. + // If bounds is null then the original cull_rect will be used. + tracker_.resetCullRect(bounds); + } else if (bounds) { + // Even though Skia claims that the bounds are only a hint, they actually + // use them as the temporary layer bounds during rendering the layer, so + // we set them as if a clip operation were performed. tracker_.clipRect(*bounds, ClipOp::kIntersect, false); } + if (backdrop) { // A backdrop will affect up to the entire surface, bounded by the clip AccumulateUnbounded(); diff --git a/display_list/testing/dl_rendering_unittests.cc b/display_list/testing/dl_rendering_unittests.cc index 55afd24d806d6..76b16cc2ccc3e 100644 --- a/display_list/testing/dl_rendering_unittests.cc +++ b/display_list/testing/dl_rendering_unittests.cc @@ -862,9 +862,9 @@ class TestParameters { } private: - const SkRenderer& sk_renderer_; - const DlRenderer& dl_renderer_; - const DisplayListAttributeFlags& flags_; + const SkRenderer sk_renderer_; + const DlRenderer dl_renderer_; + const DisplayListAttributeFlags flags_; bool is_draw_text_blob_ = false; bool is_draw_display_list_ = false; @@ -2032,7 +2032,8 @@ class CanvasCompareTester { if (!dl_bounds.contains(sk_bounds)) { FML_LOG(ERROR) << "DisplayList bounds are too small!"; } - if (!sk_bounds.roundOut().contains(dl_bounds.roundOut())) { + if (!dl_bounds.isEmpty() && + !sk_bounds.roundOut().contains(dl_bounds.roundOut())) { FML_LOG(ERROR) << "###### DisplayList bounds larger than reference!"; } } @@ -3453,6 +3454,51 @@ TEST_F(DisplayListCanvas, DrawShadowDpr) { CanvasCompareTester::DefaultTolerance.addBoundsPadding(3, 3)); } +TEST_F(DisplayListCanvas, SaveLayerClippedContentStillFilters) { + // draw rect is just outside of render bounds on the right + const SkRect draw_rect = SkRect::MakeLTRB( // + kRenderRight + 1, // + kRenderTop, // + kTestBounds.fRight, // + kRenderBottom // + ); + TestParameters test_params( + [=](SkCanvas* canvas, const SkPaint& paint) { + auto layer_filter = + SkImageFilters::Blur(10.0f, 10.0f, SkTileMode::kDecal, nullptr); + SkPaint layer_paint; + layer_paint.setImageFilter(layer_filter); + canvas->save(); + canvas->clipRect(kRenderBounds, SkClipOp::kIntersect, false); + canvas->saveLayer(&kTestBounds, &layer_paint); + canvas->drawRect(draw_rect, paint); + canvas->restore(); + canvas->restore(); + }, + [=](DlCanvas* canvas, const DlPaint& paint) { + auto layer_filter = + DlBlurImageFilter::Make(10.0f, 10.0f, DlTileMode::kDecal); + DlPaint layer_paint; + layer_paint.setImageFilter(layer_filter); + canvas->Save(); + canvas->ClipRect(kRenderBounds, ClipOp::kIntersect, false); + canvas->SaveLayer(&kTestBounds, &layer_paint); + canvas->DrawRect(draw_rect, paint); + canvas->Restore(); + canvas->Restore(); + }, + kSaveLayerWithPaintFlags); + CaseParameters case_params("Filtered SaveLayer with clipped content"); + BoundsTolerance tolerance = BoundsTolerance().addAbsolutePadding(6.0f, 6.0f); + + for (auto& provider : CanvasCompareTester::kTestProviders) { + RenderEnvironment env = RenderEnvironment::MakeN32(provider.get()); + env.init_ref(test_params.sk_renderer(), test_params.dl_renderer()); + CanvasCompareTester::quickCompareToReference(env, "default"); + CanvasCompareTester::RenderWith(test_params, env, tolerance, case_params); + } +} + TEST_F(DisplayListCanvas, SaveLayerConsolidation) { float commutable_color_matrix[]{ // clang-format off diff --git a/display_list/utils/dl_matrix_clip_tracker.cc b/display_list/utils/dl_matrix_clip_tracker.cc index 69164b803ef70..2dd0e8fa31a39 100644 --- a/display_list/utils/dl_matrix_clip_tracker.cc +++ b/display_list/utils/dl_matrix_clip_tracker.cc @@ -103,7 +103,8 @@ bool DisplayListMatrixClipTracker::is_3x3(const SkM44& m) { DisplayListMatrixClipTracker::DisplayListMatrixClipTracker( const SkRect& cull_rect, - const SkMatrix& matrix) { + const SkMatrix& matrix) + : original_cull_rect_(cull_rect) { // isEmpty protects us against NaN as we normalize any empty cull rects SkRect cull = cull_rect.isEmpty() ? SkRect::MakeEmpty() : cull_rect; saved_.emplace_back(std::make_unique(matrix, cull)); @@ -113,7 +114,8 @@ DisplayListMatrixClipTracker::DisplayListMatrixClipTracker( DisplayListMatrixClipTracker::DisplayListMatrixClipTracker( const SkRect& cull_rect, - const SkM44& m44) { + const SkM44& m44) + : original_cull_rect_(cull_rect) { // isEmpty protects us against NaN as we normalize any empty cull rects SkRect cull = cull_rect.isEmpty() ? SkRect::MakeEmpty() : cull_rect; if (is_3x3(m44)) { @@ -282,6 +284,18 @@ bool DisplayListMatrixClipTracker::Data::content_culled( return !mapped.intersects(cull_rect_); } +void DisplayListMatrixClipTracker::Data::resetBounds(const SkRect& cull_rect) { + if (!cull_rect.isEmpty()) { + SkRect rect; + mapRect(cull_rect, &rect); + if (!rect.isEmpty()) { + cull_rect_ = rect; + return; + } + } + cull_rect_.setEmpty(); +} + void DisplayListMatrixClipTracker::Data::clipBounds(const SkRect& clip, ClipOp op, bool is_aa) { diff --git a/display_list/utils/dl_matrix_clip_tracker.h b/display_list/utils/dl_matrix_clip_tracker.h index a0d74b85f02af..94ef0ee6683de 100644 --- a/display_list/utils/dl_matrix_clip_tracker.h +++ b/display_list/utils/dl_matrix_clip_tracker.h @@ -27,6 +27,19 @@ class DisplayListMatrixClipTracker { DisplayListMatrixClipTracker(const SkRect& cull_rect, const SkMatrix& matrix); DisplayListMatrixClipTracker(const SkRect& cull_rect, const SkM44& matrix); + // This method should almost never be used as it breaks the encapsulation + // of the enclosing clips. However it is needed for practical purposes in + // some rare cases - such as when a saveLayer is collecting rendering + // operations prior to applying a filter on the entire layer bounds and + // some of those operations fall outside the enclosing clip, but their + // filtered content will spread out from where they were rendered on the + // layer into the enclosing clipped area. + // Omitting the |cull_rect| argument, or passing nullptr, will restore the + // cull rect to the initial value it had when the tracker was constructed. + void resetCullRect(const SkRect* cull_rect = nullptr) { + current_->resetBounds(cull_rect ? *cull_rect : original_cull_rect_); + } + static bool is_3x3(const SkM44& m44); SkRect base_device_cull_rect() const { return saved_[0]->device_cull_rect(); } @@ -106,6 +119,8 @@ class DisplayListMatrixClipTracker { virtual void clipBounds(const SkRect& clip, ClipOp op, bool is_aa); + virtual void resetBounds(const SkRect& cull_rect); + protected: Data(const SkRect& rect) : cull_rect_(rect) {} @@ -116,6 +131,7 @@ class DisplayListMatrixClipTracker { friend class Data3x3; friend class Data4x4; + SkRect original_cull_rect_; Data* current_; std::vector> saved_; }; From d228123705d99448cffe18f403baed82584ce8d2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 14:46:31 -0400 Subject: [PATCH 170/211] Roll Fuchsia Mac SDK from Iqf3gYJ8Vkq8k8l3O... to 7kGBjmX-zBXcg1svE... (#43823) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index f2503c9deb683..6869e4f759a9d 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'Iqf3gYJ8Vkq8k8l3OYAUUrwZJ8eEi2wVosGclDAPxtwC' + 'version': '7kGBjmX-zBXcg1svEd78lkHB3n85_cD7LYmNYYdeQlMC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From 55507168a245acadf38467b72dc95dc2774e9659 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 15:17:26 -0400 Subject: [PATCH 171/211] Roll Skia from 650c980daa72 to 30d458aea0b9 (1 revision) (#43825) https://skia.googlesource.com/skia.git/+log/650c980daa72..30d458aea0b9 2023-07-19 bungeman@google.com Roll HarfBuzz from 49c52fa9 to f94508ed (171 commits) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 6869e4f759a9d..133f5e7394797 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '650c980daa72d887602e701db8f84072e26d4d48', + 'skia_revision': '30d458aea0b994fb40e82029026512a820522bee', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 1816b2116535457230627e70ef3758464f2a44ad Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 16:36:13 -0400 Subject: [PATCH 172/211] Roll Skia from 30d458aea0b9 to b1d6eab1f590 (2 revisions) (#43826) https://skia.googlesource.com/skia.git/+log/30d458aea0b9..b1d6eab1f590 2023-07-19 jmbetancourt@google.com [skottie] plumb vec2 support to SlotManager 2023-07-19 jmbetancourt@google.com [skottie] move color slot tracking to bind call If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 133f5e7394797..875793f324065 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '30d458aea0b994fb40e82029026512a820522bee', + 'skia_revision': 'b1d6eab1f590bf8af7b1f3b062b2ab6a315af4e1', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 064284214f709..b7c852aedb6e5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fee223a1a1dc4320bb059b759c6f9a99 +Signature: 50ac3ff799d2b35849a85128a0fb088a ==================================================================================================== LIBRARY: etc1 From 93f2001c5a8da6651b40625d0b73c889fc6df5fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= <737941+loic-sharma@users.noreply.github.com> Date: Wed, 19 Jul 2023 14:01:57 -0700 Subject: [PATCH 173/211] Add the 'affects: desktop' label to labeler.yml (#43827) The desktop team uses the [`affects: desktop`](https://github.com/flutter/engine/pulls?q=is%3Aopen+label%3A%22affects%3A+desktop%22+sort%3Aupdated-desc) label to [triage](https://github.com/flutter/flutter/wiki/Triage#desktop-platforms-team-team-desktop) pull requests. --- .github/labeler.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/labeler.yml b/.github/labeler.yml index 8affbaa3c41f5..081ed99d5b43f 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -3,6 +3,12 @@ # found in the LICENSE file. # See https://github.com/actions/labeler/blob/main/README.md for docs. +'affects: desktop': + - shell/platform/darwin/common/**/* + - shell/platform/darwin/macos/**/* + - shell/platform/linux/**/* + - shell/platform/windows/**/* + embedder: - shell/platform/embedder From 9ff76910086f43f7fdccd456723963c4499d60ee Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 17:22:41 -0400 Subject: [PATCH 174/211] Roll ANGLE from 4dcaad2a894d to 4515b270772e (2 revisions) (#43830) https://chromium.googlesource.com/angle/angle.git/+log/4dcaad2a894d..4515b270772e 2023-07-19 m.maiya@samsung.com Account for implementations that support large gl_PointSize values 2023-07-19 phanquangminh217@gmail.com Vulkan: Make UtilsVk::copyImage copy YCbCr images properly If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/angle-flutter-engine Please CC bdero@google.com,flutter-engine@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: http://anglebug.com/new To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 875793f324065..cdb5ee91c3d42 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + '4dcaad2a894d90c1f3910d1a11489d64cffdffdd', + Var('chromium_git') + '/angle/angle.git' + '@' + '4515b270772e430dbc7dbfa7d8fd971d515f4267', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index c8715f52c1eb6..90e9c995025e1 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: bc8b7108161e822d0d666c7d0a1c1ba9 +Signature: b563b936b54935820ae32775c093d4c8 ==================================================================================================== LIBRARY: angle @@ -42133,30 +42133,39 @@ ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/Imag ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000007.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000017.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001B.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000023.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000027.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002A.inc + ../../../third_party/angle/LICENSE +ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002B.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.frag.00000000.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.vert.00000000.inc + ../../../third_party/angle/LICENSE ORIGIN: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp + ../../../third_party/angle/LICENSE @@ -42383,30 +42392,39 @@ FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageC FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000007.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000017.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001B.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000023.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000027.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002A.inc +FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002B.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.frag.00000000.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.vert.00000000.inc FILE: ../../../third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp From 50cc3d40ed220468f87ec6e86de537e9eb1a88d4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 17:25:36 -0400 Subject: [PATCH 175/211] Roll Skia from b1d6eab1f590 to bf75ae2f6eec (2 revisions) (#43829) https://skia.googlesource.com/skia.git/+log/b1d6eab1f590..bf75ae2f6eec 2023-07-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 616ec95a04fe to f3c508b81760 (4 revisions) 2023-07-19 johnstiles@google.com Fix assertion in inliner when makeSampler2D is used. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cdb5ee91c3d42..56489d1a368f7 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b1d6eab1f590bf8af7b1f3b062b2ab6a315af4e1', + 'skia_revision': 'bf75ae2f6eec468a52b2cfe93f84b59e810cb132', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b7c852aedb6e5..b0efcaad16af1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 50ac3ff799d2b35849a85128a0fb088a +Signature: cd31dd7d630168c85b1561a32631396f ==================================================================================================== LIBRARY: etc1 From 446d93a0b066383e2079d77011e0fc1ad9026016 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 18:13:10 -0400 Subject: [PATCH 176/211] Roll Skia from bf75ae2f6eec to 8413c82dea43 (1 revision) (#43832) https://skia.googlesource.com/skia.git/+log/bf75ae2f6eec..8413c82dea43 2023-07-19 johnstiles@google.com Fix overflow in matrix-multiply constant folding. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 56489d1a368f7..e3e896d2073f9 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'bf75ae2f6eec468a52b2cfe93f84b59e810cb132', + 'skia_revision': '8413c82dea437c8a9d2ea4814b0eff316c619c11', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b0efcaad16af1..db8c7c0d24fe0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cd31dd7d630168c85b1561a32631396f +Signature: 39c739d58cb41a04cee110690dcff684 ==================================================================================================== LIBRARY: etc1 From c8958426aa83a34be0590033d8297fcac5530b21 Mon Sep 17 00:00:00 2001 From: Jim Graham Date: Wed, 19 Jul 2023 15:26:01 -0700 Subject: [PATCH 177/211] Reland "Add non-rendering operation culling to DisplayListBuilder" (#41463) (#43831) Fixes: https://github.com/flutter/flutter/issues/129862 This reverts commit 886a14e36e987672873fb3ba4718793a6b994872. The framework test that was blocking the previous reland has been [fixed](https://github.com/flutter/flutter/pull/130751) to not rely on non-visible (cullable) operations. --- .../benchmarking/dl_complexity_unittests.cc | 2 +- display_list/display_list.cc | 5 +- display_list/display_list.h | 16 + display_list/display_list_unittests.cc | 160 +++++ display_list/dl_builder.cc | 628 +++++++++++++----- display_list/dl_builder.h | 70 +- display_list/dl_color.h | 32 +- display_list/dl_paint.h | 1 + .../testing/dl_rendering_unittests.cc | 393 ++++++++++- display_list/testing/dl_test_snippets.cc | 2 +- display_list/testing/dl_test_snippets.h | 6 +- display_list/utils/dl_matrix_clip_tracker.h | 4 +- flow/diff_context_unittests.cc | 2 +- flow/layers/container_layer_unittests.cc | 12 +- flow/layers/display_list_layer_unittests.cc | 19 +- flow/layers/opacity_layer_unittests.cc | 4 +- flow/testing/diff_context_test.cc | 2 +- flow/testing/diff_context_test.h | 3 +- impeller/display_list/dl_unittests.cc | 16 +- shell/common/dl_op_spy_unittests.cc | 202 ++++-- 20 files changed, 1267 insertions(+), 312 deletions(-) diff --git a/display_list/benchmarking/dl_complexity_unittests.cc b/display_list/benchmarking/dl_complexity_unittests.cc index 4ec6111485d88..eee77ac9bdf55 100644 --- a/display_list/benchmarking/dl_complexity_unittests.cc +++ b/display_list/benchmarking/dl_complexity_unittests.cc @@ -423,7 +423,7 @@ TEST(DisplayListComplexity, DrawAtlas) { std::vector xforms; for (int i = 0; i < 10; i++) { rects.push_back(SkRect::MakeXYWH(0, 0, 10, 10)); - xforms.push_back(SkRSXform::Make(0, 0, 0, 0)); + xforms.push_back(SkRSXform::Make(1, 0, 0, 0)); } DisplayListBuilder builder; diff --git a/display_list/display_list.cc b/display_list/display_list.cc index 378f86804f260..e06bcf246d3d4 100644 --- a/display_list/display_list.cc +++ b/display_list/display_list.cc @@ -22,7 +22,8 @@ DisplayList::DisplayList() unique_id_(0), bounds_({0, 0, 0, 0}), can_apply_group_opacity_(true), - is_ui_thread_safe_(true) {} + is_ui_thread_safe_(true), + modifies_transparent_black_(false) {} DisplayList::DisplayList(DisplayListStorage&& storage, size_t byte_count, @@ -32,6 +33,7 @@ DisplayList::DisplayList(DisplayListStorage&& storage, const SkRect& bounds, bool can_apply_group_opacity, bool is_ui_thread_safe, + bool modifies_transparent_black, sk_sp rtree) : storage_(std::move(storage)), byte_count_(byte_count), @@ -42,6 +44,7 @@ DisplayList::DisplayList(DisplayListStorage&& storage, bounds_(bounds), can_apply_group_opacity_(can_apply_group_opacity), is_ui_thread_safe_(is_ui_thread_safe), + modifies_transparent_black_(modifies_transparent_black), rtree_(std::move(rtree)) {} DisplayList::~DisplayList() { diff --git a/display_list/display_list.h b/display_list/display_list.h index 4a6f339fdea0d..668a247d5596f 100644 --- a/display_list/display_list.h +++ b/display_list/display_list.h @@ -265,6 +265,19 @@ class DisplayList : public SkRefCnt { bool can_apply_group_opacity() const { return can_apply_group_opacity_; } bool isUIThreadSafe() const { return is_ui_thread_safe_; } + /// @brief Indicates if there are any rendering operations in this + /// DisplayList that will modify a surface of transparent black + /// pixels. + /// + /// This condition can be used to determine whether to create a cleared + /// surface, render a DisplayList into it, and then composite the + /// result into a scene. It is not uncommon for code in the engine to + /// come across such degenerate DisplayList objects when slicing up a + /// frame between platform views. + bool modifies_transparent_black() const { + return modifies_transparent_black_; + } + private: DisplayList(DisplayListStorage&& ptr, size_t byte_count, @@ -274,6 +287,7 @@ class DisplayList : public SkRefCnt { const SkRect& bounds, bool can_apply_group_opacity, bool is_ui_thread_safe, + bool modifies_transparent_black, sk_sp rtree); static uint32_t next_unique_id(); @@ -292,6 +306,8 @@ class DisplayList : public SkRefCnt { const bool can_apply_group_opacity_; const bool is_ui_thread_safe_; + const bool modifies_transparent_black_; + const sk_sp rtree_; void Dispatch(DlOpReceiver& ctx, diff --git a/display_list/display_list_unittests.cc b/display_list/display_list_unittests.cc index 62b58a022ce70..bef888bcf8633 100644 --- a/display_list/display_list_unittests.cc +++ b/display_list/display_list_unittests.cc @@ -24,6 +24,7 @@ #include "third_party/skia/include/core/SkBBHFactory.h" #include "third_party/skia/include/core/SkColorFilter.h" #include "third_party/skia/include/core/SkPictureRecorder.h" +#include "third_party/skia/include/core/SkRSXform.h" #include "third_party/skia/include/core/SkSurface.h" namespace flutter { @@ -3082,5 +3083,164 @@ TEST_F(DisplayListTest, DrawUnorderedRoundRectPathCCW) { check_inverted_bounds(renderer, "DrawRoundRectPath Counter-Clockwise"); } +TEST_F(DisplayListTest, NopOperationsOmittedFromRecords) { + auto run_tests = [](const std::string& name, + void init(DisplayListBuilder & builder, DlPaint & paint), + uint32_t expected_op_count = 0u) { + auto run_one_test = + [init](const std::string& name, + void build(DisplayListBuilder & builder, DlPaint & paint), + uint32_t expected_op_count = 0u) { + DisplayListBuilder builder; + DlPaint paint; + init(builder, paint); + build(builder, paint); + auto list = builder.Build(); + if (list->op_count() != expected_op_count) { + FML_LOG(ERROR) << *list; + } + ASSERT_EQ(list->op_count(), expected_op_count) << name; + ASSERT_TRUE(list->bounds().isEmpty()) << name; + }; + run_one_test( + name + " DrawColor", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.DrawColor(paint.getColor(), paint.getBlendMode()); + }, + expected_op_count); + run_one_test( + name + " DrawPaint", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.DrawPaint(paint); + }, + expected_op_count); + run_one_test( + name + " DrawRect", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.DrawRect({10, 10, 20, 20}, paint); + }, + expected_op_count); + run_one_test( + name + " Other Draw Ops", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.DrawLine({10, 10}, {20, 20}, paint); + builder.DrawOval({10, 10, 20, 20}, paint); + builder.DrawCircle({50, 50}, 20, paint); + builder.DrawRRect(SkRRect::MakeRectXY({10, 10, 20, 20}, 5, 5), paint); + builder.DrawDRRect(SkRRect::MakeRectXY({5, 5, 100, 100}, 5, 5), + SkRRect::MakeRectXY({10, 10, 20, 20}, 5, 5), + paint); + builder.DrawPath(kTestPath1, paint); + builder.DrawArc({10, 10, 20, 20}, 45, 90, true, paint); + SkPoint pts[] = {{10, 10}, {20, 20}}; + builder.DrawPoints(PointMode::kLines, 2, pts, paint); + builder.DrawVertices(TestVertices1, DlBlendMode::kSrcOver, paint); + builder.DrawImage(TestImage1, {10, 10}, DlImageSampling::kLinear, + &paint); + builder.DrawImageRect(TestImage1, SkRect{0.0f, 0.0f, 10.0f, 10.0f}, + SkRect{10.0f, 10.0f, 25.0f, 25.0f}, + DlImageSampling::kLinear, &paint); + builder.DrawImageNine(TestImage1, {10, 10, 20, 20}, + {10, 10, 100, 100}, DlFilterMode::kLinear, + &paint); + SkRSXform xforms[] = {{1, 0, 10, 10}, {0, 1, 10, 10}}; + SkRect rects[] = {{10, 10, 20, 20}, {10, 20, 30, 20}}; + builder.DrawAtlas(TestImage1, xforms, rects, nullptr, 2, + DlBlendMode::kSrcOver, DlImageSampling::kLinear, + nullptr, &paint); + builder.DrawTextBlob(TestBlob1, 10, 10, paint); + + // Dst mode eliminates most rendering ops except for + // the following two, so we'll prune those manually... + if (paint.getBlendMode() != DlBlendMode::kDst) { + builder.DrawDisplayList(TestDisplayList1, paint.getOpacity()); + builder.DrawShadow(kTestPath1, paint.getColor(), 1, true, 1); + } + }, + expected_op_count); + run_one_test( + name + " SaveLayer", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.SaveLayer(nullptr, &paint, nullptr); + builder.DrawRect({10, 10, 20, 20}, DlPaint()); + builder.Restore(); + }, + expected_op_count); + run_one_test( + name + " inside Save", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.Save(); + builder.DrawRect({10, 10, 20, 20}, paint); + builder.Restore(); + }, + expected_op_count); + }; + run_tests("transparent color", // + [](DisplayListBuilder& builder, DlPaint& paint) { + paint.setColor(DlColor::kTransparent()); + }); + run_tests("0 alpha", // + [](DisplayListBuilder& builder, DlPaint& paint) { + // The transparent test above already tested transparent + // black (all 0s), we set White color here so we can test + // the case of all 1s with a 0 alpha + paint.setColor(DlColor::kWhite()); + paint.setAlpha(0); + }); + run_tests("BlendMode::kDst", // + [](DisplayListBuilder& builder, DlPaint& paint) { + paint.setBlendMode(DlBlendMode::kDst); + }); + run_tests("Empty rect clip", // + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.ClipRect(SkRect::MakeEmpty(), ClipOp::kIntersect, false); + }); + run_tests("Empty rrect clip", // + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.ClipRRect(SkRRect::MakeEmpty(), ClipOp::kIntersect, + false); + }); + run_tests("Empty path clip", // + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.ClipPath(SkPath(), ClipOp::kIntersect, false); + }); + run_tests("Transparent SaveLayer", // + [](DisplayListBuilder& builder, DlPaint& paint) { + DlPaint save_paint; + save_paint.setColor(DlColor::kTransparent()); + builder.SaveLayer(nullptr, &save_paint); + }); + run_tests("0 alpha SaveLayer", // + [](DisplayListBuilder& builder, DlPaint& paint) { + DlPaint save_paint; + // The transparent test above already tested transparent + // black (all 0s), we set White color here so we can test + // the case of all 1s with a 0 alpha + save_paint.setColor(DlColor::kWhite()); + save_paint.setAlpha(0); + builder.SaveLayer(nullptr, &save_paint); + }); + run_tests("Dst blended SaveLayer", // + [](DisplayListBuilder& builder, DlPaint& paint) { + DlPaint save_paint; + save_paint.setBlendMode(DlBlendMode::kDst); + builder.SaveLayer(nullptr, &save_paint); + }); + run_tests( + "Nop inside SaveLayer", + [](DisplayListBuilder& builder, DlPaint& paint) { + builder.SaveLayer(nullptr, nullptr); + paint.setBlendMode(DlBlendMode::kDst); + }, + 2u); + run_tests("DrawImage inside Culled SaveLayer", // + [](DisplayListBuilder& builder, DlPaint& paint) { + DlPaint save_paint; + save_paint.setColor(DlColor::kTransparent()); + builder.SaveLayer(nullptr, &save_paint); + builder.DrawImage(TestImage1, {10, 10}, DlImageSampling::kLinear); + }); +} + } // namespace testing } // namespace flutter diff --git a/display_list/dl_builder.cc b/display_list/dl_builder.cc index 1536d54b4160d..b78145c124f42 100644 --- a/display_list/dl_builder.cc +++ b/display_list/dl_builder.cc @@ -6,10 +6,12 @@ #include "flutter/display_list/display_list.h" #include "flutter/display_list/dl_blend_mode.h" +#include "flutter/display_list/dl_op_flags.h" #include "flutter/display_list/dl_op_records.h" #include "flutter/display_list/effects/dl_color_source.h" #include "flutter/display_list/utils/dl_bounds_accumulator.h" #include "fml/logging.h" +#include "third_party/skia/include/core/SkScalar.h" namespace flutter { @@ -70,20 +72,22 @@ sk_sp DisplayListBuilder::Build() { int count = render_op_count_; size_t nested_bytes = nested_bytes_; int nested_count = nested_op_count_; - bool compatible = layer_stack_.back().is_group_opacity_compatible(); + bool compatible = current_layer_->is_group_opacity_compatible(); bool is_safe = is_ui_thread_safe_; + bool affects_transparency = current_layer_->affects_transparent_layer(); used_ = allocated_ = render_op_count_ = op_index_ = 0; nested_bytes_ = nested_op_count_ = 0; + is_ui_thread_safe_ = true; storage_.realloc(bytes); layer_stack_.pop_back(); layer_stack_.emplace_back(); tracker_.reset(); current_ = DlPaint(); - return sk_sp( - new DisplayList(std::move(storage_), bytes, count, nested_bytes, - nested_count, bounds(), compatible, is_safe, rtree())); + return sk_sp(new DisplayList( + std::move(storage_), bytes, count, nested_bytes, nested_count, bounds(), + compatible, is_safe, affects_transparency, rtree())); } DisplayListBuilder::DisplayListBuilder(const SkRect& cull_rect, @@ -389,9 +393,11 @@ void DisplayListBuilder::checkForDeferredSave() { } void DisplayListBuilder::Save() { + bool is_nop = current_layer_->is_nop_; layer_stack_.emplace_back(); current_layer_ = &layer_stack_.back(); current_layer_->has_deferred_save_op_ = true; + current_layer_->is_nop_ = is_nop; tracker_.save(); accumulator()->save(); } @@ -478,18 +484,16 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, const SaveLayerOptions in_options, const DlImageFilter* backdrop) { SaveLayerOptions options = in_options.without_optimizations(); - size_t save_layer_offset = used_; - if (backdrop) { - bounds // - ? Push(0, 1, options, *bounds, backdrop) - : Push(0, 1, options, backdrop); - } else { - bounds // - ? Push(0, 1, options, *bounds) - : Push(0, 1, options); + DisplayListAttributeFlags flags = options.renders_with_attributes() + ? kSaveLayerWithPaintFlags + : kSaveLayerFlags; + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + save(); + current_layer_->is_nop_ = true; + return; } - CheckLayerOpacityCompatibility(options.renders_with_attributes()); - + size_t save_layer_offset = used_; if (options.renders_with_attributes()) { // The actual flood of the outer layer clip will occur after the // (eventual) corresponding restore is called, but rather than @@ -500,17 +504,41 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, // with its full bounds and the right op_index so that it doesn't // get culled during rendering. if (!paint_nops_on_transparency()) { - // We will fill the clip of the outer layer when we restore - AccumulateUnbounded(); + // We will fill the clip of the outer layer when we restore. + // Accumulate should always return true here because if the + // clip was empty then that would have been caught up above + // when we tested the PaintResult. + [[maybe_unused]] bool unclipped = AccumulateUnbounded(); + FML_DCHECK(unclipped); } + CheckLayerOpacityCompatibility(true); layer_stack_.emplace_back(save_layer_offset, true, current_.getImageFilter()); } else { + CheckLayerOpacityCompatibility(false); layer_stack_.emplace_back(save_layer_offset, true, nullptr); } + current_layer_ = &layer_stack_.back(); + tracker_.save(); accumulator()->save(); - current_layer_ = &layer_stack_.back(); + + if (backdrop) { + // A backdrop will affect up to the entire surface, bounded by the clip + // Accumulate should always return true here because if the + // clip was empty then that would have been caught up above + // when we tested the PaintResult. + [[maybe_unused]] bool unclipped = AccumulateUnbounded(); + FML_DCHECK(unclipped); + bounds // + ? Push(0, 1, options, *bounds, backdrop) + : Push(0, 1, options, backdrop); + } else { + bounds // + ? Push(0, 1, options, *bounds) + : Push(0, 1, options); + } + if (options.renders_with_attributes()) { // |current_opacity_compatibility_| does not take an ImageFilter into // account because an individual primitive with an ImageFilter can apply @@ -521,6 +549,7 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, UpdateLayerOpacityCompatibility(false); } } + UpdateLayerResult(result); if (options.renders_with_attributes() && current_.getImageFilter()) { // We use |resetCullRect| here because we will be accumulating bounds of @@ -540,11 +569,6 @@ void DisplayListBuilder::saveLayer(const SkRect* bounds, // we set them as if a clip operation were performed. tracker_.clipRect(*bounds, ClipOp::kIntersect, false); } - - if (backdrop) { - // A backdrop will affect up to the entire surface, bounded by the clip - AccumulateUnbounded(); - } } void DisplayListBuilder::SaveLayer(const SkRect* bounds, const DlPaint* paint, @@ -667,6 +691,11 @@ void DisplayListBuilder::ClipRect(const SkRect& rect, if (!rect.isFinite()) { return; } + tracker_.clipRect(rect, clip_op, is_aa); + if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { + current_layer_->is_nop_ = true; + return; + } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -676,7 +705,6 @@ void DisplayListBuilder::ClipRect(const SkRect& rect, Push(0, 1, rect, is_aa); break; } - tracker_.clipRect(rect, clip_op, is_aa); } void DisplayListBuilder::ClipRRect(const SkRRect& rrect, ClipOp clip_op, @@ -684,6 +712,11 @@ void DisplayListBuilder::ClipRRect(const SkRRect& rrect, if (rrect.isRect()) { clipRect(rrect.rect(), clip_op, is_aa); } else { + tracker_.clipRRect(rrect, clip_op, is_aa); + if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { + current_layer_->is_nop_ = true; + return; + } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -693,7 +726,6 @@ void DisplayListBuilder::ClipRRect(const SkRRect& rrect, Push(0, 1, rrect, is_aa); break; } - tracker_.clipRRect(rrect, clip_op, is_aa); } } void DisplayListBuilder::ClipPath(const SkPath& path, @@ -716,6 +748,11 @@ void DisplayListBuilder::ClipPath(const SkPath& path, return; } } + tracker_.clipPath(path, clip_op, is_aa); + if (current_layer_->is_nop_ || tracker_.is_cull_rect_empty()) { + current_layer_->is_nop_ = true; + return; + } checkForDeferredSave(); switch (clip_op) { case ClipOp::kIntersect: @@ -725,7 +762,6 @@ void DisplayListBuilder::ClipPath(const SkPath& path, Push(0, 1, path, is_aa); break; } - tracker_.clipPath(path, clip_op, is_aa); } bool DisplayListBuilder::QuickReject(const SkRect& bounds) const { @@ -733,27 +769,36 @@ bool DisplayListBuilder::QuickReject(const SkRect& bounds) const { } void DisplayListBuilder::drawPaint() { - Push(0, 1); - CheckLayerOpacityCompatibility(); - AccumulateUnbounded(); + OpResult result = PaintResult(current_, kDrawPaintFlags); + if (result != OpResult::kNoEffect && AccumulateUnbounded()) { + Push(0, 1); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawPaint(const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawPaintFlags); drawPaint(); } void DisplayListBuilder::DrawColor(DlColor color, DlBlendMode mode) { - Push(0, 1, color, mode); - CheckLayerOpacityCompatibility(mode); - AccumulateUnbounded(); + OpResult result = PaintResult(DlPaint(color).setBlendMode(mode)); + if (result != OpResult::kNoEffect && AccumulateUnbounded()) { + Push(0, 1, color, mode); + CheckLayerOpacityCompatibility(mode); + UpdateLayerResult(result); + } } void DisplayListBuilder::drawLine(const SkPoint& p0, const SkPoint& p1) { - Push(0, 1, p0, p1); - CheckLayerOpacityCompatibility(); SkRect bounds = SkRect::MakeLTRB(p0.fX, p0.fY, p1.fX, p1.fY).makeSorted(); DisplayListAttributeFlags flags = (bounds.width() > 0.0f && bounds.height() > 0.0f) ? kDrawLineFlags : kDrawHVLineFlags; - AccumulateOpBounds(bounds, flags); + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && AccumulateOpBounds(bounds, flags)) { + Push(0, 1, p0, p1); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawLine(const SkPoint& p0, const SkPoint& p1, @@ -762,29 +807,45 @@ void DisplayListBuilder::DrawLine(const SkPoint& p0, drawLine(p0, p1); } void DisplayListBuilder::drawRect(const SkRect& rect) { - Push(0, 1, rect); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(rect.makeSorted(), kDrawRectFlags); + DisplayListAttributeFlags flags = kDrawRectFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(rect.makeSorted(), flags)) { + Push(0, 1, rect); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawRect(const SkRect& rect, const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawRectFlags); drawRect(rect); } void DisplayListBuilder::drawOval(const SkRect& bounds) { - Push(0, 1, bounds); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(bounds.makeSorted(), kDrawOvalFlags); + DisplayListAttributeFlags flags = kDrawOvalFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(bounds.makeSorted(), flags)) { + Push(0, 1, bounds); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawOval(const SkRect& bounds, const DlPaint& paint) { SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawOvalFlags); drawOval(bounds); } void DisplayListBuilder::drawCircle(const SkPoint& center, SkScalar radius) { - Push(0, 1, center, radius); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(SkRect::MakeLTRB(center.fX - radius, center.fY - radius, - center.fX + radius, center.fY + radius), - kDrawCircleFlags); + DisplayListAttributeFlags flags = kDrawCircleFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect) { + SkRect bounds = SkRect::MakeLTRB(center.fX - radius, center.fY - radius, + center.fX + radius, center.fY + radius); + if (AccumulateOpBounds(bounds, flags)) { + Push(0, 1, center, radius); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } + } } void DisplayListBuilder::DrawCircle(const SkPoint& center, SkScalar radius, @@ -798,9 +859,14 @@ void DisplayListBuilder::drawRRect(const SkRRect& rrect) { } else if (rrect.isOval()) { drawOval(rrect.rect()); } else { - Push(0, 1, rrect); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(rrect.getBounds(), kDrawRRectFlags); + DisplayListAttributeFlags flags = kDrawRRectFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(rrect.getBounds(), flags)) { + Push(0, 1, rrect); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } } void DisplayListBuilder::DrawRRect(const SkRRect& rrect, const DlPaint& paint) { @@ -809,9 +875,14 @@ void DisplayListBuilder::DrawRRect(const SkRRect& rrect, const DlPaint& paint) { } void DisplayListBuilder::drawDRRect(const SkRRect& outer, const SkRRect& inner) { - Push(0, 1, outer, inner); - CheckLayerOpacityCompatibility(); - AccumulateOpBounds(outer.getBounds(), kDrawDRRectFlags); + DisplayListAttributeFlags flags = kDrawDRRectFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(outer.getBounds(), flags)) { + Push(0, 1, outer, inner); + CheckLayerOpacityCompatibility(); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawDRRect(const SkRRect& outer, const SkRRect& inner, @@ -820,12 +891,17 @@ void DisplayListBuilder::DrawDRRect(const SkRRect& outer, drawDRRect(outer, inner); } void DisplayListBuilder::drawPath(const SkPath& path) { - Push(0, 1, path); - CheckLayerOpacityHairlineCompatibility(); - if (path.isInverseFillType()) { - AccumulateUnbounded(); - } else { - AccumulateOpBounds(path.getBounds(), kDrawPathFlags); + DisplayListAttributeFlags flags = kDrawPathFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect) { + bool is_visible = path.isInverseFillType() + ? AccumulateUnbounded() + : AccumulateOpBounds(path.getBounds(), flags); + if (is_visible) { + Push(0, 1, path); + CheckLayerOpacityHairlineCompatibility(); + UpdateLayerResult(result); + } } } void DisplayListBuilder::DrawPath(const SkPath& path, const DlPaint& paint) { @@ -837,19 +913,23 @@ void DisplayListBuilder::drawArc(const SkRect& bounds, SkScalar start, SkScalar sweep, bool useCenter) { - Push(0, 1, bounds, start, sweep, useCenter); - if (useCenter) { - CheckLayerOpacityHairlineCompatibility(); - } else { - CheckLayerOpacityCompatibility(); - } + DisplayListAttributeFlags flags = // + useCenter // + ? kDrawArcWithCenterFlags + : kDrawArcNoCenterFlags; + OpResult result = PaintResult(current_, flags); // This could be tighter if we compute where the start and end // angles are and then also consider the quadrants swept and // the center if specified. - AccumulateOpBounds(bounds, - useCenter // - ? kDrawArcWithCenterFlags - : kDrawArcNoCenterFlags); + if (result != OpResult::kNoEffect && AccumulateOpBounds(bounds, flags)) { + Push(0, 1, bounds, start, sweep, useCenter); + if (useCenter) { + CheckLayerOpacityHairlineCompatibility(); + } else { + CheckLayerOpacityCompatibility(); + } + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawArc(const SkRect& bounds, SkScalar start, @@ -860,14 +940,31 @@ void DisplayListBuilder::DrawArc(const SkRect& bounds, paint, useCenter ? kDrawArcWithCenterFlags : kDrawArcNoCenterFlags); drawArc(bounds, start, sweep, useCenter); } + +DisplayListAttributeFlags DisplayListBuilder::FlagsForPointMode( + PointMode mode) { + switch (mode) { + case DlCanvas::PointMode::kPoints: + return kDrawPointsAsPointsFlags; + case PointMode::kLines: + return kDrawPointsAsLinesFlags; + case PointMode::kPolygon: + return kDrawPointsAsPolygonFlags; + } + FML_UNREACHABLE(); +} void DisplayListBuilder::drawPoints(PointMode mode, uint32_t count, const SkPoint pts[]) { if (count == 0) { return; } + DisplayListAttributeFlags flags = FlagsForPointMode(mode); + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + return; + } - void* data_ptr; FML_DCHECK(count < DlOpReceiver::kMaxDrawPointsCount); int bytes = count * sizeof(SkPoint); RectBoundsAccumulator ptBounds; @@ -875,21 +972,23 @@ void DisplayListBuilder::drawPoints(PointMode mode, ptBounds.accumulate(pts[i]); } SkRect point_bounds = ptBounds.bounds(); + if (!AccumulateOpBounds(point_bounds, flags)) { + return; + } + + void* data_ptr; switch (mode) { case PointMode::kPoints: data_ptr = Push(bytes, 1, count); - AccumulateOpBounds(point_bounds, kDrawPointsAsPointsFlags); break; case PointMode::kLines: data_ptr = Push(bytes, 1, count); - AccumulateOpBounds(point_bounds, kDrawPointsAsLinesFlags); break; case PointMode::kPolygon: data_ptr = Push(bytes, 1, count); - AccumulateOpBounds(point_bounds, kDrawPointsAsPolygonFlags); break; default: - FML_DCHECK(false); + FML_UNREACHABLE(); return; } CopyV(data_ptr, pts, count); @@ -899,39 +998,30 @@ void DisplayListBuilder::drawPoints(PointMode mode, // bounds of every sub-primitive. // See: https://fiddle.skia.org/c/228459001d2de8db117ce25ef5cedb0c UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); } void DisplayListBuilder::DrawPoints(PointMode mode, uint32_t count, const SkPoint pts[], const DlPaint& paint) { - const DisplayListAttributeFlags* flags; - switch (mode) { - case PointMode::kPoints: - flags = &DisplayListOpFlags::kDrawPointsAsPointsFlags; - break; - case PointMode::kLines: - flags = &DisplayListOpFlags::kDrawPointsAsLinesFlags; - break; - case PointMode::kPolygon: - flags = &DisplayListOpFlags::kDrawPointsAsPolygonFlags; - break; - default: - FML_DCHECK(false); - return; - } - SetAttributesFromPaint(paint, *flags); + SetAttributesFromPaint(paint, FlagsForPointMode(mode)); drawPoints(mode, count, pts); } void DisplayListBuilder::drawVertices(const DlVertices* vertices, DlBlendMode mode) { - void* pod = Push(vertices->size(), 1, mode); - new (pod) DlVertices(vertices); - // DrawVertices applies its colors to the paint so we have no way - // of controlling opacity using the current paint attributes. - // Although, examination of the |mode| might find some predictable - // cases. - UpdateLayerOpacityCompatibility(false); - AccumulateOpBounds(vertices->bounds(), kDrawVerticesFlags); + DisplayListAttributeFlags flags = kDrawVerticesFlags; + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && + AccumulateOpBounds(vertices->bounds(), flags)) { + void* pod = Push(vertices->size(), 1, mode); + new (pod) DlVertices(vertices); + // DrawVertices applies its colors to the paint so we have no way + // of controlling opacity using the current paint attributes. + // Although, examination of the |mode| might find some predictable + // cases. + UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawVertices(const DlVertices* vertices, DlBlendMode mode, @@ -944,17 +1034,23 @@ void DisplayListBuilder::drawImage(const sk_sp image, const SkPoint point, DlImageSampling sampling, bool render_with_attributes) { - render_with_attributes - ? Push(0, 1, image, point, sampling) - : Push(0, 1, image, point, sampling); - CheckLayerOpacityCompatibility(render_with_attributes); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); - SkRect bounds = SkRect::MakeXYWH(point.fX, point.fY, // - image->width(), image->height()); DisplayListAttributeFlags flags = render_with_attributes // ? kDrawImageWithPaintFlags : kDrawImageFlags; - AccumulateOpBounds(bounds, flags); + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + return; + } + SkRect bounds = SkRect::MakeXYWH(point.fX, point.fY, // + image->width(), image->height()); + if (AccumulateOpBounds(bounds, flags)) { + render_with_attributes + ? Push(0, 1, image, point, sampling) + : Push(0, 1, image, point, sampling); + CheckLayerOpacityCompatibility(render_with_attributes); + UpdateLayerResult(result); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); + } } void DisplayListBuilder::DrawImage(const sk_sp& image, const SkPoint point, @@ -974,14 +1070,17 @@ void DisplayListBuilder::drawImageRect(const sk_sp image, DlImageSampling sampling, bool render_with_attributes, SrcRectConstraint constraint) { - Push(0, 1, image, src, dst, sampling, render_with_attributes, - constraint); - CheckLayerOpacityCompatibility(render_with_attributes); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); DisplayListAttributeFlags flags = render_with_attributes ? kDrawImageRectWithPaintFlags : kDrawImageRectFlags; - AccumulateOpBounds(dst, flags); + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && AccumulateOpBounds(dst, flags)) { + Push(0, 1, image, src, dst, sampling, + render_with_attributes, constraint); + CheckLayerOpacityCompatibility(render_with_attributes); + UpdateLayerResult(result); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); + } } void DisplayListBuilder::DrawImageRect(const sk_sp& image, const SkRect& src, @@ -1002,15 +1101,18 @@ void DisplayListBuilder::drawImageNine(const sk_sp image, const SkRect& dst, DlFilterMode filter, bool render_with_attributes) { - render_with_attributes - ? Push(0, 1, image, center, dst, filter) - : Push(0, 1, image, center, dst, filter); - CheckLayerOpacityCompatibility(render_with_attributes); - is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); DisplayListAttributeFlags flags = render_with_attributes ? kDrawImageNineWithPaintFlags : kDrawImageNineFlags; - AccumulateOpBounds(dst, flags); + OpResult result = PaintResult(current_, flags); + if (result != OpResult::kNoEffect && AccumulateOpBounds(dst, flags)) { + render_with_attributes + ? Push(0, 1, image, center, dst, filter) + : Push(0, 1, image, center, dst, filter); + CheckLayerOpacityCompatibility(render_with_attributes); + UpdateLayerResult(result); + is_ui_thread_safe_ = is_ui_thread_safe_ && image->isUIThreadSafe(); + } } void DisplayListBuilder::DrawImageNine(const sk_sp& image, const SkIRect& center, @@ -1034,6 +1136,27 @@ void DisplayListBuilder::drawAtlas(const sk_sp atlas, DlImageSampling sampling, const SkRect* cull_rect, bool render_with_attributes) { + DisplayListAttributeFlags flags = render_with_attributes // + ? kDrawAtlasWithPaintFlags + : kDrawAtlasFlags; + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + return; + } + SkPoint quad[4]; + RectBoundsAccumulator atlasBounds; + for (int i = 0; i < count; i++) { + const SkRect& src = tex[i]; + xform[i].toQuad(src.width(), src.height(), quad); + for (int j = 0; j < 4; j++) { + atlasBounds.accumulate(quad[j]); + } + } + if (atlasBounds.is_empty() || + !AccumulateOpBounds(atlasBounds.bounds(), flags)) { + return; + } + int bytes = count * (sizeof(SkRSXform) + sizeof(SkRect)); void* data_ptr; if (colors != nullptr) { @@ -1062,23 +1185,8 @@ void DisplayListBuilder::drawAtlas(const sk_sp atlas, // on it to distribute the opacity without overlap without checking all // of the transforms and texture rectangles. UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); is_ui_thread_safe_ = is_ui_thread_safe_ && atlas->isUIThreadSafe(); - - SkPoint quad[4]; - RectBoundsAccumulator atlasBounds; - for (int i = 0; i < count; i++) { - const SkRect& src = tex[i]; - xform[i].toQuad(src.width(), src.height(), quad); - for (int j = 0; j < 4; j++) { - atlasBounds.accumulate(quad[j]); - } - } - if (atlasBounds.is_not_empty()) { - DisplayListAttributeFlags flags = render_with_attributes // - ? kDrawAtlasWithPaintFlags - : kDrawAtlasFlags; - AccumulateOpBounds(atlasBounds.bounds(), flags); - } } void DisplayListBuilder::DrawAtlas(const sk_sp& atlas, const SkRSXform xform[], @@ -1102,35 +1210,49 @@ void DisplayListBuilder::DrawAtlas(const sk_sp& atlas, void DisplayListBuilder::DrawDisplayList(const sk_sp display_list, SkScalar opacity) { - DlPaint current_paint = current_; - Push(0, 1, display_list, opacity); - is_ui_thread_safe_ = is_ui_thread_safe_ && display_list->isUIThreadSafe(); - // Not really necessary if the developer is interacting with us via - // our attribute-state-less DlCanvas methods, but this avoids surprises - // for those who may have been using the stateful Dispatcher methods. - SetAttributesFromPaint(current_paint, - DisplayListOpFlags::kSaveLayerWithPaintFlags); - + if (!SkScalarIsFinite(opacity) || opacity <= SK_ScalarNearlyZero || + display_list->op_count() == 0 || display_list->bounds().isEmpty() || + current_layer_->is_nop_) { + return; + } const SkRect bounds = display_list->bounds(); + bool accumulated; switch (accumulator()->type()) { case BoundsAccumulatorType::kRect: - AccumulateOpBounds(bounds, kDrawDisplayListFlags); + accumulated = AccumulateOpBounds(bounds, kDrawDisplayListFlags); break; case BoundsAccumulatorType::kRTree: auto rtree = display_list->rtree(); if (rtree) { std::list rects = rtree->searchAndConsolidateRects(bounds, false); + accumulated = false; for (const SkRect& rect : rects) { // TODO (https://github.com/flutter/flutter/issues/114919): Attributes // are not necessarily `kDrawDisplayListFlags`. - AccumulateOpBounds(rect, kDrawDisplayListFlags); + if (AccumulateOpBounds(rect, kDrawDisplayListFlags)) { + accumulated = true; + } } } else { - AccumulateOpBounds(bounds, kDrawDisplayListFlags); + accumulated = AccumulateOpBounds(bounds, kDrawDisplayListFlags); } break; } + if (!accumulated) { + return; + } + + DlPaint current_paint = current_; + Push(0, 1, display_list, + opacity < SK_Scalar1 ? opacity : SK_Scalar1); + is_ui_thread_safe_ = is_ui_thread_safe_ && display_list->isUIThreadSafe(); + // Not really necessary if the developer is interacting with us via + // our attribute-state-less DlCanvas methods, but this avoids surprises + // for those who may have been using the stateful Dispatcher methods. + SetAttributesFromPaint(current_paint, + DisplayListOpFlags::kSaveLayerWithPaintFlags); + // The non-nested op count accumulated in the |Push| method will include // this call to |drawDisplayList| for non-nested op count metrics. // But, for nested op count metrics we want the |drawDisplayList| call itself @@ -1140,18 +1262,38 @@ void DisplayListBuilder::DrawDisplayList(const sk_sp display_list, nested_op_count_ += display_list->op_count(true) - 1; nested_bytes_ += display_list->bytes(true); UpdateLayerOpacityCompatibility(display_list->can_apply_group_opacity()); + // Nop DisplayLists are eliminated above so we either affect transparent + // pixels or we do not. We should not have [kNoEffect]. + UpdateLayerResult(display_list->modifies_transparent_black() + ? OpResult::kAffectsAll + : OpResult::kPreservesTransparency); } void DisplayListBuilder::drawTextBlob(const sk_sp blob, SkScalar x, SkScalar y) { - Push(0, 1, blob, x, y); - AccumulateOpBounds(blob->bounds().makeOffset(x, y), kDrawTextBlobFlags); - // There is no way to query if the glyphs of a text blob overlap and - // there are no current guarantees from either Skia or Impeller that - // they will protect overlapping glyphs from the effects of overdraw - // so we must make the conservative assessment that this DL layer is - // not compatible with group opacity inheritance. - UpdateLayerOpacityCompatibility(false); + DisplayListAttributeFlags flags = kDrawTextBlobFlags; + OpResult result = PaintResult(current_, flags); + if (result == OpResult::kNoEffect) { + return; + } + bool unclipped = AccumulateOpBounds(blob->bounds().makeOffset(x, y), flags); + // TODO(https://github.com/flutter/flutter/issues/82202): Remove once the + // unit tests can use Fuchsia's font manager instead of the empty default. + // Until then we might encounter empty bounds for otherwise valid text and + // thus we ignore the results from AccumulateOpBounds. +#if defined(OS_FUCHSIA) + unclipped = true; +#endif // OS_FUCHSIA + if (unclipped) { + Push(0, 1, blob, x, y); + // There is no way to query if the glyphs of a text blob overlap and + // there are no current guarantees from either Skia or Impeller that + // they will protect overlapping glyphs from the effects of overdraw + // so we must make the conservative assessment that this DL layer is + // not compatible with group opacity inheritance. + UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); + } } void DisplayListBuilder::DrawTextBlob(const sk_sp& blob, SkScalar x, @@ -1165,14 +1307,19 @@ void DisplayListBuilder::DrawShadow(const SkPath& path, const SkScalar elevation, bool transparent_occluder, SkScalar dpr) { - transparent_occluder // - ? Push(0, 1, path, color, elevation, dpr) - : Push(0, 1, path, color, elevation, dpr); - - SkRect shadow_bounds = - DlCanvas::ComputeShadowBounds(path, elevation, dpr, GetTransform()); - AccumulateOpBounds(shadow_bounds, kDrawShadowFlags); - UpdateLayerOpacityCompatibility(false); + OpResult result = PaintResult(DlPaint(color)); + if (result != OpResult::kNoEffect) { + SkRect shadow_bounds = + DlCanvas::ComputeShadowBounds(path, elevation, dpr, GetTransform()); + if (AccumulateOpBounds(shadow_bounds, kDrawShadowFlags)) { + transparent_occluder // + ? Push(0, 1, path, color, elevation, + dpr) + : Push(0, 1, path, color, elevation, dpr); + UpdateLayerOpacityCompatibility(false); + UpdateLayerResult(result); + } + } } bool DisplayListBuilder::ComputeFilteredBounds(SkRect& bounds, @@ -1242,31 +1389,40 @@ bool DisplayListBuilder::AdjustBoundsForPaint(SkRect& bounds, return true; } -void DisplayListBuilder::AccumulateUnbounded() { - accumulator()->accumulate(tracker_.device_cull_rect(), op_index_ - 1); +bool DisplayListBuilder::AccumulateUnbounded() { + SkRect clip = tracker_.device_cull_rect(); + if (clip.isEmpty()) { + return false; + } + accumulator()->accumulate(clip, op_index_); + return true; } -void DisplayListBuilder::AccumulateOpBounds(SkRect& bounds, +bool DisplayListBuilder::AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags) { if (AdjustBoundsForPaint(bounds, flags)) { - AccumulateBounds(bounds); + return AccumulateBounds(bounds); } else { - AccumulateUnbounded(); + return AccumulateUnbounded(); } } -void DisplayListBuilder::AccumulateBounds(SkRect& bounds) { - tracker_.mapRect(&bounds); - if (bounds.intersect(tracker_.device_cull_rect())) { - accumulator()->accumulate(bounds, op_index_ - 1); +bool DisplayListBuilder::AccumulateBounds(SkRect& bounds) { + if (!bounds.isEmpty()) { + tracker_.mapRect(&bounds); + if (bounds.intersect(tracker_.device_cull_rect())) { + accumulator()->accumulate(bounds, op_index_); + return true; + } } + return false; } bool DisplayListBuilder::paint_nops_on_transparency() { // SkImageFilter::canComputeFastBounds tests for transparency behavior // This test assumes that the blend mode checked down below will // NOP on transparent black. - if (current_.getImageFilter() && - current_.getImageFilter()->modifies_transparent_black()) { + if (current_.getImageFilterPtr() && + current_.getImageFilterPtr()->modifies_transparent_black()) { return false; } @@ -1276,8 +1432,8 @@ bool DisplayListBuilder::paint_nops_on_transparency() { // save layer untouched out to the edge of the output surface. // This test assumes that the blend mode checked down below will // NOP on transparent black. - if (current_.getColorFilter() && - current_.getColorFilter()->modifies_transparent_black()) { + if (current_.getColorFilterPtr() && + current_.getColorFilterPtr()->modifies_transparent_black()) { return false; } @@ -1334,4 +1490,130 @@ bool DisplayListBuilder::paint_nops_on_transparency() { break; } } + +DlColor DisplayListBuilder::GetEffectiveColor(const DlPaint& paint, + DisplayListAttributeFlags flags) { + DlColor color; + if (flags.applies_color()) { + const DlColorSource* source = paint.getColorSourcePtr(); + if (source) { + if (source->asColor()) { + color = source->asColor()->color(); + } else { + color = source->is_opaque() ? DlColor::kBlack() : kAnyColor; + } + } else { + color = paint.getColor(); + } + } else if (flags.applies_alpha()) { + // If the operation applies alpha, but not color, then the only impact + // of the alpha is to modulate the output towards transparency. + // We can not guarantee an opaque source even if the alpha is opaque + // since that would require knowing something about the colors that + // the alpha is modulating, but we can guarantee a transparent source + // if the alpha is 0. + color = (paint.getAlpha() == 0) ? DlColor::kTransparent() : kAnyColor; + } else { + color = kAnyColor; + } + if (flags.applies_image_filter()) { + auto filter = paint.getImageFilterPtr(); + if (filter) { + if (!color.isTransparent() || filter->modifies_transparent_black()) { + color = kAnyColor; + } + } + } + if (flags.applies_color_filter()) { + auto filter = paint.getColorFilterPtr(); + if (filter) { + if (!color.isTransparent() || filter->modifies_transparent_black()) { + color = kAnyColor; + } + } + } + return color; +} + +DisplayListBuilder::OpResult DisplayListBuilder::PaintResult( + const DlPaint& paint, + DisplayListAttributeFlags flags) { + if (current_layer_->is_nop_) { + return OpResult::kNoEffect; + } + if (flags.applies_blend()) { + switch (paint.getBlendMode()) { + // Nop blend mode (singular, there is only one) + case DlBlendMode::kDst: + return OpResult::kNoEffect; + + // Always clears pixels blend mode (singular, there is only one) + case DlBlendMode::kClear: + return OpResult::kPreservesTransparency; + + case DlBlendMode::kHue: + case DlBlendMode::kSaturation: + case DlBlendMode::kColor: + case DlBlendMode::kLuminosity: + case DlBlendMode::kColorBurn: + return GetEffectiveColor(paint, flags).isTransparent() + ? OpResult::kNoEffect + : OpResult::kAffectsAll; + + // kSrcIn modifies pixels towards transparency + case DlBlendMode::kSrcIn: + return OpResult::kPreservesTransparency; + + // These blend modes preserve destination alpha + case DlBlendMode::kSrcATop: + case DlBlendMode::kDstOut: + return GetEffectiveColor(paint, flags).isTransparent() + ? OpResult::kNoEffect + : OpResult::kPreservesTransparency; + + // Always destructive blend modes, potentially not affecting transparency + case DlBlendMode::kSrc: + case DlBlendMode::kSrcOut: + case DlBlendMode::kDstATop: + return GetEffectiveColor(paint, flags).isTransparent() + ? OpResult::kPreservesTransparency + : OpResult::kAffectsAll; + + // The kDstIn blend mode modifies the destination unless the + // source color is opaque. + case DlBlendMode::kDstIn: + return GetEffectiveColor(paint, flags).isOpaque() + ? OpResult::kNoEffect + : OpResult::kPreservesTransparency; + + // The next group of blend modes modifies the destination unless the + // source color is transparent. + case DlBlendMode::kSrcOver: + case DlBlendMode::kDstOver: + case DlBlendMode::kXor: + case DlBlendMode::kPlus: + case DlBlendMode::kScreen: + case DlBlendMode::kMultiply: + case DlBlendMode::kOverlay: + case DlBlendMode::kDarken: + case DlBlendMode::kLighten: + case DlBlendMode::kColorDodge: + case DlBlendMode::kHardLight: + case DlBlendMode::kSoftLight: + case DlBlendMode::kDifference: + case DlBlendMode::kExclusion: + return GetEffectiveColor(paint, flags).isTransparent() + ? OpResult::kNoEffect + : OpResult::kAffectsAll; + + // Modulate only leaves the pixel alone when the source is white. + case DlBlendMode::kModulate: + return GetEffectiveColor(paint, flags) == DlColor::kWhite() + ? OpResult::kNoEffect + : OpResult::kPreservesTransparency; + } + } + return OpResult::kAffectsAll; +} + } // namespace flutter diff --git a/display_list/dl_builder.h b/display_list/dl_builder.h index 1d9cb8eb12299..ab0bce0db3c38 100644 --- a/display_list/dl_builder.h +++ b/display_list/dl_builder.h @@ -506,15 +506,13 @@ class DisplayListBuilder final : public virtual DlCanvas, class LayerInfo { public: - explicit LayerInfo(size_t save_offset = 0, - bool has_layer = false, - std::shared_ptr filter = nullptr) + explicit LayerInfo( + size_t save_offset = 0, + bool has_layer = false, + const std::shared_ptr& filter = nullptr) : save_offset_(save_offset), has_layer_(has_layer), - cannot_inherit_opacity_(false), - has_compatible_op_(false), - filter_(filter), - is_unbounded_(false) {} + filter_(filter) {} // The offset into the memory buffer where the saveLayer DLOp record // for this saveLayer() call is placed. This may be needed if the @@ -527,6 +525,9 @@ class DisplayListBuilder final : public virtual DlCanvas, bool has_layer() const { return has_layer_; } bool cannot_inherit_opacity() const { return cannot_inherit_opacity_; } bool has_compatible_op() const { return has_compatible_op_; } + bool affects_transparent_layer() const { + return affects_transparent_layer_; + } bool is_group_opacity_compatible() const { return !cannot_inherit_opacity_; @@ -549,6 +550,12 @@ class DisplayListBuilder final : public virtual DlCanvas, } } + // Records that the current layer contains an op that produces visible + // output on a transparent surface. + void add_visible_op() { + affects_transparent_layer_ = true; + } + // The filter to apply to the layer bounds when it is restored std::shared_ptr filter() { return filter_; } @@ -583,11 +590,13 @@ class DisplayListBuilder final : public virtual DlCanvas, private: size_t save_offset_; bool has_layer_; - bool cannot_inherit_opacity_; - bool has_compatible_op_; + bool cannot_inherit_opacity_ = false; + bool has_compatible_op_ = false; std::shared_ptr filter_; - bool is_unbounded_; + bool is_unbounded_ = false; bool has_deferred_save_op_ = false; + bool is_nop_ = false; + bool affects_transparent_layer_ = false; friend class DisplayListBuilder; }; @@ -701,9 +710,40 @@ class DisplayListBuilder final : public virtual DlCanvas, return accumulator_->rtree(); } + static DisplayListAttributeFlags FlagsForPointMode(PointMode mode); + + enum class OpResult { + kNoEffect, + kPreservesTransparency, + kAffectsAll, + }; + bool paint_nops_on_transparency(); + OpResult PaintResult(const DlPaint& paint, + DisplayListAttributeFlags flags = kDrawPaintFlags); + + void UpdateLayerResult(OpResult result) { + switch (result) { + case OpResult::kNoEffect: + case OpResult::kPreservesTransparency: + break; + case OpResult::kAffectsAll: + current_layer_->add_visible_op(); + break; + } + } + + // kAnyColor is a non-opaque and non-transparent color that will not + // trigger any short-circuit tests about the results of a blend. + static constexpr DlColor kAnyColor = DlColor::kMidGrey().withAlpha(0x80); + static_assert(!kAnyColor.isOpaque()); + static_assert(!kAnyColor.isTransparent()); + static DlColor GetEffectiveColor(const DlPaint& paint, + DisplayListAttributeFlags flags); // Computes the bounds of an operation adjusted for a given ImageFilter + // and returns whether the computation was possible. If the method + // returns false then the caller should assume the worst about the bounds. static bool ComputeFilteredBounds(SkRect& bounds, const DlImageFilter* filter); @@ -713,24 +753,24 @@ class DisplayListBuilder final : public virtual DlCanvas, // Records the fact that we encountered an op that either could not // estimate its bounds or that fills all of the destination space. - void AccumulateUnbounded(); + bool AccumulateUnbounded(); // Records the bounds for an op after modifying them according to the // supplied attribute flags and transforming by the current matrix. - void AccumulateOpBounds(const SkRect& bounds, + bool AccumulateOpBounds(const SkRect& bounds, DisplayListAttributeFlags flags) { SkRect safe_bounds = bounds; - AccumulateOpBounds(safe_bounds, flags); + return AccumulateOpBounds(safe_bounds, flags); } // Records the bounds for an op after modifying them according to the // supplied attribute flags and transforming by the current matrix // and clipping against the current clip. - void AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags); + bool AccumulateOpBounds(SkRect& bounds, DisplayListAttributeFlags flags); // Records the given bounds after transforming by the current matrix // and clipping against the current clip. - void AccumulateBounds(SkRect& bounds); + bool AccumulateBounds(SkRect& bounds); DlPaint current_; }; diff --git a/display_list/dl_color.h b/display_list/dl_color.h index d926e58c3b818..92a39150d2f2e 100644 --- a/display_list/dl_color.h +++ b/display_list/dl_color.h @@ -34,20 +34,20 @@ struct DlColor { uint32_t argb; - bool isOpaque() const { return getAlpha() == 0xFF; } - bool isTransparent() const { return getAlpha() == 0; } + constexpr bool isOpaque() const { return getAlpha() == 0xFF; } + constexpr bool isTransparent() const { return getAlpha() == 0; } - int getAlpha() const { return argb >> 24; } - int getRed() const { return (argb >> 16) & 0xFF; } - int getGreen() const { return (argb >> 8) & 0xFF; } - int getBlue() const { return argb & 0xFF; } + constexpr int getAlpha() const { return argb >> 24; } + constexpr int getRed() const { return (argb >> 16) & 0xFF; } + constexpr int getGreen() const { return (argb >> 8) & 0xFF; } + constexpr int getBlue() const { return argb & 0xFF; } - float getAlphaF() const { return toF(getAlpha()); } - float getRedF() const { return toF(getRed()); } - float getGreenF() const { return toF(getGreen()); } - float getBlueF() const { return toF(getBlue()); } + constexpr float getAlphaF() const { return toF(getAlpha()); } + constexpr float getRedF() const { return toF(getRed()); } + constexpr float getGreenF() const { return toF(getGreen()); } + constexpr float getBlueF() const { return toF(getBlue()); } - uint32_t premultipliedArgb() const { + constexpr uint32_t premultipliedArgb() const { if (isOpaque()) { return argb; } @@ -58,20 +58,20 @@ struct DlColor { toC(getBlueF() * f); } - DlColor withAlpha(uint8_t alpha) const { // + constexpr DlColor withAlpha(uint8_t alpha) const { // return (argb & 0x00FFFFFF) | (alpha << 24); } - DlColor withRed(uint8_t red) const { // + constexpr DlColor withRed(uint8_t red) const { // return (argb & 0xFF00FFFF) | (red << 16); } - DlColor withGreen(uint8_t green) const { // + constexpr DlColor withGreen(uint8_t green) const { // return (argb & 0xFFFF00FF) | (green << 8); } - DlColor withBlue(uint8_t blue) const { // + constexpr DlColor withBlue(uint8_t blue) const { // return (argb & 0xFFFFFF00) | (blue << 0); } - DlColor modulateOpacity(float opacity) const { + constexpr DlColor modulateOpacity(float opacity) const { return opacity <= 0 ? withAlpha(0) : opacity >= 1 ? *this : withAlpha(round(getAlpha() * opacity)); diff --git a/display_list/dl_paint.h b/display_list/dl_paint.h index 77619a2567164..3d9220f57e3d6 100644 --- a/display_list/dl_paint.h +++ b/display_list/dl_paint.h @@ -83,6 +83,7 @@ class DlPaint { color_.argb = alpha << 24 | (color_.argb & 0x00FFFFFF); return *this; } + SkScalar getOpacity() const { return color_.getAlphaF(); } DlPaint& setOpacity(SkScalar opacity) { setAlpha(SkScalarRoundToInt(opacity * 0xff)); return *this; diff --git a/display_list/testing/dl_rendering_unittests.cc b/display_list/testing/dl_rendering_unittests.cc index 76b16cc2ccc3e..af6b0cf8682e2 100644 --- a/display_list/testing/dl_rendering_unittests.cc +++ b/display_list/testing/dl_rendering_unittests.cc @@ -9,6 +9,7 @@ #include "flutter/display_list/dl_op_flags.h" #include "flutter/display_list/dl_sampling_options.h" #include "flutter/display_list/skia/dl_sk_canvas.h" +#include "flutter/display_list/skia/dl_sk_conversions.h" #include "flutter/display_list/skia/dl_sk_dispatcher.h" #include "flutter/display_list/testing/dl_test_surface_provider.h" #include "flutter/display_list/utils/dl_comparable.h" @@ -283,20 +284,26 @@ using BackendType = DlSurfaceProvider::BackendType; class RenderResult { public: - explicit RenderResult(const sk_sp& surface) { + explicit RenderResult(const sk_sp& surface, + bool take_snapshot = false) { SkImageInfo info = surface->imageInfo(); info = SkImageInfo::MakeN32Premul(info.dimensions()); addr_ = malloc(info.computeMinByteSize() * info.height()); pixmap_.reset(info, addr_, info.minRowBytes()); - EXPECT_TRUE(surface->readPixels(pixmap_, 0, 0)); + surface->readPixels(pixmap_, 0, 0); + if (take_snapshot) { + image_ = surface->makeImageSnapshot(); + } } ~RenderResult() { free(addr_); } + sk_sp image() const { return image_; } int width() const { return pixmap_.width(); } int height() const { return pixmap_.height(); } const uint32_t* addr32(int x, int y) const { return pixmap_.addr32(x, y); } private: + sk_sp image_; SkPixmap pixmap_; void* addr_ = nullptr; }; @@ -912,7 +919,14 @@ class CanvasCompareTester { }; DlRenderer dl_safe_restore = [=](DlCanvas* cv, const DlPaint& p) { // Draw another primitive to disable peephole optimizations - cv->DrawRect(kRenderBounds.makeOffset(500, 500), DlPaint()); + // As the rendering op rejection in the DisplayList Builder + // gets smarter and smarter, this operation has had to get + // sneakier and sneakier about specifying an operation that + // won't practically show up in the output, but technically + // can't be culled. + cv->DrawRect( + SkRect::MakeXYWH(kRenderCenterX, kRenderCenterY, 0.0001, 0.0001), + DlPaint()); cv->Restore(); }; SkRenderer sk_opt_restore = [=](SkCanvas* cv, const SkPaint& p) { @@ -3831,7 +3845,6 @@ TEST_F(DisplayListCanvas, MatrixColorFilterOpacityCommuteCheck) { } #define FOR_EACH_BLEND_MODE_ENUM(FUNC) \ - FUNC(kSrc) \ FUNC(kClear) \ FUNC(kSrc) \ FUNC(kDst) \ @@ -3862,6 +3875,18 @@ TEST_F(DisplayListCanvas, MatrixColorFilterOpacityCommuteCheck) { FUNC(kColor) \ FUNC(kLuminosity) +// This function serves both to enhance error output below and to double +// check that the macro supplies all modes (otherwise it won't compile) +static std::string BlendModeToString(DlBlendMode mode) { + switch (mode) { +#define MODE_CASE(m) \ + case DlBlendMode::m: \ + return #m; + FOR_EACH_BLEND_MODE_ENUM(MODE_CASE) +#undef MODE_CASE + } +} + TEST_F(DisplayListCanvas, BlendColorFilterModifyTransparencyCheck) { std::vector> environments; for (auto& provider : CanvasCompareTester::kTestProviders) { @@ -3872,7 +3897,8 @@ TEST_F(DisplayListCanvas, BlendColorFilterModifyTransparencyCheck) { auto test_mode_color = [&environments](DlBlendMode mode, DlColor color) { std::stringstream desc_str; - desc_str << "blend[" << mode << ", " << color << "]"; + std::string mode_string = BlendModeToString(mode); + desc_str << "blend[" << mode_string << ", " << color << "]"; std::string desc = desc_str.str(); DlBlendColorFilter filter(color, mode); if (filter.modifies_transparent_black()) { @@ -3933,7 +3959,8 @@ TEST_F(DisplayListCanvas, BlendColorFilterOpacityCommuteCheck) { auto test_mode_color = [&environments](DlBlendMode mode, DlColor color) { std::stringstream desc_str; - desc_str << "blend[" << mode << ", " << color << "]"; + std::string mode_string = BlendModeToString(mode); + desc_str << "blend[" << mode_string << ", " << color << "]"; std::string desc = desc_str.str(); DlBlendColorFilter filter(color, mode); if (filter.can_commute_with_opacity()) { @@ -3992,7 +4019,359 @@ TEST_F(DisplayListCanvas, BlendColorFilterOpacityCommuteCheck) { #undef TEST_MODE } -#undef FOR_EACH_ENUM +class DisplayListNopTest : public DisplayListCanvas { + // The following code uses the acronym MTB for "modifies_transparent_black" + + protected: + DisplayListNopTest() : DisplayListCanvas() { + test_src_colors = { + DlColor::kBlack().withAlpha(0), // transparent black + DlColor::kBlack().withAlpha(0x7f), // half transparent black + DlColor::kWhite().withAlpha(0x7f), // half transparent white + DlColor::kBlack(), // opaque black + DlColor::kWhite(), // opaque white + DlColor::kRed(), // opaque red + DlColor::kGreen(), // opaque green + DlColor::kBlue(), // opaque blue + DlColor::kDarkGrey(), // dark grey + DlColor::kLightGrey(), // light grey + }; + + // We test against a color cube of 3x3x3 colors [55,aa,ff] + // plus transparency as the first color/pixel + test_dst_colors.push_back(DlColor::kTransparent()); + const int step = 0x55; + static_assert(step * 3 == 255); + for (int a = step; a < 256; a += step) { + for (int r = step; r < 256; r += step) { + for (int g = step; g < 256; g += step) { + for (int b = step; b < 256; b += step) { + test_dst_colors.push_back(DlColor(a << 24 | r << 16 | g << 8 | b)); + } + } + } + } + + static constexpr float color_filter_matrix_nomtb[] = { + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + }; + static constexpr float color_filter_matrix_mtb[] = { + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.0, // + 0.0001, 0.0001, 0.0001, 0.9997, 0.1, // + }; + color_filter_nomtb = DlMatrixColorFilter::Make(color_filter_matrix_nomtb); + color_filter_mtb = DlMatrixColorFilter::Make(color_filter_matrix_mtb); + EXPECT_FALSE(color_filter_nomtb->modifies_transparent_black()); + EXPECT_TRUE(color_filter_mtb->modifies_transparent_black()); + + test_data = + get_output(test_dst_colors.size(), 1, true, [this](SkCanvas* canvas) { + int x = 0; + for (DlColor color : test_dst_colors) { + SkPaint paint; + paint.setColor(color); + paint.setBlendMode(SkBlendMode::kSrc); + canvas->drawRect(SkRect::MakeXYWH(x, 0, 1, 1), paint); + x++; + } + }); + + // For image-on-image tests, the src and dest images will have repeated + // rows/columns that have every color, but laid out at right angles to + // each other so we see an interaction with every test color against + // every other test color. + int data_count = test_data->image()->width(); + test_image_dst_data = get_output( + data_count, data_count, true, [this, data_count](SkCanvas* canvas) { + ASSERT_EQ(test_data->width(), data_count); + ASSERT_EQ(test_data->height(), 1); + for (int y = 0; y < data_count; y++) { + canvas->drawImage(test_data->image().get(), 0, y); + } + }); + test_image_src_data = get_output( + data_count, data_count, true, [this, data_count](SkCanvas* canvas) { + ASSERT_EQ(test_data->width(), data_count); + ASSERT_EQ(test_data->height(), 1); + canvas->translate(data_count, 0); + canvas->rotate(90); + for (int y = 0; y < data_count; y++) { + canvas->drawImage(test_data->image().get(), 0, y); + } + }); + // Double check that the pixel data is laid out in orthogonal stripes + for (int y = 0; y < data_count; y++) { + for (int x = 0; x < data_count; x++) { + EXPECT_EQ(*test_image_dst_data->addr32(x, y), *test_data->addr32(x, 0)); + EXPECT_EQ(*test_image_src_data->addr32(x, y), *test_data->addr32(y, 0)); + } + } + } + + // These flags are 0 by default until they encounter a counter-example + // result and get set. + static constexpr int kWasNotNop = 0x1; // Some tested pixel was modified + static constexpr int kWasMTB = 0x2; // A transparent pixel was modified + + std::vector test_src_colors; + std::vector test_dst_colors; + + std::shared_ptr color_filter_nomtb; + std::shared_ptr color_filter_mtb; + + // A 1-row image containing every color in test_dst_colors + std::unique_ptr test_data; + + // A square image containing test_data duplicated in each row + std::unique_ptr test_image_dst_data; + + // A square image containing test_data duplicated in each column + std::unique_ptr test_image_src_data; + + std::unique_ptr get_output( + int w, + int h, + bool snapshot, + const std::function& renderer) { + auto surface = SkSurfaces::Raster(SkImageInfo::MakeN32Premul(w, h)); + SkCanvas* canvas = surface->getCanvas(); + renderer(canvas); + canvas->flush(); + surface->flushAndSubmit(true); + return std::make_unique(surface, snapshot); + } + + int check_color_result(DlColor dst_color, + DlColor result_color, + const sk_sp& dl, + const std::string& desc) { + int ret = 0; + bool is_error = false; + if (dst_color.isTransparent() && !result_color.isTransparent()) { + ret |= kWasMTB; + is_error = !dl->modifies_transparent_black(); + } + if (result_color != dst_color) { + ret |= kWasNotNop; + is_error = (dl->op_count() == 0u); + } + if (is_error) { + FML_LOG(ERROR) << std::hex << dst_color << " filters to " << result_color + << desc; + } + return ret; + } + + int check_image_result(const std::unique_ptr& dst_data, + const std::unique_ptr& result_data, + const sk_sp& dl, + const std::string& desc) { + EXPECT_EQ(dst_data->width(), result_data->width()); + EXPECT_EQ(dst_data->height(), result_data->height()); + int all_flags = 0; + for (int y = 0; y < dst_data->height(); y++) { + const uint32_t* dst_pixels = dst_data->addr32(0, y); + const uint32_t* result_pixels = result_data->addr32(0, y); + for (int x = 0; x < dst_data->width(); x++) { + all_flags |= + check_color_result(dst_pixels[x], result_pixels[x], dl, desc); + } + } + return all_flags; + } + + void report_results(int all_flags, + const sk_sp& dl, + const std::string& desc) { + if (!dl->modifies_transparent_black()) { + EXPECT_TRUE((all_flags & kWasMTB) == 0); + } else if ((all_flags & kWasMTB) == 0) { + FML_LOG(INFO) << "combination does not affect transparency: " << desc; + } + if (dl->op_count() == 0u) { + EXPECT_TRUE((all_flags & kWasNotNop) == 0); + } else if ((all_flags & kWasNotNop) == 0) { + FML_LOG(INFO) << "combination could be classified as a nop: " << desc; + } + }; + + void test_mode_color_via_filter(DlBlendMode mode, DlColor color) { + std::stringstream desc_stream; + desc_stream << " using SkColorFilter::filterColor() with: "; + desc_stream << BlendModeToString(mode); + desc_stream << "/" << color; + std::string desc = desc_stream.str(); + DisplayListBuilder builder({0.0f, 0.0f, 100.0f, 100.0f}); + DlPaint paint = DlPaint(color).setBlendMode(mode); + builder.DrawRect({0.0f, 0.0f, 10.0f, 10.0f}, paint); + auto dl = builder.Build(); + if (dl->modifies_transparent_black()) { + ASSERT_TRUE(dl->op_count() != 0u); + } + + auto sk_mode = static_cast(mode); + auto sk_color_filter = SkColorFilters::Blend(color, sk_mode); + int all_flags = 0; + if (sk_color_filter) { + for (DlColor dst_color : test_dst_colors) { + DlColor result = sk_color_filter->filterColor(dst_color); + all_flags |= check_color_result(dst_color, result, dl, desc); + } + if ((all_flags & kWasMTB) != 0) { + EXPECT_FALSE(sk_color_filter->isAlphaUnchanged()); + } + } + report_results(all_flags, dl, desc); + }; + + void test_mode_color_via_rendering(DlBlendMode mode, DlColor color) { + std::stringstream desc_stream; + desc_stream << " rendering with: "; + desc_stream << BlendModeToString(mode); + desc_stream << "/" << color; + std::string desc = desc_stream.str(); + auto test_image = test_data->image(); + SkRect test_bounds = + SkRect::MakeWH(test_image->width(), test_image->height()); + DisplayListBuilder builder(test_bounds); + DlPaint dl_paint = DlPaint(color).setBlendMode(mode); + builder.DrawRect(test_bounds, dl_paint); + auto dl = builder.Build(); + bool dl_is_elided = dl->op_count() == 0u; + bool dl_affects_transparent_pixels = dl->modifies_transparent_black(); + ASSERT_TRUE(!dl_is_elided || !dl_affects_transparent_pixels); + + auto sk_mode = static_cast(mode); + SkPaint sk_paint; + sk_paint.setBlendMode(sk_mode); + sk_paint.setColor(color); + for (auto& provider : CanvasCompareTester::kTestProviders) { + auto result_surface = provider->MakeOffscreenSurface( + test_image->width(), test_image->height(), + DlSurfaceProvider::kN32Premul_PixelFormat); + SkCanvas* result_canvas = result_surface->sk_surface()->getCanvas(); + result_canvas->clear(SK_ColorTRANSPARENT); + result_canvas->drawImage(test_image.get(), 0, 0); + result_canvas->drawRect(test_bounds, sk_paint); + result_canvas->flush(); + result_surface->sk_surface()->flushAndSubmit(true); + auto result_pixels = + std::make_unique(result_surface->sk_surface()); + + int all_flags = check_image_result(test_data, result_pixels, dl, desc); + report_results(all_flags, dl, desc); + } + }; + + void test_attributes_image(DlBlendMode mode, + DlColor color, + DlColorFilter* color_filter, + DlImageFilter* image_filter) { + // if (true) { return; } + std::stringstream desc_stream; + desc_stream << " rendering with: "; + desc_stream << BlendModeToString(mode); + desc_stream << "/" << color; + std::string cf_mtb = color_filter + ? color_filter->modifies_transparent_black() + ? "modifies transparency" + : "preserves transparency" + : "no filter"; + desc_stream << ", CF: " << cf_mtb; + std::string if_mtb = image_filter + ? image_filter->modifies_transparent_black() + ? "modifies transparency" + : "preserves transparency" + : "no filter"; + desc_stream << ", IF: " << if_mtb; + std::string desc = desc_stream.str(); + + DisplayListBuilder builder({0.0f, 0.0f, 100.0f, 100.0f}); + DlPaint paint = DlPaint(color) // + .setBlendMode(mode) // + .setColorFilter(color_filter) // + .setImageFilter(image_filter); + builder.DrawImage(DlImage::Make(test_image_src_data->image()), {0, 0}, + DlImageSampling::kNearestNeighbor, &paint); + auto dl = builder.Build(); + + int w = test_image_src_data->width(); + int h = test_image_src_data->height(); + auto sk_mode = static_cast(mode); + SkPaint sk_paint; + sk_paint.setBlendMode(sk_mode); + sk_paint.setColor(color); + sk_paint.setColorFilter(ToSk(color_filter)); + sk_paint.setImageFilter(ToSk(image_filter)); + for (auto& provider : CanvasCompareTester::kTestProviders) { + auto result_surface = provider->MakeOffscreenSurface( + w, h, DlSurfaceProvider::kN32Premul_PixelFormat); + SkCanvas* result_canvas = result_surface->sk_surface()->getCanvas(); + result_canvas->clear(SK_ColorTRANSPARENT); + result_canvas->drawImage(test_image_dst_data->image(), 0, 0); + result_canvas->drawImage(test_image_src_data->image(), 0, 0, + SkSamplingOptions(), &sk_paint); + result_canvas->flush(); + result_surface->sk_surface()->flushAndSubmit(true); + auto result_pixels = + std::make_unique(result_surface->sk_surface()); + + int all_flags = + check_image_result(test_image_dst_data, result_pixels, dl, desc); + report_results(all_flags, dl, desc); + } + }; +}; + +TEST_F(DisplayListNopTest, BlendModeAndColorViaColorFilter) { + auto test_mode_filter = [this](DlBlendMode mode) { + for (DlColor color : test_src_colors) { + test_mode_color_via_filter(mode, color); + } + }; + +#define TEST_MODE(V) test_mode_filter(DlBlendMode::V); + FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) +#undef TEST_MODE +} + +TEST_F(DisplayListNopTest, BlendModeAndColorByRendering) { + auto test_mode_render = [this](DlBlendMode mode) { + // First check rendering a variety of colors onto image + for (DlColor color : test_src_colors) { + test_mode_color_via_rendering(mode, color); + } + }; + +#define TEST_MODE(V) test_mode_render(DlBlendMode::V); + FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) +#undef TEST_MODE +} + +TEST_F(DisplayListNopTest, BlendModeAndColorAndFiltersByRendering) { + auto test_mode_render = [this](DlBlendMode mode) { + auto image_filter_nomtb = DlColorFilterImageFilter(color_filter_nomtb); + auto image_filter_mtb = DlColorFilterImageFilter(color_filter_mtb); + for (DlColor color : test_src_colors) { + test_attributes_image(mode, color, nullptr, nullptr); + test_attributes_image(mode, color, color_filter_nomtb.get(), nullptr); + test_attributes_image(mode, color, color_filter_mtb.get(), nullptr); + test_attributes_image(mode, color, nullptr, &image_filter_nomtb); + test_attributes_image(mode, color, nullptr, &image_filter_mtb); + } + }; + +#define TEST_MODE(V) test_mode_render(DlBlendMode::V); + FOR_EACH_BLEND_MODE_ENUM(TEST_MODE) +#undef TEST_MODE +} + +#undef FOR_EACH_BLEND_MODE_ENUM } // namespace testing } // namespace flutter diff --git a/display_list/testing/dl_test_snippets.cc b/display_list/testing/dl_test_snippets.cc index 4479f63c1d678..0a53f0337afd9 100644 --- a/display_list/testing/dl_test_snippets.cc +++ b/display_list/testing/dl_test_snippets.cc @@ -517,7 +517,7 @@ std::vector CreateAllRenderingOps() { }}, {1, 16, 1, 24, [](DlOpReceiver& r) { - r.drawColor(SK_ColorBLUE, DlBlendMode::kDstIn); + r.drawColor(SK_ColorBLUE, DlBlendMode::kDstOut); }}, {1, 16, 1, 24, [](DlOpReceiver& r) { diff --git a/display_list/testing/dl_test_snippets.h b/display_list/testing/dl_test_snippets.h index 1f05e77dc83c6..536cb224e8ef9 100644 --- a/display_list/testing/dl_test_snippets.h +++ b/display_list/testing/dl_test_snippets.h @@ -151,9 +151,9 @@ static const DlBlurImageFilter kTestBlurImageFilter4(5.0, static const DlDilateImageFilter kTestDilateImageFilter1(5.0, 5.0); static const DlDilateImageFilter kTestDilateImageFilter2(6.0, 5.0); static const DlDilateImageFilter kTestDilateImageFilter3(5.0, 6.0); -static const DlErodeImageFilter kTestErodeImageFilter1(5.0, 5.0); -static const DlErodeImageFilter kTestErodeImageFilter2(6.0, 5.0); -static const DlErodeImageFilter kTestErodeImageFilter3(5.0, 6.0); +static const DlErodeImageFilter kTestErodeImageFilter1(4.0, 4.0); +static const DlErodeImageFilter kTestErodeImageFilter2(4.0, 3.0); +static const DlErodeImageFilter kTestErodeImageFilter3(3.0, 4.0); static const DlMatrixImageFilter kTestMatrixImageFilter1( SkMatrix::RotateDeg(45), kNearestSampling); diff --git a/display_list/utils/dl_matrix_clip_tracker.h b/display_list/utils/dl_matrix_clip_tracker.h index 94ef0ee6683de..f6d2736f0a1db 100644 --- a/display_list/utils/dl_matrix_clip_tracker.h +++ b/display_list/utils/dl_matrix_clip_tracker.h @@ -53,6 +53,7 @@ class DisplayListMatrixClipTracker { bool content_culled(const SkRect& content_bounds) const { return current_->content_culled(content_bounds); } + bool is_cull_rect_empty() const { return current_->is_cull_rect_empty(); } void save(); void restore(); @@ -101,9 +102,10 @@ class DisplayListMatrixClipTracker { virtual SkMatrix matrix_3x3() const = 0; virtual SkM44 matrix_4x4() const = 0; - virtual SkRect device_cull_rect() const { return cull_rect_; } + SkRect device_cull_rect() const { return cull_rect_; } virtual SkRect local_cull_rect() const = 0; virtual bool content_culled(const SkRect& content_bounds) const; + bool is_cull_rect_empty() const { return cull_rect_.isEmpty(); } virtual void translate(SkScalar tx, SkScalar ty) = 0; virtual void scale(SkScalar sx, SkScalar sy) = 0; diff --git a/flow/diff_context_unittests.cc b/flow/diff_context_unittests.cc index e981258ef1a03..d8b78a94070c0 100644 --- a/flow/diff_context_unittests.cc +++ b/flow/diff_context_unittests.cc @@ -10,7 +10,7 @@ namespace testing { TEST_F(DiffContextTest, ClipAlignment) { MockLayerTree t1; t1.root()->Add(CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(30, 30, 50, 50), 1))); + CreateDisplayList(SkRect::MakeLTRB(30, 30, 50, 50)))); auto damage = DiffLayerTree(t1, MockLayerTree(), SkIRect::MakeEmpty(), 0, 0); EXPECT_EQ(damage.frame_damage, SkIRect::MakeLTRB(30, 30, 50, 50)); EXPECT_EQ(damage.buffer_damage, SkIRect::MakeLTRB(30, 30, 50, 50)); diff --git a/flow/layers/container_layer_unittests.cc b/flow/layers/container_layer_unittests.cc index 42317ff9541a2..206be009966a7 100644 --- a/flow/layers/container_layer_unittests.cc +++ b/flow/layers/container_layer_unittests.cc @@ -564,9 +564,9 @@ using ContainerLayerDiffTest = DiffContextTest; // Insert PictureLayer amongst container layers TEST_F(ContainerLayerDiffTest, PictureLayerInsertion) { - auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50), 1); - auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50), 1); - auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50), 1); + auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50)); + auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50)); + auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50)); MockLayerTree t1; @@ -616,9 +616,9 @@ TEST_F(ContainerLayerDiffTest, PictureLayerInsertion) { // Insert picture layer amongst other picture layers TEST_F(ContainerLayerDiffTest, PictureInsertion) { - auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50), 1); - auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50), 1); - auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50), 1); + auto pic1 = CreateDisplayList(SkRect::MakeLTRB(0, 0, 50, 50)); + auto pic2 = CreateDisplayList(SkRect::MakeLTRB(100, 0, 150, 50)); + auto pic3 = CreateDisplayList(SkRect::MakeLTRB(200, 0, 250, 50)); MockLayerTree t1; t1.root()->Add(CreateDisplayListLayer(pic1)); diff --git a/flow/layers/display_list_layer_unittests.cc b/flow/layers/display_list_layer_unittests.cc index fccfe7b4ab044..2791577666b8d 100644 --- a/flow/layers/display_list_layer_unittests.cc +++ b/flow/layers/display_list_layer_unittests.cc @@ -355,7 +355,7 @@ TEST_F(DisplayListLayerTest, RasterCachePreservesRTree) { using DisplayListLayerDiffTest = DiffContextTest; TEST_F(DisplayListLayerDiffTest, SimpleDisplayList) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree1; tree1.root()->Add(CreateDisplayListLayer(display_list)); @@ -375,7 +375,7 @@ TEST_F(DisplayListLayerDiffTest, SimpleDisplayList) { } TEST_F(DisplayListLayerDiffTest, FractionalTranslation) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree1; tree1.root()->Add( @@ -388,7 +388,7 @@ TEST_F(DisplayListLayerDiffTest, FractionalTranslation) { } TEST_F(DisplayListLayerDiffTest, FractionalTranslationWithRasterCache) { - auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree1; tree1.root()->Add( @@ -402,21 +402,25 @@ TEST_F(DisplayListLayerDiffTest, FractionalTranslationWithRasterCache) { TEST_F(DisplayListLayerDiffTest, DisplayListCompare) { MockLayerTree tree1; - auto display_list1 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list1 = + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); tree1.root()->Add(CreateDisplayListLayer(display_list1)); auto damage = DiffLayerTree(tree1, MockLayerTree()); EXPECT_EQ(damage.frame_damage, SkIRect::MakeLTRB(10, 10, 60, 60)); MockLayerTree tree2; - auto display_list2 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + // same DL, same offset + auto display_list2 = + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); tree2.root()->Add(CreateDisplayListLayer(display_list2)); damage = DiffLayerTree(tree2, tree1); EXPECT_EQ(damage.frame_damage, SkIRect::MakeEmpty()); MockLayerTree tree3; - auto display_list3 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1); + auto display_list3 = + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kGreen()); // add offset tree3.root()->Add( CreateDisplayListLayer(display_list3, SkPoint::Make(10, 10))); @@ -426,7 +430,8 @@ TEST_F(DisplayListLayerDiffTest, DisplayListCompare) { MockLayerTree tree4; // different color - auto display_list4 = CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 2); + auto display_list4 = + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), DlColor::kRed()); tree4.root()->Add( CreateDisplayListLayer(display_list4, SkPoint::Make(10, 10))); diff --git a/flow/layers/opacity_layer_unittests.cc b/flow/layers/opacity_layer_unittests.cc index ca1f1067e87c3..71ccdc15c8476 100644 --- a/flow/layers/opacity_layer_unittests.cc +++ b/flow/layers/opacity_layer_unittests.cc @@ -659,7 +659,7 @@ using OpacityLayerDiffTest = DiffContextTest; TEST_F(OpacityLayerDiffTest, FractionalTranslation) { auto picture = CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1)); + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60))); auto layer = CreateOpacityLater({picture}, 128, SkPoint::Make(0.5, 0.5)); MockLayerTree tree1; @@ -672,7 +672,7 @@ TEST_F(OpacityLayerDiffTest, FractionalTranslation) { TEST_F(OpacityLayerDiffTest, FractionalTranslationWithRasterCache) { auto picture = CreateDisplayListLayer( - CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60), 1)); + CreateDisplayList(SkRect::MakeLTRB(10, 10, 60, 60))); auto layer = CreateOpacityLater({picture}, 128, SkPoint::Make(0.5, 0.5)); MockLayerTree tree1; diff --git a/flow/testing/diff_context_test.cc b/flow/testing/diff_context_test.cc index 5a277b9cccd99..26b2a67f28d09 100644 --- a/flow/testing/diff_context_test.cc +++ b/flow/testing/diff_context_test.cc @@ -32,7 +32,7 @@ Damage DiffContextTest::DiffLayerTree(MockLayerTree& layer_tree, } sk_sp DiffContextTest::CreateDisplayList(const SkRect& bounds, - SkColor color) { + DlColor color) { DisplayListBuilder builder; builder.DrawRect(bounds, DlPaint().setColor(color)); return builder.Build(); diff --git a/flow/testing/diff_context_test.h b/flow/testing/diff_context_test.h index 4fb3baafbc7d7..03a1ac078fa33 100644 --- a/flow/testing/diff_context_test.h +++ b/flow/testing/diff_context_test.h @@ -46,7 +46,8 @@ class DiffContextTest : public LayerTest { // Create display list consisting of filled rect with given color; Being able // to specify different color is useful to test deep comparison of pictures - sk_sp CreateDisplayList(const SkRect& bounds, uint32_t color); + sk_sp CreateDisplayList(const SkRect& bounds, + DlColor color = DlColor::kBlack()); std::shared_ptr CreateDisplayListLayer( const sk_sp& display_list, diff --git a/impeller/display_list/dl_unittests.cc b/impeller/display_list/dl_unittests.cc index 05a0b5d9b072b..a445684c8b1b4 100644 --- a/impeller/display_list/dl_unittests.cc +++ b/impeller/display_list/dl_unittests.cc @@ -856,18 +856,12 @@ TEST_P(DisplayListTest, CanDrawShadow) { } TEST_P(DisplayListTest, TransparentShadowProducesCorrectColor) { - flutter::DisplayListBuilder builder; - { - builder.Save(); - builder.Scale(1.618, 1.618); - builder.DrawShadow(SkPath{}.addRect(SkRect::MakeXYWH(0, 0, 200, 100)), - SK_ColorTRANSPARENT, 15, false, 1); - builder.Restore(); - } - auto dl = builder.Build(); - DlDispatcher dispatcher; - dispatcher.drawDisplayList(dl, 1); + dispatcher.save(); + dispatcher.scale(1.618, 1.618); + dispatcher.drawShadow(SkPath{}.addRect(SkRect::MakeXYWH(0, 0, 200, 100)), + SK_ColorTRANSPARENT, 15, false, 1); + dispatcher.restore(); auto picture = dispatcher.EndRecordingAsPicture(); std::shared_ptr rrect_blur; diff --git a/shell/common/dl_op_spy_unittests.cc b/shell/common/dl_op_spy_unittests.cc index dba02134238c8..7aaac1cbe52a8 100644 --- a/shell/common/dl_op_spy_unittests.cc +++ b/shell/common/dl_op_spy_unittests.cc @@ -7,15 +7,40 @@ #include "flutter/shell/common/dl_op_spy.h" #include "flutter/testing/testing.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "third_party/skia/include/core/SkRSXform.h" namespace flutter { namespace testing { +// The following macros demonstrate that the DlOpSpy class is equivalent +// to DisplayList::affects_transparent_surface() now that DisplayListBuilder +// implements operation culling. +// See https://github.com/flutter/flutter/issues/125403 +#define ASSERT_DID_DRAW(spy, dl) \ + do { \ + ASSERT_TRUE(spy.did_draw()); \ + ASSERT_TRUE(dl->modifies_transparent_black()); \ + } while (0) + +#define ASSERT_NO_DRAW(spy, dl) \ + do { \ + ASSERT_FALSE(spy.did_draw()); \ + ASSERT_FALSE(dl->modifies_transparent_black()); \ + } while (0) + TEST(DlOpSpy, DidDrawIsFalseByDefault) { DlOpSpy dl_op_spy; ASSERT_FALSE(dl_op_spy.did_draw()); } +TEST(DlOpSpy, EmptyDisplayList) { + DisplayListBuilder builder; + sk_sp dl = builder.Build(); + DlOpSpy dl_op_spy; + dl->Dispatch(dl_op_spy); + ASSERT_NO_DRAW(dl_op_spy, dl); +} + TEST(DlOpSpy, SetColor) { { // No Color set. DisplayListBuilder builder; @@ -24,7 +49,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // Set transparent color. DisplayListBuilder builder; @@ -33,7 +58,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } { // Set black color. DisplayListBuilder builder; @@ -42,7 +67,7 @@ TEST(DlOpSpy, SetColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } } @@ -55,7 +80,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // Set transparent color. DisplayListBuilder builder; @@ -67,7 +92,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } { // Set black color. DisplayListBuilder builder; @@ -79,7 +104,7 @@ TEST(DlOpSpy, SetColorSource) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } } @@ -91,16 +116,25 @@ TEST(DlOpSpy, DrawColor) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } - { // Transparent color source. + { // Transparent color with kSrc. DisplayListBuilder builder; auto color = DlColor::kTransparent(); builder.DrawColor(color, DlBlendMode::kSrc); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); + } + { // Transparent color with kSrcOver. + DisplayListBuilder builder; + auto color = DlColor::kTransparent(); + builder.DrawColor(color, DlBlendMode::kSrcOver); + sk_sp dl = builder.Build(); + DlOpSpy dl_op_spy; + dl->Dispatch(dl_op_spy); + ASSERT_NO_DRAW(dl_op_spy, dl); } } @@ -112,7 +146,7 @@ TEST(DlOpSpy, DrawPaint) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } { // black color in paint. DisplayListBuilder builder; @@ -121,7 +155,7 @@ TEST(DlOpSpy, DrawPaint) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } } @@ -133,7 +167,7 @@ TEST(DlOpSpy, DrawLine) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -142,7 +176,7 @@ TEST(DlOpSpy, DrawLine) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } @@ -154,7 +188,7 @@ TEST(DlOpSpy, DrawRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -163,11 +197,11 @@ TEST(DlOpSpy, DrawRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawOval) { +TEST(DlOpSpy, DrawOval) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -175,7 +209,7 @@ TEST(DlOpSpy, drawOval) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -184,11 +218,11 @@ TEST(DlOpSpy, drawOval) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawCircle) { +TEST(DlOpSpy, DrawCircle) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -196,7 +230,7 @@ TEST(DlOpSpy, drawCircle) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -205,11 +239,11 @@ TEST(DlOpSpy, drawCircle) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawRRect) { +TEST(DlOpSpy, DrawRRect) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -217,7 +251,7 @@ TEST(DlOpSpy, drawRRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -226,34 +260,49 @@ TEST(DlOpSpy, drawRRect) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawPath) { - { // black +TEST(DlOpSpy, DrawPath) { + { // black line DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); + paint.setDrawStyle(DlDrawStyle::kStroke); builder.DrawPath(SkPath::Line(SkPoint::Make(0, 1), SkPoint::Make(1, 1)), paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } - { // transparent + { // triangle + DisplayListBuilder builder; + DlPaint paint(DlColor::kBlack()); + SkPath path; + path.moveTo({0, 0}); + path.lineTo({1, 0}); + path.lineTo({0, 1}); + builder.DrawPath(path, paint); + sk_sp dl = builder.Build(); + DlOpSpy dl_op_spy; + dl->Dispatch(dl_op_spy); + ASSERT_DID_DRAW(dl_op_spy, dl); + } + { // transparent line DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); + paint.setDrawStyle(DlDrawStyle::kStroke); builder.DrawPath(SkPath::Line(SkPoint::Make(0, 1), SkPoint::Make(1, 1)), paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawArc) { +TEST(DlOpSpy, DrawArc) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -261,7 +310,7 @@ TEST(DlOpSpy, drawArc) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -270,11 +319,11 @@ TEST(DlOpSpy, drawArc) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawPoints) { +TEST(DlOpSpy, DrawPoints) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -283,7 +332,7 @@ TEST(DlOpSpy, drawPoints) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; @@ -293,38 +342,62 @@ TEST(DlOpSpy, drawPoints) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawVertices) { +TEST(DlOpSpy, DrawVertices) { { // black DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); - const SkPoint vertices[] = {SkPoint::Make(5, 5)}; - const SkPoint texture_coordinates[] = {SkPoint::Make(5, 5)}; - const DlColor colors[] = {DlColor::kBlack()}; - auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 1, vertices, + const SkPoint vertices[] = { + SkPoint::Make(5, 5), + SkPoint::Make(5, 15), + SkPoint::Make(15, 5), + }; + const SkPoint texture_coordinates[] = { + SkPoint::Make(5, 5), + SkPoint::Make(15, 5), + SkPoint::Make(5, 15), + }; + const DlColor colors[] = { + DlColor::kBlack(), + DlColor::kRed(), + DlColor::kGreen(), + }; + auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 3, vertices, texture_coordinates, colors, 0); builder.DrawVertices(dl_vertices.get(), DlBlendMode::kSrc, paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); - const SkPoint vertices[] = {SkPoint::Make(5, 5)}; - const SkPoint texture_coordinates[] = {SkPoint::Make(5, 5)}; - const DlColor colors[] = {DlColor::kBlack()}; - auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 1, vertices, + const SkPoint vertices[] = { + SkPoint::Make(5, 5), + SkPoint::Make(5, 15), + SkPoint::Make(15, 5), + }; + const SkPoint texture_coordinates[] = { + SkPoint::Make(5, 5), + SkPoint::Make(15, 5), + SkPoint::Make(5, 15), + }; + const DlColor colors[] = { + DlColor::kBlack(), + DlColor::kRed(), + DlColor::kGreen(), + }; + auto dl_vertices = DlVertices::Make(DlVertexMode::kTriangles, 3, vertices, texture_coordinates, colors, 0); builder.DrawVertices(dl_vertices.get(), DlBlendMode::kSrc, paint); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } @@ -343,7 +416,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // DrawImageRect DisplayListBuilder builder; @@ -359,7 +432,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // DrawImageNine DisplayListBuilder builder; @@ -375,7 +448,7 @@ TEST(DlOpSpy, Images) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // DrawAtlas DisplayListBuilder builder; @@ -386,20 +459,19 @@ TEST(DlOpSpy, Images) { SkBitmap bitmap; bitmap.allocPixels(info, 0); auto sk_image = SkImages::RasterFromBitmap(bitmap); - const SkRSXform xform[] = {}; - const SkRect tex[] = {}; - const DlColor colors[] = {}; + const SkRSXform xform[] = {SkRSXform::Make(1, 0, 0, 0)}; + const SkRect tex[] = {SkRect::MakeXYWH(10, 10, 10, 10)}; SkRect cull_rect = SkRect::MakeWH(5, 5); - builder.DrawAtlas(DlImage::Make(sk_image), xform, tex, colors, 0, + builder.DrawAtlas(DlImage::Make(sk_image), xform, tex, nullptr, 1, DlBlendMode::kSrc, DlImageSampling::kLinear, &cull_rect); sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawDisplayList) { +TEST(DlOpSpy, DrawDisplayList) { { // Recursive Transparent DisplayList DisplayListBuilder builder; DlPaint paint(DlColor::kTransparent()); @@ -414,7 +486,7 @@ TEST(DlOpSpy, drawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl2); } { // Sub non-transparent DisplayList, DisplayListBuilder builder; @@ -430,7 +502,7 @@ TEST(DlOpSpy, drawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl2); } { // Sub non-transparent DisplayList, 0 opacity @@ -447,7 +519,7 @@ TEST(DlOpSpy, drawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl2); } { // Parent non-transparent DisplayList @@ -464,11 +536,11 @@ TEST(DlOpSpy, drawDisplayList) { DlOpSpy dl_op_spy; dl2->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl2); } } -TEST(DlOpSpy, drawTextBlob) { +TEST(DlOpSpy, DrawTextBlob) { { // Non-transparent color. DisplayListBuilder builder; DlPaint paint(DlColor::kBlack()); @@ -479,7 +551,7 @@ TEST(DlOpSpy, drawTextBlob) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent color. DisplayListBuilder builder; @@ -491,11 +563,11 @@ TEST(DlOpSpy, drawTextBlob) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } -TEST(DlOpSpy, drawShadow) { +TEST(DlOpSpy, DrawShadow) { { // valid shadow DisplayListBuilder builder; DlPaint paint; @@ -505,7 +577,7 @@ TEST(DlOpSpy, drawShadow) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_TRUE(dl_op_spy.did_draw()); + ASSERT_DID_DRAW(dl_op_spy, dl); } { // transparent color DisplayListBuilder builder; @@ -516,7 +588,7 @@ TEST(DlOpSpy, drawShadow) { sk_sp dl = builder.Build(); DlOpSpy dl_op_spy; dl->Dispatch(dl_op_spy); - ASSERT_FALSE(dl_op_spy.did_draw()); + ASSERT_NO_DRAW(dl_op_spy, dl); } } From 8b0a8725030f0e627f40027fd500442b62936977 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 18:29:14 -0400 Subject: [PATCH 178/211] Roll Dart SDK from 936824d49aa7 to 677bbf64d4d7 (1 revision) (#43833) https://dart.googlesource.com/sdk.git/+log/936824d49aa7..677bbf64d4d7 2023-07-19 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-328.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 4 ++-- ci/licenses_golden/licenses_dart | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index e3e896d2073f9..73088834cf151 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '936824d49aa762c202c7ccf7cb048579b877586d', + 'dart_revision': '677bbf64d4d7332026e23681f36b1d1ad24f0279', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -70,7 +70,7 @@ vars = { 'dart_protobuf_rev': 'd9e8a31d0e4124130fc494b6bdb66e19dbd4770d', 'dart_pub_rev': '42819a1e10f803eb7f6296692c5a976e1c647360', 'dart_root_certificates_rev': '692f6d6488af68e0121317a9c2c9eb393eb0ee50', - 'dart_tools_rev': '765701d65ee530782f9ed69a9c5885c921d7e232', + 'dart_tools_rev': '600ea0a46c79bc457cc00f7558cbdc9bf041c846', 'dart_watcher_rev': '7457413060ed7403b90b01533a61bd959932122e', 'dart_webdev_rev': '5081dff0952eb7163f98a508d7b2d976c1573c55', 'dart_webkit_inspection_protocol_rev': '39a3c297ff573635e7936b015ce4f3466e4739d6', diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index 036048f001849..15b57d02ef6eb 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: 64c35ee79f78b8bddec264eea9e052c2 +Signature: bb7e9a23ca428376463763ffdd95173e ==================================================================================================== LIBRARY: dart @@ -4327,7 +4327,6 @@ ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/errors_patch.dart + ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/growable_list.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/hash_factories.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/identical_patch.dart + ../../../third_party/dart/LICENSE -ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/int.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/internal_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/isolate_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_helper.dart + ../../../third_party/dart/LICENSE @@ -4408,7 +4407,6 @@ FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/errors_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/growable_list.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/hash_factories.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/identical_patch.dart -FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/int.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/internal_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/isolate_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_helper.dart @@ -4488,8 +4486,12 @@ ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/records.dart ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/boxed_double.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/boxed_int.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/closure.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/date_patch_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/double_helper.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/int_helper.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_array.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_unsafe_patch.dart + ../../../third_party/dart/LICENSE @@ -4526,8 +4528,12 @@ FILE: ../../../third_party/dart/sdk/lib/_internal/js_runtime/lib/records.dart FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/boxed_double.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/boxed_int.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/closure.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/date_patch_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/double_helper.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/int_helper.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_array.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_interop_unsafe_patch.dart From 0264439d0d21bd45d3ec11c56eed4147a8252de3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 19:03:57 -0400 Subject: [PATCH 179/211] Roll Skia from 8413c82dea43 to b238c09fe959 (1 revision) (#43835) https://skia.googlesource.com/skia.git/+log/8413c82dea43..b238c09fe959 2023-07-19 johnstiles@google.com Add a WGSL testbed file to dm tests. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 73088834cf151..261afe18c5675 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '8413c82dea437c8a9d2ea4814b0eff316c619c11', + 'skia_revision': 'b238c09fe9590e0b9925fc5e4208f9e65174fa3d', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index db8c7c0d24fe0..c5da55b738b6d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 39c739d58cb41a04cee110690dcff684 +Signature: fec70252a0e30388ef5f02b612054b30 ==================================================================================================== LIBRARY: etc1 From 810ceeea737729cb08b18c53d76ec930e5a9ecc6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 19:21:24 -0400 Subject: [PATCH 180/211] Roll ANGLE from 4515b270772e to 5e38a31bd76a (1 revision) (#43836) https://chromium.googlesource.com/angle/angle.git/+log/4515b270772e..5e38a31bd76a 2023-07-19 angle-autoroll@skia-public.iam.gserviceaccount.com Manual roll vulkan-deps from 831910dbe1f3 to 7f74d379edd8 (38 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/angle-flutter-engine Please CC bdero@google.com,flutter-engine@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: http://anglebug.com/new To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 261afe18c5675..d1842107aea56 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + '4515b270772e430dbc7dbfa7d8fd971d515f4267', + Var('chromium_git') + '/angle/angle.git' + '@' + '5e38a31bd76af08fabc34bf1774dde0b06fc8678', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', From de0557468862794fb2eabb9d0a64e091e0c1a5ca Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 21:23:28 -0400 Subject: [PATCH 181/211] Roll Fuchsia Linux SDK from -SNz0augjLKFVsUWn... to ZwCUlo28olVzLlqTl... (#43839) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index d1842107aea56..567efef544186 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '-SNz0augjLKFVsUWnMnuevifpykHjCqZd5_eL7gslrMC' + 'version': 'ZwCUlo28olVzLlqTljGEaAvE9GgjVdpEkfLlEIWXcx0C' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', From 7997970b138dfb87d707e0e44cdedaece9b78ed2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Jul 2023 22:27:33 -0400 Subject: [PATCH 182/211] Roll Dart SDK from 677bbf64d4d7 to 368a205aa1d4 (1 revision) (#43841) https://dart.googlesource.com/sdk.git/+log/677bbf64d4d7..368a205aa1d4 2023-07-20 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-329.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 4 ++-- ci/licenses_golden/licenses_dart | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 567efef544186..b6dd88558e890 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '677bbf64d4d7332026e23681f36b1d1ad24f0279', + 'dart_revision': '368a205aa1d444674a83029ad2cced5b4ad271c3', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -407,7 +407,7 @@ deps = { Var('dart_git') + '/leak_tracker.git@515612e0f7b5e2477a82341a302814ef2647ed6e', 'src/third_party/dart/third_party/pkg/linter': - Var('dart_git') + '/linter.git@b95c56ac43f34005470e2f8f74bab7662d8898fe', + Var('dart_git') + '/linter.git@6c1920198fc92af215297043609cecb4ac487a2a', 'src/third_party/dart/third_party/pkg/logging': Var('dart_git') + '/logging.git@521498757ed3eeae151c2d4796404e8947baa04c', diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index 15b57d02ef6eb..f8e73a46fe935 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: bb7e9a23ca428376463763ffdd95173e +Signature: d78901676426fd0ad209a4ab9e6f64ed ==================================================================================================== LIBRARY: dart From af2df6f217460e93c4c6385d69d5bdff775b9935 Mon Sep 17 00:00:00 2001 From: John McCutchan Date: Wed, 19 Jul 2023 20:26:21 -0700 Subject: [PATCH 183/211] Add a PlatformViewRenderTarget abstraction (#43813) - Introduce PlatformViewRenderTarget interface. - Refactor VirtualDisplayController and PlatformViewWrapper to extract SurfaceTexturePlatformViewRenderTarget into a separate class. In a future CL I will add an ImageReaderPlatformViewRenderTarget which will enable Platform Views on Impeller/Vulkan. Tracking issue: https://github.com/flutter/flutter/issues/130892 --- ci/licenses_golden/licenses_flutter | 3 + shell/platform/android/BUILD.gn | 2 + .../platform/PlatformViewRenderTarget.java | 45 ++++ .../plugin/platform/PlatformViewWrapper.java | 225 ++++-------------- .../platform/PlatformViewsController.java | 16 +- ...urfaceTexturePlatformViewRenderTarget.java | 179 ++++++++++++++ .../platform/VirtualDisplayController.java | 69 +++--- .../platform/PlatformViewWrapperTest.java | 129 +--------- ...ceTexturePlatformViewRenderTargetTest.java | 128 ++++++++++ 9 files changed, 459 insertions(+), 337 deletions(-) create mode 100644 shell/platform/android/io/flutter/plugin/platform/PlatformViewRenderTarget.java create mode 100644 shell/platform/android/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTarget.java create mode 100644 shell/platform/android/test/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTargetTest.java diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 8d1d6795f8fd5..e39c787af335d 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -2435,6 +2435,7 @@ ORIGIN: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/Platf ORIGIN: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRenderTarget.java + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java + ../../../flutter/LICENSE @@ -5136,10 +5137,12 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/Platfor FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRenderTarget.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTarget.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java FILE: ../../../flutter/shell/platform/android/io/flutter/util/HandlerCompat.java FILE: ../../../flutter/shell/platform/android/io/flutter/util/PathUtils.java diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index 15bfe17524176..89871decbf6f5 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -297,10 +297,12 @@ android_java_sources = [ "io/flutter/plugin/platform/PlatformViewFactory.java", "io/flutter/plugin/platform/PlatformViewRegistry.java", "io/flutter/plugin/platform/PlatformViewRegistryImpl.java", + "io/flutter/plugin/platform/PlatformViewRenderTarget.java", "io/flutter/plugin/platform/PlatformViewWrapper.java", "io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java", "io/flutter/plugin/platform/PlatformViewsController.java", "io/flutter/plugin/platform/SingleViewPresentation.java", + "io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTarget.java", "io/flutter/plugin/platform/VirtualDisplayController.java", "io/flutter/util/HandlerCompat.java", "io/flutter/util/PathUtils.java", diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewRenderTarget.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewRenderTarget.java new file mode 100644 index 0000000000000..da4d2b54bf5f1 --- /dev/null +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewRenderTarget.java @@ -0,0 +1,45 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugin.platform; + +import android.graphics.Canvas; +import android.view.Surface; + +/** + * A PlatformViewRenderTarget interface allows an Android Platform View to be rendered into an + * offscreen buffer (usually a texture is involved) that the engine can compose into the + * FlutterView. + */ +public interface PlatformViewRenderTarget { + // Called when the render target should be resized. + public void resize(int width, int height); + + // Returns the currently specified width. + public int getWidth(); + + // Returns the currently specified height. + public int getHeight(); + + // Forwards call to Surface returned by getSurface. + // NOTE: If this returns null the RenderTarget is "full" and has no room for a + // new frame. + Canvas lockHardwareCanvas(); + + // Forwards call to Surface returned by getSurface. + // NOTE: Must be called if lockHardwareCanvas returns a non-null Canvas. + void unlockCanvasAndPost(Canvas canvas); + + // The id of this render target. + public long getId(); + + // Releases backing resources. + public void release(); + + // Returns true in the case that backing resource have been released. + public boolean isReleased(); + + // Returns the Surface to be rendered on to. + public Surface getSurface(); +} diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java index d55b0a6b7ce7f..c5d2282b9dbb2 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java @@ -4,8 +4,6 @@ package io.flutter.plugin.platform; -import static android.content.ComponentCallbacks2.TRIM_MEMORY_COMPLETE; - import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Context; @@ -14,10 +12,7 @@ import android.graphics.Matrix; import android.graphics.PorterDuff; import android.graphics.Rect; -import android.graphics.SurfaceTexture; -import android.os.Build; import android.view.MotionEvent; -import android.view.Surface; import android.view.View; import android.view.ViewParent; import android.view.ViewTreeObserver; @@ -30,85 +25,30 @@ import io.flutter.embedding.android.AndroidTouchProcessor; import io.flutter.util.ViewUtils; import io.flutter.view.TextureRegistry; -import java.util.concurrent.atomic.AtomicLong; /** - * Wraps a platform view to intercept gestures and project this view onto a {@link SurfaceTexture}. + * Wraps a platform view to intercept gestures and project this view onto a {@link + * PlatformViewRenderTarget}. * *

An Android platform view is composed by the engine using a {@code TextureLayer}. The view is * embeded to the Android view hierarchy like a normal view, but it's projected onto a {@link - * SurfaceTexture}, so it can be efficiently composed by the engine. + * PlatformViewRenderTarget}, so it can be efficiently composed by the engine. * *

Since the view is in the Android view hierarchy, keyboard and accessibility interactions * behave normally. */ @TargetApi(23) -class PlatformViewWrapper extends FrameLayout { +public class PlatformViewWrapper extends FrameLayout { private static final String TAG = "PlatformViewWrapper"; private int prevLeft; private int prevTop; private int left; private int top; - private int bufferWidth; - private int bufferHeight; - private SurfaceTexture tx; - private Surface surface; private AndroidTouchProcessor touchProcessor; + private PlatformViewRenderTarget renderTarget; - @Nullable @VisibleForTesting ViewTreeObserver.OnGlobalFocusChangeListener activeFocusListener; - private final AtomicLong pendingFramesCount = new AtomicLong(0L); - - private final TextureRegistry.OnFrameConsumedListener frameConsumedListener = - new TextureRegistry.OnFrameConsumedListener() { - @Override - public void onFrameConsumed() { - if (Build.VERSION.SDK_INT == 29) { - pendingFramesCount.decrementAndGet(); - } - } - }; - - private boolean shouldRecreateSurfaceForLowMemory = false; - private final TextureRegistry.OnTrimMemoryListener trimMemoryListener = - new TextureRegistry.OnTrimMemoryListener() { - @Override - public void onTrimMemory(int level) { - // When a memory pressure warning is received and the level equal {@code - // ComponentCallbacks2.TRIM_MEMORY_COMPLETE}, the Android system releases the underlying - // surface. If we continue to use the surface (e.g., call lockHardwareCanvas), a crash - // occurs, and we found that this crash appeared on Android10 and above. - // See https://github.com/flutter/flutter/issues/103870 for more details. - // - // Here our workaround is to recreate the surface before using it. - if (level == TRIM_MEMORY_COMPLETE && Build.VERSION.SDK_INT >= 29) { - shouldRecreateSurfaceForLowMemory = true; - } - } - }; - - private void onFrameProduced() { - if (Build.VERSION.SDK_INT == 29) { - pendingFramesCount.incrementAndGet(); - } - } - - private void recreateSurfaceIfNeeded() { - if (shouldRecreateSurfaceForLowMemory) { - if (surface != null) { - surface.release(); - } - surface = createSurface(tx); - shouldRecreateSurfaceForLowMemory = false; - } - } - - private boolean shouldDrawToSurfaceNow() { - if (Build.VERSION.SDK_INT == 29) { - return pendingFramesCount.get() <= 0L; - } - return true; - } + private ViewTreeObserver.OnGlobalFocusChangeListener activeFocusListener; public PlatformViewWrapper(@NonNull Context context) { super(context); @@ -118,9 +58,13 @@ public PlatformViewWrapper(@NonNull Context context) { public PlatformViewWrapper( @NonNull Context context, @NonNull TextureRegistry.SurfaceTextureEntry textureEntry) { this(context); - textureEntry.setOnFrameConsumedListener(frameConsumedListener); - textureEntry.setOnTrimMemoryListener(trimMemoryListener); - setTexture(textureEntry.surfaceTexture()); + this.renderTarget = new SurfaceTexturePlatformViewRenderTarget(textureEntry); + } + + public PlatformViewWrapper( + @NonNull Context context, @NonNull PlatformViewRenderTarget renderTarget) { + this(context); + this.renderTarget = renderTarget; } /** @@ -132,62 +76,6 @@ public void setTouchProcessor(@Nullable AndroidTouchProcessor newTouchProcessor) touchProcessor = newTouchProcessor; } - /** - * Sets the texture where the view is projected onto. - * - *

{@link PlatformViewWrapper} doesn't take ownership of the {@link SurfaceTexture}. As a - * result, the caller is responsible for releasing the texture. - * - *

{@link io.flutter.view.TextureRegistry} is responsible for creating and registering textures - * in the engine. Therefore, the engine is responsible for also releasing the texture. - * - * @param newTx The texture where the view is projected onto. - */ - @SuppressLint("NewApi") - public void setTexture(@Nullable SurfaceTexture newTx) { - if (Build.VERSION.SDK_INT < 23) { - Log.e( - TAG, - "Platform views cannot be displayed below API level 23. " - + "You can prevent this issue by setting `minSdkVersion: 23` in build.gradle."); - return; - } - - tx = newTx; - - if (bufferWidth > 0 && bufferHeight > 0) { - tx.setDefaultBufferSize(bufferWidth, bufferHeight); - } - - if (surface != null) { - surface.release(); - } - surface = createSurface(newTx); - - // Fill the entire canvas with a transparent color. - // As a result, the background color of the platform view container is displayed - // to the user until the platform view draws its first frame. - final Canvas canvas = surface.lockHardwareCanvas(); - try { - canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); - onFrameProduced(); - } finally { - surface.unlockCanvasAndPost(canvas); - } - } - - @NonNull - @VisibleForTesting - protected Surface createSurface(@NonNull SurfaceTexture tx) { - return new Surface(tx); - } - - /** Returns the texture where the view is projected. */ - @Nullable - public SurfaceTexture getTexture() { - return tx; - } - /** * Sets the layout parameters for this view. * @@ -200,37 +88,31 @@ public void setLayoutParams(@NonNull FrameLayout.LayoutParams params) { top = params.topMargin; } - /** - * Sets the size of the image buffer. - * - * @param width The width of the screen buffer. - * @param height The height of the screen buffer. - */ - public void setBufferSize(int width, int height) { - bufferWidth = width; - bufferHeight = height; - if (tx != null) { - tx.setDefaultBufferSize(width, height); + public void resizeRenderTarget(int width, int height) { + if (renderTarget != null) { + renderTarget.resize(width, height); } } - /** Returns the image buffer width. */ - public int getBufferWidth() { - return bufferWidth; + public int getRenderTargetWidth() { + if (renderTarget != null) { + return renderTarget.getWidth(); + } + return 0; } - /** Returns the image buffer height. */ - public int getBufferHeight() { - return bufferHeight; + public int getRenderTargetHeight() { + if (renderTarget != null) { + return renderTarget.getHeight(); + } + return 0; } - /** Releases the surface. */ + /** Releases resources. */ public void release() { - // Don't release the texture. - tx = null; - if (surface != null) { - surface.release(); - surface = null; + if (renderTarget != null) { + renderTarget.release(); + renderTarget = null; } } @@ -271,42 +153,26 @@ public ViewParent invalidateChildInParent(int[] location, Rect dirty) { @Override @SuppressLint("NewApi") public void draw(Canvas canvas) { - if (surface == null) { + if (renderTarget == null) { super.draw(canvas); - Log.e(TAG, "Platform view cannot be composed without a surface."); + Log.e(TAG, "Platform view cannot be composed without a RenderTarget."); return; } - if (!surface.isValid()) { - Log.e(TAG, "Invalid surface. The platform view cannot be displayed."); - return; - } - if (tx == null || tx.isReleased()) { - Log.e(TAG, "Invalid texture. The platform view cannot be displayed."); + final Canvas targetCanvas = renderTarget.lockHardwareCanvas(); + if (targetCanvas == null) { + // Cannot render right now. + invalidate(); return; } - // We've observed on Android Q that we have to wait for the consumer of {@link SurfaceTexture} - // to consume the last image before continuing to draw, otherwise subsequent calls to - // {@code dequeueBuffer} to request a free buffer from the {@link BufferQueue} will fail. - // See https://github.com/flutter/flutter/issues/98722 - if (!shouldDrawToSurfaceNow()) { - // If there are still frames that are not consumed, we will draw them next time. - invalidate(); - } else { - // We try to recreate the surface before using it to avoid the crash: - // https://github.com/flutter/flutter/issues/103870 - recreateSurfaceIfNeeded(); + try { + // Fill the render target with transparent pixels. This is needed for platform views that + // expect a transparent background. + targetCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); // Override the canvas that this subtree of views will use to draw. - final Canvas surfaceCanvas = surface.lockHardwareCanvas(); - try { - // Clear the current pixels in the canvas. - // This helps when a WebView renders an HTML document with transparent background. - surfaceCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); - super.draw(surfaceCanvas); - onFrameProduced(); - } finally { - surface.unlockCanvasAndPost(surfaceCanvas); - } + super.draw(targetCanvas); + } finally { + renderTarget.unlockCanvasAndPost(targetCanvas); } } @@ -338,6 +204,11 @@ public boolean onTouchEvent(@NonNull MotionEvent event) { return touchProcessor.onTouchEvent(event, screenMatrix); } + @VisibleForTesting + public ViewTreeObserver.OnGlobalFocusChangeListener getActiveFocusListener() { + return this.activeFocusListener; + } + public void setOnDescendantFocusChangeListener(@NonNull OnFocusChangeListener userFocusListener) { unsetOnDescendantFocusChangeListener(); final ViewTreeObserver observer = getViewTreeObserver(); diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java index 185e03a1129ec..832f00a83d017 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java @@ -341,8 +341,8 @@ public void resize( context == null ? originalDisplayDensity : getDisplayDensity(); onComplete.run( new PlatformViewsChannel.PlatformViewBufferSize( - toLogicalPixels(vdController.getBufferWidth(), displayDensity), - toLogicalPixels(vdController.getBufferHeight(), displayDensity))); + toLogicalPixels(vdController.getRenderTargetWidth(), displayDensity), + toLogicalPixels(vdController.getRenderTargetHeight(), displayDensity))); }); return; } @@ -361,9 +361,9 @@ public void resize( // Resizing the texture causes pixel stretching since the size of the GL texture used in // the engine // is set by the framework, but the texture buffer size is set by the platform down below. - if (physicalWidth > viewWrapper.getBufferWidth() - || physicalHeight > viewWrapper.getBufferHeight()) { - viewWrapper.setBufferSize(physicalWidth, physicalHeight); + if (physicalWidth > viewWrapper.getRenderTargetWidth() + || physicalHeight > viewWrapper.getRenderTargetHeight()) { + viewWrapper.resizeRenderTarget(physicalWidth, physicalHeight); } final ViewGroup.LayoutParams viewWrapperLayoutParams = viewWrapper.getLayoutParams(); @@ -380,8 +380,8 @@ public void resize( } onComplete.run( new PlatformViewsChannel.PlatformViewBufferSize( - toLogicalPixels(viewWrapper.getBufferWidth()), - toLogicalPixels(viewWrapper.getBufferHeight()))); + toLogicalPixels(viewWrapper.getRenderTargetWidth()), + toLogicalPixels(viewWrapper.getRenderTargetHeight()))); } @Override @@ -615,7 +615,7 @@ public long configureForTextureLayerComposition( textureId = textureEntry.id(); } viewWrapper.setTouchProcessor(androidTouchProcessor); - viewWrapper.setBufferSize(physicalWidth, physicalHeight); + viewWrapper.resizeRenderTarget(physicalWidth, physicalHeight); final FrameLayout.LayoutParams viewWrapperLayoutParams = new FrameLayout.LayoutParams(physicalWidth, physicalHeight); diff --git a/shell/platform/android/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTarget.java b/shell/platform/android/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTarget.java new file mode 100644 index 0000000000000..4f2fb12beac22 --- /dev/null +++ b/shell/platform/android/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTarget.java @@ -0,0 +1,179 @@ +package io.flutter.plugin.platform; + +import static android.content.ComponentCallbacks2.TRIM_MEMORY_COMPLETE; + +import android.annotation.TargetApi; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.graphics.SurfaceTexture; +import android.os.Build; +import android.view.Surface; +import io.flutter.Log; +import io.flutter.view.TextureRegistry; +import io.flutter.view.TextureRegistry.SurfaceTextureEntry; +import java.util.concurrent.atomic.AtomicLong; + +@TargetApi(26) +public class SurfaceTexturePlatformViewRenderTarget implements PlatformViewRenderTarget { + private static final String TAG = "SurfaceTexturePlatformViewRenderTarget"; + + private final AtomicLong pendingFramesCount = new AtomicLong(0L); + + private void onFrameProduced() { + if (Build.VERSION.SDK_INT == 29) { + pendingFramesCount.incrementAndGet(); + } + } + + private final SurfaceTextureEntry surfaceTextureEntry; + + private SurfaceTexture surfaceTexture; + private Surface surface; + private int bufferWidth = 0; + private int bufferHeight = 0; + + private final TextureRegistry.OnFrameConsumedListener frameConsumedListener = + new TextureRegistry.OnFrameConsumedListener() { + @Override + public void onFrameConsumed() { + if (Build.VERSION.SDK_INT == 29) { + pendingFramesCount.decrementAndGet(); + } + } + }; + + private boolean shouldRecreateSurfaceForLowMemory = false; + private final TextureRegistry.OnTrimMemoryListener trimMemoryListener = + new TextureRegistry.OnTrimMemoryListener() { + @Override + public void onTrimMemory(int level) { + // When a memory pressure warning is received and the level equal {@code + // ComponentCallbacks2.TRIM_MEMORY_COMPLETE}, the Android system releases the + // underlying + // surface. If we continue to use the surface (e.g., call lockHardwareCanvas), a + // crash + // occurs, and we found that this crash appeared on Android10 and above. + // See https://github.com/flutter/flutter/issues/103870 for more details. + // + // Here our workaround is to recreate the surface before using it. + if (level == TRIM_MEMORY_COMPLETE && Build.VERSION.SDK_INT >= 29) { + shouldRecreateSurfaceForLowMemory = true; + } + } + }; + + private void recreateSurfaceIfNeeded() { + if (!shouldRecreateSurfaceForLowMemory) { + return; + } + if (surface != null) { + surface.release(); + surface = null; + } + surface = createSurface(); + shouldRecreateSurfaceForLowMemory = false; + } + + protected Surface createSurface() { + return new Surface(surfaceTexture); + } + + private void init() { + if (bufferWidth > 0 && bufferHeight > 0) { + surfaceTexture.setDefaultBufferSize(bufferWidth, bufferHeight); + } + if (surface != null) { + surface.release(); + surface = null; + } + surface = createSurface(); + + // Fill the entire canvas with a transparent color. + // As a result, the background color of the platform view container is displayed + // to the user until the platform view draws its first frame. + final Canvas canvas = lockHardwareCanvas(); + try { + canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); + } finally { + unlockCanvasAndPost(canvas); + } + } + + /** Implementation of PlatformViewRenderTarget */ + public SurfaceTexturePlatformViewRenderTarget(SurfaceTextureEntry surfaceTextureEntry) { + if (Build.VERSION.SDK_INT < 23) { + throw new UnsupportedOperationException( + "Platform views cannot be displayed below API level 23" + + "You can prevent this issue by setting `minSdkVersion: 23` in build.gradle."); + } + this.surfaceTextureEntry = surfaceTextureEntry; + this.surfaceTexture = surfaceTextureEntry.surfaceTexture(); + surfaceTextureEntry.setOnFrameConsumedListener(frameConsumedListener); + surfaceTextureEntry.setOnTrimMemoryListener(trimMemoryListener); + init(); + } + + public Canvas lockHardwareCanvas() { + recreateSurfaceIfNeeded(); + + // We've observed on Android Q that we have to wait for the consumer of {@link + // SurfaceTexture} + // to consume the last image before continuing to draw, otherwise subsequent + // calls to + // {@code dequeueBuffer} to request a free buffer from the {@link BufferQueue} + // will fail. + // See https://github.com/flutter/flutter/issues/98722 + if (Build.VERSION.SDK_INT == 29 && pendingFramesCount.get() > 0L) { + return null; + } + if (surfaceTexture == null || surfaceTexture.isReleased()) { + Log.e(TAG, "Invalid RenderTarget: null or already released SurfaceTexture"); + return null; + } + onFrameProduced(); + return surface.lockHardwareCanvas(); + } + + public void unlockCanvasAndPost(Canvas canvas) { + surface.unlockCanvasAndPost(canvas); + } + + public void resize(int width, int height) { + bufferWidth = width; + bufferHeight = height; + if (surfaceTexture != null) { + surfaceTexture.setDefaultBufferSize(bufferWidth, bufferHeight); + } + } + + public int getWidth() { + return bufferWidth; + } + + public int getHeight() { + return bufferHeight; + } + + public long getId() { + return this.surfaceTextureEntry.id(); + } + + public boolean isReleased() { + return surfaceTexture == null; + } + + public void release() { + // Don't release the texture. + surfaceTexture = null; + if (surface != null) { + surface.release(); + surface = null; + } + } + + public Surface getSurface() { + recreateSurfaceIfNeeded(); + return surface; + } +} diff --git a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java index 3438db5dd648c..20886358086be 100644 --- a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java +++ b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java @@ -12,8 +12,8 @@ import android.hardware.display.VirtualDisplay; import android.util.DisplayMetrics; import android.view.MotionEvent; -import android.view.Surface; import android.view.View; +import android.view.View.OnFocusChangeListener; import android.view.ViewTreeObserver; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; @@ -33,12 +33,16 @@ public static VirtualDisplayController create( int viewId, Object createParams, OnFocusChangeListener focusChangeListener) { - - DisplayMetrics metrics = context.getResources().getDisplayMetrics(); if (width == 0 || height == 0) { return null; } + DisplayManager displayManager = + (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); + final DisplayMetrics metrics = context.getResources().getDisplayMetrics(); + final PlatformViewRenderTarget renderTarget = + new SurfaceTexturePlatformViewRenderTarget(textureEntry); + // Virtual Display crashes for some PlatformViews if the width or height is bigger // than the physical screen size. We have tried to clamp or scale down the size to prevent // the crash, but both solutions lead to unwanted behavior because the @@ -49,14 +53,15 @@ public static VirtualDisplayController create( // TODO(cyanglaz): find a way to prevent the crash without introducing size mistach betewen // virtual display and AndroidPlatformView widget. // https://github.com/flutter/flutter/issues/93115 - textureEntry.surfaceTexture().setDefaultBufferSize(width, height); - Surface surface = new Surface(textureEntry.surfaceTexture()); - DisplayManager displayManager = - (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); - - int densityDpi = context.getResources().getDisplayMetrics().densityDpi; + renderTarget.resize(width, height); VirtualDisplay virtualDisplay = - displayManager.createVirtualDisplay("flutter-vd", width, height, densityDpi, surface, 0); + displayManager.createVirtualDisplay( + "flutter-vd#" + viewId, + width, + height, + metrics.densityDpi, + renderTarget.getSurface(), + 0); if (virtualDisplay == null) { return null; @@ -67,13 +72,11 @@ public static VirtualDisplayController create( accessibilityEventsDelegate, virtualDisplay, view, - surface, + renderTarget, textureEntry, focusChangeListener, viewId, createParams); - controller.bufferWidth = width; - controller.bufferHeight = height; return controller; } @@ -82,31 +85,31 @@ public static VirtualDisplayController create( private final Context context; private final AccessibilityEventsDelegate accessibilityEventsDelegate; private final int densityDpi; + private final int viewId; private final TextureRegistry.SurfaceTextureEntry textureEntry; + private final PlatformViewRenderTarget renderTarget; private final OnFocusChangeListener focusChangeListener; - private final Surface surface; private VirtualDisplay virtualDisplay; - private int bufferWidth; - private int bufferHeight; private VirtualDisplayController( Context context, AccessibilityEventsDelegate accessibilityEventsDelegate, VirtualDisplay virtualDisplay, PlatformView view, - Surface surface, + PlatformViewRenderTarget renderTarget, TextureRegistry.SurfaceTextureEntry textureEntry, OnFocusChangeListener focusChangeListener, int viewId, Object createParams) { this.context = context; this.accessibilityEventsDelegate = accessibilityEventsDelegate; + this.renderTarget = renderTarget; this.textureEntry = textureEntry; this.focusChangeListener = focusChangeListener; - this.surface = surface; + this.viewId = viewId; this.virtualDisplay = virtualDisplay; - densityDpi = context.getResources().getDisplayMetrics().densityDpi; + this.densityDpi = context.getResources().getDisplayMetrics().densityDpi; presentation = new SingleViewPresentation( context, @@ -118,33 +121,33 @@ private VirtualDisplayController( presentation.show(); } - public int getBufferWidth() { - return bufferWidth; + public int getRenderTargetWidth() { + if (renderTarget != null) { + return renderTarget.getWidth(); + } + return 0; } - public int getBufferHeight() { - return bufferHeight; + public int getRenderTargetHeight() { + if (renderTarget != null) { + return renderTarget.getHeight(); + } + return 0; } public void resize(final int width, final int height, final Runnable onNewSizeFrameAvailable) { boolean isFocused = getView().isFocused(); final SingleViewPresentation.PresentationState presentationState = presentation.detachState(); // We detach the surface to prevent it being destroyed when releasing the vd. - // - // setSurface is only available starting API 20. We could support API 19 by re-creating a new - // SurfaceTexture here. This will require refactoring the TextureRegistry to allow recycling - // texture - // entry IDs. virtualDisplay.setSurface(null); virtualDisplay.release(); - bufferWidth = width; - bufferHeight = height; - textureEntry.surfaceTexture().setDefaultBufferSize(width, height); - DisplayManager displayManager = + final DisplayManager displayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); + renderTarget.resize(width, height); virtualDisplay = - displayManager.createVirtualDisplay("flutter-vd", width, height, densityDpi, surface, 0); + displayManager.createVirtualDisplay( + "flutter-vd#" + viewId, width, height, densityDpi, renderTarget.getSurface(), 0); final View embeddedView = getView(); // There's a bug in Android version older than O where view tree observer onDrawListeners don't diff --git a/shell/platform/android/test/io/flutter/plugin/platform/PlatformViewWrapperTest.java b/shell/platform/android/test/io/flutter/plugin/platform/PlatformViewWrapperTest.java index 8c1cc74a13ad1..ffb50fb65b510 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformViewWrapperTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformViewWrapperTest.java @@ -4,19 +4,17 @@ import static org.junit.Assert.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import static org.mockito.Mockito.spy; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.PorterDuff; -import android.graphics.SurfaceTexture; -import android.view.Surface; import android.view.View; +import android.view.View.OnFocusChangeListener; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityEvent; -import androidx.annotation.NonNull; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; @@ -42,83 +40,6 @@ public void invalidateChildInParent_callsInvalidate() { verify(wrapper, times(1)).invalidate(); } - @Test - public void setTexture_writesToBuffer() { - final Surface surface = mock(Surface.class); - final PlatformViewWrapper wrapper = - new PlatformViewWrapper(ctx) { - @Override - protected Surface createSurface(@NonNull SurfaceTexture tx) { - return surface; - } - }; - - final SurfaceTexture tx = mock(SurfaceTexture.class); - when(tx.isReleased()).thenReturn(false); - - final Canvas canvas = mock(Canvas.class); - when(surface.lockHardwareCanvas()).thenReturn(canvas); - - // Test. - wrapper.setTexture(tx); - - // Verify. - verify(surface, times(1)).lockHardwareCanvas(); - verify(surface, times(1)).unlockCanvasAndPost(canvas); - verify(canvas, times(1)).drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); - verifyNoMoreInteractions(surface); - verifyNoMoreInteractions(canvas); - } - - @Test - public void draw_writesToBuffer() { - final Surface surface = mock(Surface.class); - final PlatformViewWrapper wrapper = - new PlatformViewWrapper(ctx) { - @Override - protected Surface createSurface(@NonNull SurfaceTexture tx) { - return surface; - } - }; - - wrapper.addView( - new View(ctx) { - @Override - public void draw(Canvas canvas) { - super.draw(canvas); - canvas.drawColor(Color.RED); - } - }); - - final int size = 100; - wrapper.measure(size, size); - wrapper.layout(0, 0, size, size); - - final SurfaceTexture tx = mock(SurfaceTexture.class); - when(tx.isReleased()).thenReturn(false); - - when(surface.lockHardwareCanvas()).thenReturn(mock(Canvas.class)); - - wrapper.setTexture(tx); - - reset(surface); - - final Canvas canvas = mock(Canvas.class); - when(surface.lockHardwareCanvas()).thenReturn(canvas); - when(surface.isValid()).thenReturn(true); - - // Test. - wrapper.invalidate(); - wrapper.draw(new Canvas()); - - // Verify. - verify(canvas, times(1)).drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); - verify(surface, times(1)).isValid(); - verify(surface, times(1)).lockHardwareCanvas(); - verify(surface, times(1)).unlockCanvasAndPost(canvas); - verifyNoMoreInteractions(surface); - } - @Test @Config( shadows = { @@ -140,36 +61,6 @@ public void onDraw(Canvas canvas) { verify(canvas, times(1)).drawColor(Color.RED); } - @Test - public void release() { - final Surface surface = mock(Surface.class); - final PlatformViewWrapper wrapper = - new PlatformViewWrapper(ctx) { - @Override - protected Surface createSurface(@NonNull SurfaceTexture tx) { - return surface; - } - }; - - final SurfaceTexture tx = mock(SurfaceTexture.class); - when(tx.isReleased()).thenReturn(false); - - final Canvas canvas = mock(Canvas.class); - when(surface.lockHardwareCanvas()).thenReturn(canvas); - - wrapper.setTexture(tx); - reset(surface); - reset(tx); - - // Test. - wrapper.release(); - - // Verify. - verify(surface, times(1)).release(); - verifyNoMoreInteractions(surface); - verifyNoMoreInteractions(tx); - } - @Test public void focusChangeListener_hasFocus() { final ViewTreeObserver viewTreeObserver = mock(ViewTreeObserver.class); @@ -255,16 +146,16 @@ public ViewTreeObserver getViewTreeObserver() { } }; - assertNull(view.activeFocusListener); + assertNull(view.getActiveFocusListener()); view.setOnDescendantFocusChangeListener(mock(OnFocusChangeListener.class)); - assertNotNull(view.activeFocusListener); + assertNotNull(view.getActiveFocusListener()); final ViewTreeObserver.OnGlobalFocusChangeListener activeFocusListener = - view.activeFocusListener; + view.getActiveFocusListener(); view.setOnDescendantFocusChangeListener(mock(OnFocusChangeListener.class)); - assertNotNull(view.activeFocusListener); + assertNotNull(view.getActiveFocusListener()); verify(viewTreeObserver, times(1)).removeOnGlobalFocusChangeListener(activeFocusListener); } @@ -282,16 +173,16 @@ public ViewTreeObserver getViewTreeObserver() { } }; - assertNull(view.activeFocusListener); + assertNull(view.getActiveFocusListener()); view.setOnDescendantFocusChangeListener(mock(OnFocusChangeListener.class)); - assertNotNull(view.activeFocusListener); + assertNotNull(view.getActiveFocusListener()); final ViewTreeObserver.OnGlobalFocusChangeListener activeFocusListener = - view.activeFocusListener; + view.getActiveFocusListener(); view.unsetOnDescendantFocusChangeListener(); - assertNull(view.activeFocusListener); + assertNull(view.getActiveFocusListener()); view.unsetOnDescendantFocusChangeListener(); verify(viewTreeObserver, times(1)).removeOnGlobalFocusChangeListener(activeFocusListener); diff --git a/shell/platform/android/test/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTargetTest.java b/shell/platform/android/test/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTargetTest.java new file mode 100644 index 0000000000000..a1ab6d75e1f29 --- /dev/null +++ b/shell/platform/android/test/io/flutter/plugin/platform/SurfaceTexturePlatformViewRenderTargetTest.java @@ -0,0 +1,128 @@ +package io.flutter.plugin.platform; + +import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import android.annotation.TargetApi; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.graphics.SurfaceTexture; +import android.view.Surface; +import android.view.View; +import androidx.test.core.app.ApplicationProvider; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import io.flutter.view.TextureRegistry.SurfaceTextureEntry; +import org.junit.Test; +import org.junit.runner.RunWith; + +@TargetApi(31) +@RunWith(AndroidJUnit4.class) +public class SurfaceTexturePlatformViewRenderTargetTest { + private final Context ctx = ApplicationProvider.getApplicationContext(); + + @Test + public void create_clearsTexture() { + final Canvas canvas = mock(Canvas.class); + final Surface surface = mock(Surface.class); + when(surface.lockHardwareCanvas()).thenReturn(canvas); + when(surface.isValid()).thenReturn(true); + final SurfaceTexture surfaceTexture = mock(SurfaceTexture.class); + final SurfaceTextureEntry surfaceTextureEntry = mock(SurfaceTextureEntry.class); + when(surfaceTextureEntry.surfaceTexture()).thenReturn(surfaceTexture); + when(surfaceTexture.isReleased()).thenReturn(false); + + // Test. + final SurfaceTexturePlatformViewRenderTarget renderTarget = + new SurfaceTexturePlatformViewRenderTarget(surfaceTextureEntry) { + @Override + protected Surface createSurface() { + return surface; + } + }; + + // Verify. + verify(surface, times(1)).lockHardwareCanvas(); + verify(surface, times(1)).unlockCanvasAndPost(canvas); + verify(canvas, times(1)).drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); + verifyNoMoreInteractions(surface); + verifyNoMoreInteractions(canvas); + } + + @Test + public void viewDraw_writesToBuffer() { + final Canvas canvas = mock(Canvas.class); + final Surface surface = mock(Surface.class); + when(surface.lockHardwareCanvas()).thenReturn(canvas); + when(surface.isValid()).thenReturn(true); + final SurfaceTexture surfaceTexture = mock(SurfaceTexture.class); + final SurfaceTextureEntry surfaceTextureEntry = mock(SurfaceTextureEntry.class); + when(surfaceTextureEntry.surfaceTexture()).thenReturn(surfaceTexture); + when(surfaceTexture.isReleased()).thenReturn(false); + + final SurfaceTexturePlatformViewRenderTarget renderTarget = + new SurfaceTexturePlatformViewRenderTarget(surfaceTextureEntry) { + @Override + protected Surface createSurface() { + return surface; + } + }; + + // Custom view. + final View platformView = + new View(ctx) { + @Override + public void draw(Canvas canvas) { + super.draw(canvas); + canvas.drawColor(Color.RED); + } + }; + final int size = 100; + platformView.measure(size, size); + platformView.layout(0, 0, size, size); + + // Test. + final Canvas c = renderTarget.lockHardwareCanvas(); + platformView.draw(c); + renderTarget.unlockCanvasAndPost(c); + + // Verify. + verify(canvas, times(1)).drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); + verify(canvas, times(1)).drawColor(Color.RED); + verify(surface, times(2)).lockHardwareCanvas(); + verify(surface, times(2)).unlockCanvasAndPost(canvas); + verifyNoMoreInteractions(surface); + } + + @Test + public void release() { + final Canvas canvas = mock(Canvas.class); + final Surface surface = mock(Surface.class); + when(surface.lockHardwareCanvas()).thenReturn(canvas); + when(surface.isValid()).thenReturn(true); + final SurfaceTexture surfaceTexture = mock(SurfaceTexture.class); + final SurfaceTextureEntry surfaceTextureEntry = mock(SurfaceTextureEntry.class); + when(surfaceTextureEntry.surfaceTexture()).thenReturn(surfaceTexture); + when(surfaceTexture.isReleased()).thenReturn(false); + final SurfaceTexturePlatformViewRenderTarget renderTarget = + new SurfaceTexturePlatformViewRenderTarget(surfaceTextureEntry) { + @Override + protected Surface createSurface() { + return surface; + } + }; + + reset(surface); + reset(surfaceTexture); + + // Test. + renderTarget.release(); + + // Verify. + verify(surface, times(1)).release(); + verifyNoMoreInteractions(surface); + verifyNoMoreInteractions(surfaceTexture); + } +} From dee464a2641bb0281e8a853a475a764692719f6e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 02:07:21 -0400 Subject: [PATCH 184/211] Roll Dart SDK from 368a205aa1d4 to 603aacd8400f (1 revision) (#43843) https://dart.googlesource.com/sdk.git/+log/368a205aa1d4..603aacd8400f 2023-07-20 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-330.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index b6dd88558e890..c29e6c6e71fd4 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '368a205aa1d444674a83029ad2cced5b4ad271c3', + 'dart_revision': '603aacd8400ff58fb6bcb9aa5f80b5ee1e121c8f', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From b1c6b20759868b5ed11f5106e14fb4b045166bdb Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 02:25:22 -0400 Subject: [PATCH 185/211] Roll Skia from b238c09fe959 to d09e9869f84c (1 revision) (#43842) https://skia.googlesource.com/skia.git/+log/b238c09fe959..d09e9869f84c 2023-07-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from c10b5129407a to a1951225a465 (3 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c29e6c6e71fd4..9b4cd98a037e0 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b238c09fe9590e0b9925fc5e4208f9e65174fa3d', + 'skia_revision': 'd09e9869f84c25bce1331d1192f00b1730a04eef', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c5da55b738b6d..0c79cb1a337a5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fec70252a0e30388ef5f02b612054b30 +Signature: 9bab70683e0f7122e11999d13bb4845d ==================================================================================================== LIBRARY: etc1 From 90b29295ea1afb71dd615648bcc51a4278b8c2fa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 03:23:20 -0400 Subject: [PATCH 186/211] Roll Fuchsia Mac SDK from 7kGBjmX-zBXcg1svE... to SmAtKPfGzPllC9gfO... (#43845) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 9b4cd98a037e0..4347411079b5b 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '7kGBjmX-zBXcg1svEd78lkHB3n85_cD7LYmNYYdeQlMC' + 'version': 'SmAtKPfGzPllC9gfOpu2NtueRGB1spsiuLFWR8bhThoC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From 3aaddb2f7c1afeb81e2b1f7fd8d761ec2a53d976 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 04:03:41 -0400 Subject: [PATCH 187/211] Roll Skia from d09e9869f84c to 65a83c4de7f2 (2 revisions) (#43847) https://skia.googlesource.com/skia.git/+log/d09e9869f84c..65a83c4de7f2 2023-07-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from b32d661389a6 to 5e38a31bd76a (5 revisions) 2023-07-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from a1951225a465 to b698c2aac01c If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4347411079b5b..b82e76240f4c6 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'd09e9869f84c25bce1331d1192f00b1730a04eef', + 'skia_revision': '65a83c4de7f27220e5def1640dd21be4e9c281f2', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From e2e99a357d60bd496ecb18e2ddd0eecc30039744 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 05:45:05 -0400 Subject: [PATCH 188/211] Roll Skia from 65a83c4de7f2 to 401c85ab1e21 (1 revision) (#43848) https://skia.googlesource.com/skia.git/+log/65a83c4de7f2..401c85ab1e21 2023-07-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from f3c508b81760 to e1c3b16d5aa5 (11 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index b82e76240f4c6..daf51fd2f7c81 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '65a83c4de7f27220e5def1640dd21be4e9c281f2', + 'skia_revision': '401c85ab1e21caf65a1b33afa9ff43b7ed7eb0f2', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From d223cf46365e94e84bfb3dd549b29d23c2728379 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 07:38:34 -0400 Subject: [PATCH 189/211] Roll ANGLE from 5e38a31bd76a to a4c283be741f (1 revision) (#43849) https://chromium.googlesource.com/angle/angle.git/+log/5e38a31bd76a..a4c283be741f 2023-07-20 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 7f74d379edd8 to e1c3b16d5aa5 (7 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/angle-flutter-engine Please CC bdero@google.com,flutter-engine@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: http://anglebug.com/new To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index daf51fd2f7c81..a099ddb9ee281 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + '5e38a31bd76af08fabc34bf1774dde0b06fc8678', + Var('chromium_git') + '/angle/angle.git' + '@' + 'a4c283be741f95b48a6369b8e6bed53ee0ff5fac', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', From d0bb4e0ac808045ced2656dd3005f4a7bbd1dab0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 10:01:08 -0400 Subject: [PATCH 190/211] Roll Fuchsia Linux SDK from ZwCUlo28olVzLlqTl... to hVAAd2NqYOjUF_I99... (#43850) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index a099ddb9ee281..fe366d05197d7 100644 --- a/DEPS +++ b/DEPS @@ -899,7 +899,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'ZwCUlo28olVzLlqTljGEaAvE9GgjVdpEkfLlEIWXcx0C' + 'version': 'hVAAd2NqYOjUF_I998LDRT_IJPf5jijhH6q441hFXo8C' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', From 0ee389296ff5bfeb4193709182afb2445c374e6a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 10:36:03 -0400 Subject: [PATCH 191/211] Roll Dart SDK from 603aacd8400f to 857c9a2ae14a (1 revision) (#43851) https://dart.googlesource.com/sdk.git/+log/603aacd8400f..857c9a2ae14a 2023-07-20 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-331.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_dart | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fe366d05197d7..4f54cef1d1440 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '603aacd8400ff58fb6bcb9aa5f80b5ee1e121c8f', + 'dart_revision': '857c9a2ae14ae327d47999f1f6fc98105e4ecb9c', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index f8e73a46fe935..51d245f127af3 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: d78901676426fd0ad209a4ab9e6f64ed +Signature: 514240a5210a2e3550a8cee3414ca087 ==================================================================================================== LIBRARY: dart @@ -4499,10 +4499,12 @@ ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_string.dart + .. ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_typed_array.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_types.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/record_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/simd.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_buffer_create.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_helper.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_stringref_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/sync_star_patch.dart + ../../../third_party/dart/LICENSE +ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/typed_data.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/weak_patch.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/async/future_extensions.dart + ../../../third_party/dart/LICENSE ORIGIN: ../../../third_party/dart/sdk/lib/js_interop/js_interop.dart + ../../../third_party/dart/LICENSE @@ -4541,10 +4543,12 @@ FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_string.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_typed_array.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/js_types.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/record_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/simd.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_buffer_create.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_helper.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/string_stringref_patch.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/sync_star_patch.dart +FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/typed_data.dart FILE: ../../../third_party/dart/sdk/lib/_internal/wasm/lib/weak_patch.dart FILE: ../../../third_party/dart/sdk/lib/async/future_extensions.dart FILE: ../../../third_party/dart/sdk/lib/js_interop/js_interop.dart From 7b725552f6b1feec5223eb0866b0050888423fac Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 12:22:22 -0400 Subject: [PATCH 192/211] Roll Skia from 401c85ab1e21 to b8133dda3a8c (4 revisions) (#43853) https://skia.googlesource.com/skia.git/+log/401c85ab1e21..b8133dda3a8c 2023-07-20 johnstiles@google.com Refactor GetConstantValueOrNullForVariable logic. 2023-07-20 brianosman@google.com Remove kBGR_888x_SkColorType 2023-07-20 johnstiles@google.com Remove inaccurate comment in YUVA pixmaps. 2023-07-20 ramasamy.si@zohocorp.com Fix crash in skparagraph's visit function If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4f54cef1d1440..13f09e6a19450 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '401c85ab1e21caf65a1b33afa9ff43b7ed7eb0f2', + 'skia_revision': 'b8133dda3a8c70d3d8a814d37448af506ad07805', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0c79cb1a337a5..b4a31c60e3fa0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9bab70683e0f7122e11999d13bb4845d +Signature: 3e431842ed9034f377ce9d9bd6c5f27e ==================================================================================================== LIBRARY: etc1 From 0c90b654afb93755255162e2ffa161e1f9ad1bd6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 13:40:14 -0400 Subject: [PATCH 193/211] Roll Skia from b8133dda3a8c to a3aca7ae523e (1 revision) (#43855) https://skia.googlesource.com/skia.git/+log/b8133dda3a8c..a3aca7ae523e 2023-07-20 mike@reedtribe.org Remove unneeded generateAdvance() from SkScalerContext If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 13f09e6a19450..3fe85dbeae6a8 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b8133dda3a8c70d3d8a814d37448af506ad07805', + 'skia_revision': 'a3aca7ae523e9d69d86172e8b7706ff6b4d7a42b', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b4a31c60e3fa0..66c0ef0b64549 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3e431842ed9034f377ce9d9bd6c5f27e +Signature: a26970844a57664eaf6e5d4abd0dc3d9 ==================================================================================================== LIBRARY: etc1 From 4567f33b3ce2151b9bc2679bb1c2006b8b507d9a Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Thu, 20 Jul 2023 14:06:24 -0400 Subject: [PATCH 194/211] [web] Preserve correct CanvasKit Variant during test initialization (#43854) At some point, we started setting `useColorEmoji` to true in our tests, but we were doing it in a way that resets all other configurations to their defaults. This caused the `canvasKitVariant` config to be lost and always set to the default `auto`. This PR fixes the issue and adds tests to: 1. Make sure that the CanvasKit suite always runs with a specific variant (not `auto`). 2. Make sure the given CanvasKit variant makes it all the way through to the tests. The test harness uses a backdoor (a global JS property on `window`) to communicate which canvaskit variant it's using. The test then compares that with `configuration.canvasKitVariant` to make sure they match. If they don't match, then the configuration was lost somewhere on the way. Fixes https://github.com/flutter/flutter/issues/130993 --- lib/web_ui/dev/felt_config.dart | 5 +++ lib/web_ui/dev/test_platform.dart | 5 ++- lib/web_ui/lib/src/engine/configuration.dart | 10 +++++ lib/web_ui/lib/src/engine/dom.dart | 12 ++++- .../configuration_canvaskit_variant_test.dart | 44 +++++++++++++++++++ .../test/common/test_initialization.dart | 10 ++--- .../test/engine/configuration_test.dart | 23 ++++++++++ lib/web_ui/test/felt_config.yaml | 2 + 8 files changed, 102 insertions(+), 9 deletions(-) create mode 100644 lib/web_ui/test/canvaskit/configuration_canvaskit_variant_test.dart diff --git a/lib/web_ui/dev/felt_config.dart b/lib/web_ui/dev/felt_config.dart index e3725a4ce1d01..6e42e500d2fb1 100644 --- a/lib/web_ui/dev/felt_config.dart +++ b/lib/web_ui/dev/felt_config.dart @@ -202,6 +202,11 @@ class FeltConfig { if (runConfig == null) { throw AssertionError('Run config not found with name: `$runConfigName` (referenced by test suite: `$name`)'); } + if (bundle.compileConfig.renderer == Renderer.canvaskit && runConfig.variant == null) { + throw AssertionError( + 'Run config `$runConfigName` was used with a CanvasKit test bundle `$testBundleName` ' + 'but did not specify a CanvasKit variant (referenced by test suite: `$name`)'); + } bool canvasKit = false; bool canvasKitChromium = false; bool skwasm = false; diff --git a/lib/web_ui/dev/test_platform.dart b/lib/web_ui/dev/test_platform.dart index a703408e3ce1f..830941d5c8ce7 100644 --- a/lib/web_ui/dev/test_platform.dart +++ b/lib/web_ui/dev/test_platform.dart @@ -540,7 +540,7 @@ class BrowserPlatform extends PlatformPlugin { final String testRunner = isWasm ? '/test_dart2wasm.js' : 'packages/test/dart.js'; - + final String canvasKitVariant = getCanvasKitVariant(); return shelf.Response.ok(''' @@ -548,9 +548,10 @@ class BrowserPlatform extends PlatformPlugin { ${htmlEscape.convert(test)} Test $link diff --git a/lib/web_ui/lib/src/engine/configuration.dart b/lib/web_ui/lib/src/engine/configuration.dart index a2038c8492000..cb82e064a372b 100644 --- a/lib/web_ui/lib/src/engine/configuration.dart +++ b/lib/web_ui/lib/src/engine/configuration.dart @@ -121,6 +121,16 @@ class FlutterConfiguration { } } + FlutterConfiguration merge(JsFlutterConfiguration newConfig) { + final JSAny mergedJsConfig = objectConstructor.assign( + {}.jsify()!, + _configuration.jsify(), + newConfig.jsify(), + ); + return FlutterConfiguration() + ..setUserConfiguration(mergedJsConfig as JsFlutterConfiguration); + } + // Static constant parameters. // // These properties affect tree shaking and therefore cannot be supplied at diff --git a/lib/web_ui/lib/src/engine/dom.dart b/lib/web_ui/lib/src/engine/dom.dart index dfb1b7b9b1d25..d04e1fd9f691f 100644 --- a/lib/web_ui/lib/src/engine/dom.dart +++ b/lib/web_ui/lib/src/engine/dom.dart @@ -61,8 +61,16 @@ extension JSAnyToObjectExtension on JSAny { } @JS('Object') -external JSAny get _objectConstructor; -Object get objectConstructor => _objectConstructor.toObjectShallow; +external DomObjectConstructor get objectConstructor; + + +@JS() +@staticInterop +class DomObjectConstructor {} + +extension DomObjectConstructorExtension on DomObjectConstructor { + external JSAny assign(JSAny target, JSAny? source1, [JSAny? source2]); +} @JS() @staticInterop diff --git a/lib/web_ui/test/canvaskit/configuration_canvaskit_variant_test.dart b/lib/web_ui/test/canvaskit/configuration_canvaskit_variant_test.dart new file mode 100644 index 0000000000000..de5820a7be2ee --- /dev/null +++ b/lib/web_ui/test/canvaskit/configuration_canvaskit_variant_test.dart @@ -0,0 +1,44 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:js_interop'; + +import 'package:test/bootstrap/browser.dart'; +import 'package:test/test.dart'; +import 'package:ui/src/engine.dart'; + +import 'common.dart'; + +@JS('_flutter_canvaskit_variant_for_test_only') +external String? get _flutterCanvaskitVariantForTestOnly; + +void main() { + internalBootstrapBrowserTest(() => testMain); +} + +void testMain() { + setUpCanvasKitTest(); + + // This is to make sure we don't accidentally run the CanvasKit test suite in + // auto mode. The CanvasKit variant should always be deterministic. + test('CanvasKit tests always run with a specific variant', () { + expect( + configuration.canvasKitVariant, + anyOf(CanvasKitVariant.chromium, CanvasKitVariant.full), + ); + expect( + _flutterCanvaskitVariantForTestOnly, + anyOf('chromium', 'full'), + ); + }); + + // This is to make sure that the variant specified by the test harness is + // correctly preserved during tests in the global `configuration` object. + test('CanvasKitVariant configuration is preserved in tests', () { + expect( + configuration.canvasKitVariant, + CanvasKitVariant.values.byName(_flutterCanvaskitVariantForTestOnly!), + ); + }); +} diff --git a/lib/web_ui/test/common/test_initialization.dart b/lib/web_ui/test/common/test_initialization.dart index 2b1124ea1e4fe..3570ae3ff9ee8 100644 --- a/lib/web_ui/test/common/test_initialization.dart +++ b/lib/web_ui/test/common/test_initialization.dart @@ -22,11 +22,11 @@ void setUpUnitTests({ } // Some of our tests rely on color emoji - final engine.FlutterConfiguration config = engine.FlutterConfiguration() - ..setUserConfiguration( - js_util.jsify({ - 'useColorEmoji': true, - }) as engine.JsFlutterConfiguration); + final engine.FlutterConfiguration config = engine.configuration.merge( + js_util.jsify({ + 'useColorEmoji': true, + }) as engine.JsFlutterConfiguration, + ); engine.debugSetConfiguration(config); debugFontsScope = configureDebugFontsAssetScope(fakeAssetManager); diff --git a/lib/web_ui/test/engine/configuration_test.dart b/lib/web_ui/test/engine/configuration_test.dart index 7dc5aaead0629..a84653eb82c91 100644 --- a/lib/web_ui/test/engine/configuration_test.dart +++ b/lib/web_ui/test/engine/configuration_test.dart @@ -33,6 +33,29 @@ void testMain() { expect(config.canvasKitMaximumSurfaces, 16); }); + + test('merge', () { + final FlutterConfiguration originalConfig = FlutterConfiguration.legacy( + js_util.jsify({ + 'useColorEmoji': false, + 'canvasKitMaximumSurfaces': 99, + }) as JsFlutterConfiguration, + ); + final FlutterConfiguration mergedConfig = originalConfig.merge( + js_util.jsify({ + 'useColorEmoji': true, + }) as JsFlutterConfiguration, + ); + + // `useColorEmoji` should've been overriden. + expect(mergedConfig.useColorEmoji, isTrue); + // `canvasKitMaximumSurfaces` should've been preserved. + expect(mergedConfig.canvasKitMaximumSurfaces, 99); + + // Original config should not have been mutated. + expect(originalConfig.useColorEmoji, isFalse); + expect(originalConfig.canvasKitMaximumSurfaces, 99); + }); }); group('setUserConfiguration', () { diff --git a/lib/web_ui/test/felt_config.yaml b/lib/web_ui/test/felt_config.yaml index 6f19e4913e9e2..6cc145be6a3cc 100644 --- a/lib/web_ui/test/felt_config.yaml +++ b/lib/web_ui/test/felt_config.yaml @@ -115,9 +115,11 @@ run-configs: - name: firefox browser: firefox + canvaskit-variant: full - name: safari browser: safari + canvaskit-variant: full test-suites: - name: chrome-dart2js-html-engine From 20ceaeb781860682e97628e43ed33c340da54f29 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 14:25:43 -0400 Subject: [PATCH 195/211] Roll Dart SDK from 857c9a2ae14a to 1df95f328d0c (1 revision) (#43858) https://dart.googlesource.com/sdk.git/+log/857c9a2ae14a..1df95f328d0c 2023-07-20 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.1.0-332.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC bdero@google.com,dart-vm-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3fe85dbeae6a8..e62b35459017b 100644 --- a/DEPS +++ b/DEPS @@ -53,7 +53,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '857c9a2ae14ae327d47999f1f6fc98105e4ecb9c', + 'dart_revision': '1df95f328d0c2f52611d1a4107befab1888fe903', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index 51d245f127af3..ec42b9b410298 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: 514240a5210a2e3550a8cee3414ca087 +Signature: 0ac9c2968ef4617e01c4e5e8a9f6b03f ==================================================================================================== LIBRARY: dart From 1eb4ce0038f4aa0aa78aaf4316fd6466e66611cc Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 20 Jul 2023 11:29:56 -0700 Subject: [PATCH 196/211] More validation logs for CommandEncoderVK submission (#43859) Helps while investigating https://github.com/flutter/flutter/issues/131001 --- .../renderer/backend/vulkan/command_encoder_vk.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/impeller/renderer/backend/vulkan/command_encoder_vk.cc b/impeller/renderer/backend/vulkan/command_encoder_vk.cc index 35ceab00d9db2..9bc2637745bc7 100644 --- a/impeller/renderer/backend/vulkan/command_encoder_vk.cc +++ b/impeller/renderer/backend/vulkan/command_encoder_vk.cc @@ -161,6 +161,7 @@ bool CommandEncoderVK::Submit(SubmitCallback callback) { // Make sure to call callback with `false` if anything returns early. bool fail_callback = !!callback; if (!IsValid()) { + VALIDATION_LOG << "Cannot submit invalid CommandEncoderVK."; if (fail_callback) { callback(false); } @@ -179,22 +180,28 @@ bool CommandEncoderVK::Submit(SubmitCallback callback) { auto command_buffer = GetCommandBuffer(); - if (command_buffer.end() != vk::Result::eSuccess) { + auto status = command_buffer.end(); + if (status != vk::Result::eSuccess) { + VALIDATION_LOG << "Failed to end command buffer: " << vk::to_string(status); return false; } std::shared_ptr strong_device = device_holder_.lock(); if (!strong_device) { + VALIDATION_LOG << "Device lost."; return false; } auto [fence_result, fence] = strong_device->GetDevice().createFenceUnique({}); if (fence_result != vk::Result::eSuccess) { + VALIDATION_LOG << "Failed to create fence: " << vk::to_string(fence_result); return false; } vk::SubmitInfo submit_info; std::vector buffers = {command_buffer}; submit_info.setCommandBuffers(buffers); - if (queue_->Submit(submit_info, *fence) != vk::Result::eSuccess) { + status = queue_->Submit(submit_info, *fence); + if (status != vk::Result::eSuccess) { + VALIDATION_LOG << "Failed to submit queue: " << vk::to_string(status); return false; } From b00bdd640654a03424c27720c7f04141f767b092 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Thu, 20 Jul 2023 14:34:06 -0400 Subject: [PATCH 197/211] Add url to get GoogleFonts API key (#43857) --- lib/web_ui/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/web_ui/README.md b/lib/web_ui/README.md index 4eac836446d40..e5a68a9d3fd3a 100644 --- a/lib/web_ui/README.md +++ b/lib/web_ui/README.md @@ -151,6 +151,8 @@ cipd auth-login felt roll-fallback-fonts --key= ``` +You can obtain a GoogleFonts API key from here: https://developers.google.com/fonts/docs/developer_api#APIKey + This will take the following steps: * Fetch a list of fonts from the Google Fonts API * Download each font we use for fallbacks and calculate its unicode ranges From 1519645d85b8484ab08de8f19ed59c889462e9c7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 15:02:23 -0400 Subject: [PATCH 198/211] Roll Skia from a3aca7ae523e to 18e834916f47 (1 revision) (#43860) https://skia.googlesource.com/skia.git/+log/a3aca7ae523e..18e834916f47 2023-07-20 johnstiles@google.com Fix Overflow test in WGSL codegen. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e62b35459017b..2d8920755bfd1 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'a3aca7ae523e9d69d86172e8b7706ff6b4d7a42b', + 'skia_revision': '18e834916f47a0ebea09d2c79d61fde0554c87f0', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 66c0ef0b64549..cf63540aea49d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a26970844a57664eaf6e5d4abd0dc3d9 +Signature: 271e1618de445abab2721c39fbcbf943 ==================================================================================================== LIBRARY: etc1 From 3cb11c6e801c4694a90a8fe71b086e1abce2418b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 16:02:11 -0400 Subject: [PATCH 199/211] Roll Fuchsia Mac SDK from SmAtKPfGzPllC9gfO... to -SaPL-46jpiYbnCAu... (#43862) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC bdero@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 2d8920755bfd1..7b93aaefc2fa4 100644 --- a/DEPS +++ b/DEPS @@ -889,7 +889,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'SmAtKPfGzPllC9gfOpu2NtueRGB1spsiuLFWR8bhThoC' + 'version': '-SaPL-46jpiYbnCAuxBqbPdjsZOg1mDtQVZIdr11GVkC' } ], 'condition': 'host_os == "mac" and not download_fuchsia_sdk', From de39cd0f728469c9fd844789dc6983a9cd3271ad Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 16:19:12 -0400 Subject: [PATCH 200/211] Roll Skia from 18e834916f47 to 100d0f858f02 (7 revisions) (#43863) https://skia.googlesource.com/skia.git/+log/18e834916f47..100d0f858f02 2023-07-20 penghuang@chromium.org dawn: remove a annoying spammy log from DawnCaps 2023-07-20 brianosman@google.com Remove reference to (obsolete/deleted) T8888 config 2023-07-20 armansito@google.com [graphite][vello] Adjust rough buffer size reduction 2023-07-20 armansito@google.com [graphite][AtlasShapeRenderStep] Implement boundsOutset 2023-07-20 robertphillips@google.com [graphite] Implement SkImage::textureSize 2023-07-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skcms from 6140cf9c51a5 to 1323db7bd0b4 (2 revisions) 2023-07-20 cmumford@google.com [infra] Reland "Add rule to build final debugger-app image" If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7b93aaefc2fa4..297a66e220fbf 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '18e834916f47a0ebea09d2c79d61fde0554c87f0', + 'skia_revision': '100d0f858f02ee74022352dc968333d3e0d93441', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cf63540aea49d..6cdbca737e386 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 271e1618de445abab2721c39fbcbf943 +Signature: 35e23894bae82e856c71c630f7104dde ==================================================================================================== LIBRARY: etc1 From d3df216acd66e220bc0d64abc13c9974fdb4eda3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 16:26:55 -0400 Subject: [PATCH 201/211] Roll ANGLE from a4c283be741f to f2e0f8a0b236 (2 revisions) (#43864) https://chromium.googlesource.com/angle/angle.git/+log/a4c283be741f..f2e0f8a0b236 2023-07-20 avi@chromium.org Don't allow ANGLE to be compiled as ARC 2023-07-20 natsu@google.com Vulkan: EGL's DISPLAY_P3_PASSTHROUGH -> VK's DISPLAY_P3_NONLINEAR If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/angle-flutter-engine Please CC bdero@google.com,flutter-engine@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: http://anglebug.com/new To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 297a66e220fbf..bb872e6467c1e 100644 --- a/DEPS +++ b/DEPS @@ -635,7 +635,7 @@ deps = { Var('swiftshader_git') + '/SwiftShader.git' + '@' + '5f9ed9b16931c7155171d31f75004f73f0a3abc8', 'src/third_party/angle': - Var('chromium_git') + '/angle/angle.git' + '@' + 'a4c283be741f95b48a6369b8e6bed53ee0ff5fac', + Var('chromium_git') + '/angle/angle.git' + '@' + 'f2e0f8a0b23624ec1b3f4d92d4221c815dc970fe', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator' + '@' + '7de5cc00de50e71a3aab22dea52fbb7ff4efceb6', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 90e9c995025e1..3b33e83ad59c0 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: b563b936b54935820ae32775c093d4c8 +Signature: c4fc130d97934b6bd297b59977d1ef33 ==================================================================================================== LIBRARY: angle From f99ad2e70e47ef1d87a7558049e0cb37047e1db9 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 20 Jul 2023 13:47:16 -0700 Subject: [PATCH 202/211] [Impeller] Provide fragment uniform data through varyings for solid color, glyph atlas, texture shaders. (#43838) From experimentation, providing these values through varyings runs substantially faster on Pixel devices. Alternative solutions to use f16 or push constants did not improve things substantially. These subset of shaders are used very heavily and so they benefit from this change more substantially. I don't think this is applicable to all shaders as there is going to be an additional varying interpolation cost. See also: [go/impeller-slow-fragment-shader](http://goto.google.com/impeller-slow-fragment-shader) --- .../compiler/shader_lib/impeller/types.glsl | 6 + impeller/entity/contents/atlas_contents.cc | 5 +- impeller/entity/contents/clip_contents.cc | 12 +- .../entity/contents/solid_color_contents.cc | 6 +- impeller/entity/contents/text_contents.cc | 5 +- impeller/entity/contents/texture_contents.cc | 5 +- .../entity/contents/tiled_texture_contents.cc | 7 +- impeller/entity/contents/vertices_contents.cc | 5 +- impeller/entity/entity_unittests.cc | 7 +- impeller/entity/shaders/glyph_atlas.frag | 9 +- impeller/entity/shaders/glyph_atlas.vert | 5 + .../entity/shaders/glyph_atlas_color.frag | 9 +- impeller/entity/shaders/solid_fill.frag | 7 +- impeller/entity/shaders/solid_fill.vert | 4 + impeller/entity/shaders/texture_fill.frag | 8 +- impeller/entity/shaders/texture_fill.vert | 3 + .../entity/shaders/tiled_texture_fill.frag | 4 +- .../renderer/compute_subgroup_unittests.cc | 18 +- impeller/tools/malioc.json | 435 ++++++++++-------- 19 files changed, 295 insertions(+), 265 deletions(-) diff --git a/impeller/compiler/shader_lib/impeller/types.glsl b/impeller/compiler/shader_lib/impeller/types.glsl index ad1a0e86cf93f..b0ce4188d08ee 100644 --- a/impeller/compiler/shader_lib/impeller/types.glsl +++ b/impeller/compiler/shader_lib/impeller/types.glsl @@ -9,6 +9,12 @@ #extension GL_AMD_gpu_shader_half_float_fetch : enable #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable +#ifdef IMPELLER_TARGET_OPENGLES +#define IMPELLER_MAYBE_FLAT +#else +#define IMPELLER_MAYBE_FLAT flat +#endif + #ifndef IMPELLER_TARGET_METAL_IOS precision mediump sampler2D; diff --git a/impeller/entity/contents/atlas_contents.cc b/impeller/entity/contents/atlas_contents.cc index b88fee0c20561..bfdfd16aa127a 100644 --- a/impeller/entity/contents/atlas_contents.cc +++ b/impeller/entity/contents/atlas_contents.cc @@ -338,16 +338,13 @@ bool AtlasTextureContents::Render(const ContentContext& renderer, frame_info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * entity.GetTransformation(); frame_info.texture_sampler_y_coord_scale = texture->GetYCoordScale(); - - FS::FragInfo frag_info; - frag_info.alpha = alpha_; + frame_info.alpha = alpha_; auto options = OptionsFromPassAndEntity(pass, entity); cmd.pipeline = renderer.GetTexturePipeline(options); cmd.stencil_reference = entity.GetStencilDepth(); cmd.BindVertices(vertex_builder.CreateVertexBuffer(host_buffer)); VS::BindFrameInfo(cmd, host_buffer.EmplaceUniform(frame_info)); - FS::BindFragInfo(cmd, host_buffer.EmplaceUniform(frag_info)); FS::BindTextureSampler(cmd, texture, renderer.GetContext()->GetSamplerLibrary()->GetSampler( parent_.GetSamplerDescriptor())); diff --git a/impeller/entity/contents/clip_contents.cc b/impeller/entity/contents/clip_contents.cc index f7663312a9dac..65b05e869247e 100644 --- a/impeller/entity/contents/clip_contents.cc +++ b/impeller/entity/contents/clip_contents.cc @@ -80,16 +80,13 @@ bool ClipContents::Render(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const { using VS = ClipPipeline::VertexShader; - using FS = ClipPipeline::FragmentShader; VS::FrameInfo info; Command cmd; - FS::FragInfo frag_info; // The color really doesn't matter. - frag_info.color = Color::SkyBlue(); - FS::BindFragInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frag_info)); + info.color = Color::SkyBlue(); auto options = OptionsFromPassAndEntity(pass, entity); cmd.stencil_reference = entity.GetStencilDepth(); @@ -182,7 +179,6 @@ bool ClipRestoreContents::Render(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const { using VS = ClipPipeline::VertexShader; - using FS = ClipPipeline::FragmentShader; Command cmd; cmd.label = "Restore Clip"; @@ -208,13 +204,9 @@ bool ClipRestoreContents::Render(const ContentContext& renderer, VS::FrameInfo info; info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()); + info.color = Color::SkyBlue(); VS::BindFrameInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(info)); - FS::FragInfo frag_info; - // The color really doesn't matter. - frag_info.color = Color::SkyBlue(); - FS::BindFragInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frag_info)); - pass.AddCommand(std::move(cmd)); return true; } diff --git a/impeller/entity/contents/solid_color_contents.cc b/impeller/entity/contents/solid_color_contents.cc index 02ecbf67365ad..8a2ceadacfa25 100644 --- a/impeller/entity/contents/solid_color_contents.cc +++ b/impeller/entity/contents/solid_color_contents.cc @@ -54,7 +54,6 @@ bool SolidColorContents::Render(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const { using VS = SolidFillPipeline::VertexShader; - using FS = SolidFillPipeline::FragmentShader; Command cmd; cmd.label = "Solid Fill"; @@ -75,12 +74,9 @@ bool SolidColorContents::Render(const ContentContext& renderer, VS::FrameInfo frame_info; frame_info.mvp = geometry_result.transform; + frame_info.color = GetColor().Premultiply(); VS::BindFrameInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frame_info)); - FS::FragInfo frag_info; - frag_info.color = GetColor().Premultiply(); - FS::BindFragInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frag_info)); - if (!pass.AddCommand(std::move(cmd))) { return false; } diff --git a/impeller/entity/contents/text_contents.cc b/impeller/entity/contents/text_contents.cc index 339bb27549166..bbb2524abb52d 100644 --- a/impeller/entity/contents/text_contents.cc +++ b/impeller/entity/contents/text_contents.cc @@ -125,6 +125,7 @@ bool TextContents::Render(const ContentContext& renderer, frame_info.is_translation_scale = entity.GetTransformation().IsTranslationScaleOnly(); frame_info.entity_transform = entity.GetTransformation(); + frame_info.text_color = ToVector(color.Premultiply()); VS::BindFrameInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frame_info)); @@ -143,10 +144,6 @@ bool TextContents::Render(const ContentContext& renderer, } sampler_desc.mip_filter = MipFilter::kNearest; - FS::FragInfo frag_info; - frag_info.text_color = ToVector(color.Premultiply()); - FS::BindFragInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frag_info)); - FS::BindGlyphAtlasSampler( cmd, // command atlas->GetTexture(), // texture diff --git a/impeller/entity/contents/texture_contents.cc b/impeller/entity/contents/texture_contents.cc index 553d53c0c96ff..1dbc8a5a2b50b 100644 --- a/impeller/entity/contents/texture_contents.cc +++ b/impeller/entity/contents/texture_contents.cc @@ -135,9 +135,7 @@ bool TextureContents::Render(const ContentContext& renderer, frame_info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * entity.GetTransformation(); frame_info.texture_sampler_y_coord_scale = texture_->GetYCoordScale(); - - FS::FragInfo frag_info; - frag_info.alpha = GetOpacity(); + frame_info.alpha = GetOpacity(); Command cmd; cmd.label = "Texture Fill"; @@ -155,7 +153,6 @@ bool TextureContents::Render(const ContentContext& renderer, cmd.stencil_reference = entity.GetStencilDepth(); cmd.BindVertices(vertex_builder.CreateVertexBuffer(host_buffer)); VS::BindFrameInfo(cmd, host_buffer.EmplaceUniform(frame_info)); - FS::BindFragInfo(cmd, host_buffer.EmplaceUniform(frag_info)); FS::BindTextureSampler(cmd, texture_, renderer.GetContext()->GetSamplerLibrary()->GetSampler( sampler_descriptor_)); diff --git a/impeller/entity/contents/tiled_texture_contents.cc b/impeller/entity/contents/tiled_texture_contents.cc index c5172b71ca71b..8ef9b6d78cb99 100644 --- a/impeller/entity/contents/tiled_texture_contents.cc +++ b/impeller/entity/contents/tiled_texture_contents.cc @@ -136,6 +136,7 @@ bool TiledTextureContents::Render(const ContentContext& renderer, VS::FrameInfo frame_info; frame_info.mvp = geometry_result.transform; frame_info.texture_sampler_y_coord_scale = texture_->GetYCoordScale(); + frame_info.alpha = GetOpacityFactor(); Command cmd; cmd.label = uses_emulated_tile_mode ? "TiledTextureFill" : "TextureFill"; @@ -158,13 +159,7 @@ bool TiledTextureContents::Render(const ContentContext& renderer, FS::FragInfo frag_info; frag_info.x_tile_mode = static_cast(x_tile_mode_); frag_info.y_tile_mode = static_cast(y_tile_mode_); - frag_info.alpha = GetOpacityFactor(); FS::BindFragInfo(cmd, host_buffer.EmplaceUniform(frag_info)); - } else { - TextureFillFragmentShader::FragInfo frag_info; - frag_info.alpha = GetOpacityFactor(); - TextureFillFragmentShader::BindFragInfo( - cmd, host_buffer.EmplaceUniform(frag_info)); } if (color_filter_) { diff --git a/impeller/entity/contents/vertices_contents.cc b/impeller/entity/contents/vertices_contents.cc index 75c6b2ea3b6f1..353e28e112ee7 100644 --- a/impeller/entity/contents/vertices_contents.cc +++ b/impeller/entity/contents/vertices_contents.cc @@ -144,12 +144,9 @@ bool VerticesUVContents::Render(const ContentContext& renderer, frame_info.mvp = geometry_result.transform; frame_info.texture_sampler_y_coord_scale = snapshot->texture->GetYCoordScale(); + frame_info.alpha = alpha_ * snapshot->opacity; VS::BindFrameInfo(cmd, host_buffer.EmplaceUniform(frame_info)); - FS::FragInfo frag_info; - frag_info.alpha = alpha_ * snapshot->opacity; - FS::BindFragInfo(cmd, host_buffer.EmplaceUniform(frag_info)); - FS::BindTextureSampler(cmd, snapshot->texture, renderer.GetContext()->GetSamplerLibrary()->GetSampler( snapshot->sampler_descriptor)); diff --git a/impeller/entity/entity_unittests.cc b/impeller/entity/entity_unittests.cc index 05818e84270f7..b8c4975c13ec2 100644 --- a/impeller/entity/entity_unittests.cc +++ b/impeller/entity/entity_unittests.cc @@ -857,7 +857,6 @@ TEST_P(EntityTest, BlendingModeOptions) { auto draw_rect = [&context, &pass, &world_matrix]( Rect rect, Color color, BlendMode blend_mode) -> bool { using VS = SolidFillPipeline::VertexShader; - using FS = SolidFillPipeline::FragmentShader; VertexBufferBuilder vtx_builder; { @@ -884,14 +883,10 @@ TEST_P(EntityTest, BlendingModeOptions) { VS::FrameInfo frame_info; frame_info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * world_matrix; + frame_info.color = color.Premultiply(); VS::BindFrameInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frame_info)); - FS::FragInfo frag_info; - frag_info.color = color.Premultiply(); - FS::BindFragInfo(cmd, - pass.GetTransientsBuffer().EmplaceUniform(frag_info)); - return pass.AddCommand(std::move(cmd)); }; diff --git a/impeller/entity/shaders/glyph_atlas.frag b/impeller/entity/shaders/glyph_atlas.frag index fbd7d3afeb969..9a9b71780dd33 100644 --- a/impeller/entity/shaders/glyph_atlas.frag +++ b/impeller/entity/shaders/glyph_atlas.frag @@ -8,16 +8,13 @@ precision mediump float; uniform f16sampler2D glyph_atlas_sampler; -uniform FragInfo { - f16vec4 text_color; -} -frag_info; - in highp vec2 v_uv; +IMPELLER_MAYBE_FLAT in f16vec4 v_text_color; + out f16vec4 frag_color; void main() { f16vec4 value = texture(glyph_atlas_sampler, v_uv); - frag_color = value.aaaa * frag_info.text_color; + frag_color = value.aaaa * v_text_color; } diff --git a/impeller/entity/shaders/glyph_atlas.vert b/impeller/entity/shaders/glyph_atlas.vert index d21f75a10dd27..c677997e7268e 100644 --- a/impeller/entity/shaders/glyph_atlas.vert +++ b/impeller/entity/shaders/glyph_atlas.vert @@ -3,12 +3,14 @@ // found in the LICENSE file. #include +#include uniform FrameInfo { mat4 mvp; mat4 entity_transform; vec2 atlas_size; vec2 offset; + f16vec4 text_color; float is_translation_scale; } frame_info; @@ -23,6 +25,8 @@ in vec2 glyph_position; out vec2 v_uv; +IMPELLER_MAYBE_FLAT out f16vec4 v_text_color; + mat4 basis(mat4 m) { return mat4(m[0][0], m[0][1], m[0][2], 0.0, // m[1][0], m[1][1], m[1][2], 0.0, // @@ -77,4 +81,5 @@ void main() { gl_Position = frame_info.mvp * position; v_uv = uv_origin + unit_position * uv_size; + v_text_color = frame_info.text_color; } diff --git a/impeller/entity/shaders/glyph_atlas_color.frag b/impeller/entity/shaders/glyph_atlas_color.frag index e33c31f754254..293329b764fca 100644 --- a/impeller/entity/shaders/glyph_atlas_color.frag +++ b/impeller/entity/shaders/glyph_atlas_color.frag @@ -8,16 +8,13 @@ precision mediump float; uniform f16sampler2D glyph_atlas_sampler; -uniform FragInfo { - f16vec4 text_color; -} -frag_info; - in highp vec2 v_uv; +IMPELLER_MAYBE_FLAT in f16vec4 v_text_color; + out f16vec4 frag_color; void main() { f16vec4 value = texture(glyph_atlas_sampler, v_uv); - frag_color = value * frag_info.text_color.aaaa; + frag_color = value * v_text_color.aaaa; } diff --git a/impeller/entity/shaders/solid_fill.frag b/impeller/entity/shaders/solid_fill.frag index 0001edc7412f5..ed376a71d85bb 100644 --- a/impeller/entity/shaders/solid_fill.frag +++ b/impeller/entity/shaders/solid_fill.frag @@ -6,13 +6,10 @@ precision mediump float; #include -uniform FragInfo { - f16vec4 color; -} -frag_info; +IMPELLER_MAYBE_FLAT in f16vec4 v_color; out f16vec4 frag_color; void main() { - frag_color = frag_info.color; + frag_color = v_color; } diff --git a/impeller/entity/shaders/solid_fill.vert b/impeller/entity/shaders/solid_fill.vert index 4d8e67e74a2ef..76733804d6e45 100644 --- a/impeller/entity/shaders/solid_fill.vert +++ b/impeller/entity/shaders/solid_fill.vert @@ -6,11 +6,15 @@ uniform FrameInfo { mat4 mvp; + f16vec4 color; } frame_info; in vec2 position; +IMPELLER_MAYBE_FLAT out f16vec4 v_color; + void main() { + v_color = frame_info.color; gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0); } diff --git a/impeller/entity/shaders/texture_fill.frag b/impeller/entity/shaders/texture_fill.frag index f61bf342a00b3..c520b4701ce8d 100644 --- a/impeller/entity/shaders/texture_fill.frag +++ b/impeller/entity/shaders/texture_fill.frag @@ -9,17 +9,13 @@ precision mediump float; uniform f16sampler2D texture_sampler; -uniform FragInfo { - float16_t alpha; -} -frag_info; - in highp vec2 v_texture_coords; +IMPELLER_MAYBE_FLAT in float16_t v_alpha; out f16vec4 frag_color; void main() { f16vec4 sampled = texture(texture_sampler, v_texture_coords, kDefaultMipBiasHalf); - frag_color = sampled * frag_info.alpha; + frag_color = sampled * v_alpha; } diff --git a/impeller/entity/shaders/texture_fill.vert b/impeller/entity/shaders/texture_fill.vert index 0dbc6fd4bfad4..26e5f73f713b5 100644 --- a/impeller/entity/shaders/texture_fill.vert +++ b/impeller/entity/shaders/texture_fill.vert @@ -8,6 +8,7 @@ uniform FrameInfo { mat4 mvp; float texture_sampler_y_coord_scale; + float16_t alpha; } frame_info; @@ -15,9 +16,11 @@ in vec2 position; in vec2 texture_coords; out vec2 v_texture_coords; +IMPELLER_MAYBE_FLAT out float16_t v_alpha; void main() { gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0); + v_alpha = frame_info.alpha; v_texture_coords = IPRemapCoords(texture_coords, frame_info.texture_sampler_y_coord_scale); } diff --git a/impeller/entity/shaders/tiled_texture_fill.frag b/impeller/entity/shaders/tiled_texture_fill.frag index 46d4d63183f74..5e8413ef98f9c 100644 --- a/impeller/entity/shaders/tiled_texture_fill.frag +++ b/impeller/entity/shaders/tiled_texture_fill.frag @@ -12,11 +12,11 @@ uniform f16sampler2D texture_sampler; uniform FragInfo { float16_t x_tile_mode; float16_t y_tile_mode; - float16_t alpha; } frag_info; in highp vec2 v_texture_coords; +IMPELLER_MAYBE_FLAT in float16_t v_alpha; out f16vec4 frag_color; @@ -27,5 +27,5 @@ void main() { frag_info.x_tile_mode, // x tile mode frag_info.y_tile_mode // y tile mode ) * - frag_info.alpha; + v_alpha; } diff --git a/impeller/renderer/compute_subgroup_unittests.cc b/impeller/renderer/compute_subgroup_unittests.cc index 39e5fac2587a2..84bc953ddc3e1 100644 --- a/impeller/renderer/compute_subgroup_unittests.cc +++ b/impeller/renderer/compute_subgroup_unittests.cc @@ -131,7 +131,6 @@ TEST_P(ComputeSubgroupTest, PathPlayground) { } using VS = SolidFillPipeline::VertexShader; - using FS = SolidFillPipeline::FragmentShader; Command cmd; cmd.label = "Draw Stroke"; @@ -164,13 +163,10 @@ TEST_P(ComputeSubgroupTest, PathPlayground) { auto world_matrix = Matrix::MakeScale(GetContentScale()); frame_info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * world_matrix; + frame_info.color = Color::Red().Premultiply(); VS::BindFrameInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frame_info)); - FS::FragInfo frag_info; - frag_info.color = Color::Red().Premultiply(); - FS::BindFragInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frag_info)); - if (!pass.AddCommand(std::move(cmd))) { return false; } @@ -339,7 +335,6 @@ TEST_P(ComputeSubgroupTest, LargePath) { } using VS = SolidFillPipeline::VertexShader; - using FS = SolidFillPipeline::FragmentShader; Command cmd; cmd.label = "Draw Stroke"; @@ -372,13 +367,10 @@ TEST_P(ComputeSubgroupTest, LargePath) { auto world_matrix = Matrix::MakeScale(GetContentScale()); frame_info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * world_matrix; + frame_info.color = Color::Red().Premultiply(); VS::BindFrameInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frame_info)); - FS::FragInfo frag_info; - frag_info.color = Color::Red().Premultiply(); - FS::BindFragInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frag_info)); - if (!pass.AddCommand(std::move(cmd))) { return false; } @@ -427,7 +419,6 @@ TEST_P(ComputeSubgroupTest, QuadAndCubicInOnePath) { } using VS = SolidFillPipeline::VertexShader; - using FS = SolidFillPipeline::FragmentShader; Command cmd; cmd.label = "Draw Stroke"; @@ -460,13 +451,10 @@ TEST_P(ComputeSubgroupTest, QuadAndCubicInOnePath) { auto world_matrix = Matrix::MakeScale(GetContentScale()); frame_info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * world_matrix; + frame_info.color = Color::Red().Premultiply(); VS::BindFrameInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frame_info)); - FS::FragInfo frag_info; - frag_info.color = Color::Red().Premultiply(); - FS::BindFragInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frag_info)); - if (!pass.AddCommand(std::move(cmd))) { return false; } diff --git a/impeller/tools/malioc.json b/impeller/tools/malioc.json index edbfb7f89f619..cb9684572c2a3 100644 --- a/impeller/tools/malioc.json +++ b/impeller/tools/malioc.json @@ -7394,8 +7394,7 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "longest_path_cycles": [ 0.03125, @@ -7403,7 +7402,7 @@ 0.03125, 0.0, 0.0, - 0.25, + 0.5, 0.25 ], "pipelines": [ @@ -7416,8 +7415,7 @@ "texture" ], "shortest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "shortest_path_cycles": [ 0.03125, @@ -7425,12 +7423,11 @@ 0.0, 0.0, 0.0, - 0.25, + 0.5, 0.25 ], "total_bound_pipelines": [ - "varying", - "texture" + "varying" ], "total_cycles": [ 0.03125, @@ -7438,13 +7435,13 @@ 0.03125, 0.0, 0.0, - 0.25, + 0.5, 0.25 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 6, + "uniform_registers_used": 4, "work_registers_used": 19 } } @@ -7494,7 +7491,7 @@ ] }, "thread_occupancy": 100, - "uniform_registers_used": 1, + "uniform_registers_used": 0, "work_registers_used": 2 } } @@ -7555,7 +7552,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 44, + "uniform_registers_used": 48, "work_registers_used": 32 }, "Varying": { @@ -7568,9 +7565,9 @@ "longest_path_cycles": [ 0.15625, 0.15625, + 0.0625, 0.0, - 0.0, - 4.0, + 5.0, 0.0 ], "pipelines": [ @@ -7587,9 +7584,9 @@ "shortest_path_cycles": [ 0.15625, 0.15625, + 0.0625, 0.0, - 0.0, - 4.0, + 5.0, 0.0 ], "total_bound_pipelines": [ @@ -7598,16 +7595,16 @@ "total_cycles": [ 0.15625, 0.15625, + 0.0625, 0.0, - 0.0, - 4.0, + 5.0, 0.0 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 14, - "work_registers_used": 11 + "uniform_registers_used": 18, + "work_registers_used": 16 } } }, @@ -7624,8 +7621,8 @@ "load_store" ], "longest_path_cycles": [ - 6.929999828338623, - 7.0, + 7.260000228881836, + 8.0, 0.0 ], "pipelines": [ @@ -7637,21 +7634,21 @@ "load_store" ], "shortest_path_cycles": [ - 5.940000057220459, - 7.0, + 6.269999980926514, + 8.0, 0.0 ], "total_bound_pipelines": [ "arithmetic" ], "total_cycles": [ - 9.0, - 7.0, + 9.333333015441895, + 8.0, 0.0 ] }, "thread_occupancy": 100, - "uniform_registers_used": 11, + "uniform_registers_used": 13, "work_registers_used": 3 } } @@ -7674,8 +7671,7 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "longest_path_cycles": [ 0.03125, @@ -7683,7 +7679,7 @@ 0.03125, 0.0, 0.0, - 0.25, + 0.5, 0.25 ], "pipelines": [ @@ -7696,8 +7692,7 @@ "texture" ], "shortest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "shortest_path_cycles": [ 0.03125, @@ -7705,12 +7700,11 @@ 0.0, 0.0, 0.0, - 0.25, + 0.5, 0.25 ], "total_bound_pipelines": [ - "varying", - "texture" + "varying" ], "total_cycles": [ 0.03125, @@ -7718,7 +7712,7 @@ 0.03125, 0.0, 0.0, - 0.25, + 0.5, 0.25 ] }, @@ -7774,7 +7768,7 @@ ] }, "thread_occupancy": 100, - "uniform_registers_used": 1, + "uniform_registers_used": 0, "work_registers_used": 2 } } @@ -9446,16 +9440,15 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying" ], "longest_path_cycles": [ - 0.0625, - 0.0, - 0.0625, + 0.03125, 0.0, + 0.03125, 0.0, 0.0, + 0.25, 0.0 ], "pipelines": [ @@ -9468,36 +9461,34 @@ "texture" ], "shortest_path_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying" ], "shortest_path_cycles": [ - 0.03125, 0.0, - 0.03125, 0.0, 0.0, 0.0, + 0.0, + 0.25, 0.0 ], "total_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying" ], "total_cycles": [ - 0.0625, - 0.0, - 0.0625, + 0.03125, 0.0, + 0.03125, 0.0, 0.0, + 0.25, 0.0 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 2, - "work_registers_used": 18 + "uniform_registers_used": 0, + "work_registers_used": 19 } } }, @@ -9511,11 +9502,12 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "arithmetic" + "arithmetic", + "load_store" ], "longest_path_cycles": [ 1.0, - 0.0, + 1.0, 0.0 ], "pipelines": [ @@ -9524,24 +9516,25 @@ "texture" ], "shortest_path_bound_pipelines": [ - "arithmetic" + "arithmetic", + "load_store" ], "shortest_path_cycles": [ 1.0, - 0.0, + 1.0, 0.0 ], "total_bound_pipelines": [ - "arithmetic" + "load_store" ], "total_cycles": [ 0.6666666865348816, - 0.0, + 1.0, 0.0 ] }, "thread_occupancy": 100, - "uniform_registers_used": 1, + "uniform_registers_used": 0, "work_registers_used": 2 } } @@ -9602,8 +9595,59 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 20, + "uniform_registers_used": 24, "work_registers_used": 32 + }, + "Varying": { + "fp16_arithmetic": null, + "has_stack_spilling": false, + "performance": { + "longest_path_bound_pipelines": [ + "load_store" + ], + "longest_path_cycles": [ + 0.0625, + 0.0, + 0.0625, + 0.0, + 2.0, + 0.0 + ], + "pipelines": [ + "arith_total", + "arith_fma", + "arith_cvt", + "arith_sfu", + "load_store", + "texture" + ], + "shortest_path_bound_pipelines": [ + "load_store" + ], + "shortest_path_cycles": [ + 0.0625, + 0.0, + 0.0625, + 0.0, + 2.0, + 0.0 + ], + "total_bound_pipelines": [ + "load_store" + ], + "total_cycles": [ + 0.0625, + 0.0, + 0.0625, + 0.0, + 2.0, + 0.0 + ] + }, + "stack_spill_bytes": 0, + "thread_occupancy": 100, + "uniform_registers_used": 12, + "work_registers_used": 7 } } }, @@ -9621,7 +9665,7 @@ ], "longest_path_cycles": [ 2.640000104904175, - 3.0, + 4.0, 0.0 ], "pipelines": [ @@ -9634,7 +9678,7 @@ ], "shortest_path_cycles": [ 2.640000104904175, - 3.0, + 4.0, 0.0 ], "total_bound_pipelines": [ @@ -9642,12 +9686,12 @@ ], "total_cycles": [ 2.6666667461395264, - 3.0, + 4.0, 0.0 ] }, "thread_occupancy": 100, - "uniform_registers_used": 5, + "uniform_registers_used": 6, "work_registers_used": 2 } } @@ -10064,8 +10108,7 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "longest_path_cycles": [ 0.046875, @@ -10073,7 +10116,7 @@ 0.046875, 0.0, 0.0, - 0.25, + 0.375, 0.25 ], "pipelines": [ @@ -10086,8 +10129,7 @@ "texture" ], "shortest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "shortest_path_cycles": [ 0.03125, @@ -10095,12 +10137,11 @@ 0.015625, 0.0, 0.0, - 0.25, + 0.375, 0.25 ], "total_bound_pipelines": [ - "varying", - "texture" + "varying" ], "total_cycles": [ 0.046875, @@ -10108,13 +10149,13 @@ 0.046875, 0.0, 0.0, - 0.25, + 0.375, 0.25 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 4, + "uniform_registers_used": 2, "work_registers_used": 19 } } @@ -10164,7 +10205,7 @@ ] }, "thread_occupancy": 100, - "uniform_registers_used": 1, + "uniform_registers_used": 0, "work_registers_used": 2 } } @@ -10236,9 +10277,9 @@ "load_store" ], "longest_path_cycles": [ + 0.03125, 0.015625, - 0.015625, - 0.015625, + 0.03125, 0.0, 3.0, 0.0 @@ -10255,9 +10296,9 @@ "load_store" ], "shortest_path_cycles": [ + 0.03125, 0.015625, - 0.015625, - 0.015625, + 0.03125, 0.0, 3.0, 0.0 @@ -10266,9 +10307,9 @@ "load_store" ], "total_cycles": [ + 0.03125, 0.015625, - 0.015625, - 0.015625, + 0.03125, 0.0, 3.0, 0.0 @@ -10295,7 +10336,7 @@ ], "longest_path_cycles": [ 2.9700000286102295, - 5.0, + 6.0, 0.0 ], "pipelines": [ @@ -10308,7 +10349,7 @@ ], "shortest_path_cycles": [ 2.9700000286102295, - 5.0, + 6.0, 0.0 ], "total_bound_pipelines": [ @@ -10316,7 +10357,7 @@ ], "total_cycles": [ 3.0, - 5.0, + 6.0, 0.0 ] }, @@ -10344,16 +10385,15 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying" ], "longest_path_cycles": [ - 0.265625, + 0.25, 0.03125, - 0.265625, + 0.25, 0.0, 0.0, - 0.25, + 0.375, 0.25 ], "pipelines": [ @@ -10366,29 +10406,27 @@ "texture" ], "shortest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "shortest_path_cycles": [ - 0.0625, + 0.046875, 0.03125, - 0.0625, + 0.046875, 0.0, 0.0, - 0.25, + 0.375, 0.25 ], "total_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying" ], "total_cycles": [ - 0.265625, + 0.25, 0.03125, - 0.265625, + 0.25, 0.0, 0.0, - 0.25, + 0.375, 0.25 ] }, @@ -10413,7 +10451,7 @@ ], "longest_path_cycles": [ 3.299999952316284, - 1.0, + 2.0, 1.0 ], "pipelines": [ @@ -10422,11 +10460,11 @@ "texture" ], "shortest_path_bound_pipelines": [ - "arithmetic" + "load_store" ], "shortest_path_cycles": [ 1.3200000524520874, - 1.0, + 2.0, 0.0 ], "total_bound_pipelines": [ @@ -10434,7 +10472,7 @@ ], "total_cycles": [ 3.6666667461395264, - 1.0, + 2.0, 1.0 ] }, @@ -10839,7 +10877,7 @@ "core": "Mali-G78", "filename": "flutter/impeller/entity/glyph_atlas.frag.vkspv", "has_side_effects": false, - "has_uniform_computation": true, + "has_uniform_computation": false, "modifies_coverage": false, "reads_color_buffer": false, "type": "Fragment", @@ -10851,8 +10889,7 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "longest_path_cycles": [ 0.03125, @@ -10860,7 +10897,7 @@ 0.0, 0.0, 0.0, - 0.25, + 0.5, 0.25 ], "pipelines": [ @@ -10873,8 +10910,7 @@ "texture" ], "shortest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "shortest_path_cycles": [ 0.03125, @@ -10882,12 +10918,11 @@ 0.0, 0.0, 0.0, - 0.25, + 0.5, 0.25 ], "total_bound_pipelines": [ - "varying", - "texture" + "varying" ], "total_cycles": [ 0.03125, @@ -10895,13 +10930,13 @@ 0.0, 0.0, 0.0, - 0.25, + 0.5, 0.25 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 6, + "uniform_registers_used": 4, "work_registers_used": 6 } } @@ -10962,7 +10997,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 52, + "uniform_registers_used": 56, "work_registers_used": 32 }, "Varying": { @@ -10975,9 +11010,9 @@ "longest_path_cycles": [ 0.15625, 0.15625, + 0.0625, 0.0, - 0.0, - 4.0, + 5.0, 0.0 ], "pipelines": [ @@ -10994,9 +11029,9 @@ "shortest_path_cycles": [ 0.15625, 0.15625, + 0.0625, 0.0, - 0.0, - 4.0, + 5.0, 0.0 ], "total_bound_pipelines": [ @@ -11005,16 +11040,16 @@ "total_cycles": [ 0.15625, 0.15625, + 0.0625, 0.0, - 0.0, - 4.0, + 5.0, 0.0 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 44, - "work_registers_used": 11 + "uniform_registers_used": 48, + "work_registers_used": 13 } } } @@ -11024,7 +11059,7 @@ "core": "Mali-G78", "filename": "flutter/impeller/entity/glyph_atlas_color.frag.vkspv", "has_side_effects": false, - "has_uniform_computation": true, + "has_uniform_computation": false, "modifies_coverage": false, "reads_color_buffer": false, "type": "Fragment", @@ -11036,8 +11071,7 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "longest_path_cycles": [ 0.03125, @@ -11045,7 +11079,7 @@ 0.0, 0.0, 0.0, - 0.25, + 0.5, 0.25 ], "pipelines": [ @@ -11058,8 +11092,7 @@ "texture" ], "shortest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "shortest_path_cycles": [ 0.03125, @@ -11067,12 +11100,11 @@ 0.0, 0.0, 0.0, - 0.25, + 0.5, 0.25 ], "total_bound_pipelines": [ - "varying", - "texture" + "varying" ], "total_cycles": [ 0.03125, @@ -11080,14 +11112,14 @@ 0.0, 0.0, 0.0, - 0.25, + 0.5, 0.25 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, "uniform_registers_used": 4, - "work_registers_used": 4 + "work_registers_used": 6 } } } @@ -12408,7 +12440,7 @@ "core": "Mali-G78", "filename": "flutter/impeller/entity/solid_fill.frag.vkspv", "has_side_effects": false, - "has_uniform_computation": true, + "has_uniform_computation": false, "modifies_coverage": false, "reads_color_buffer": false, "type": "Fragment", @@ -12420,16 +12452,15 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying" ], "longest_path_cycles": [ - 0.0625, 0.0, - 0.0625, 0.0, 0.0, 0.0, + 0.0, + 0.25, 0.0 ], "pipelines": [ @@ -12442,36 +12473,34 @@ "texture" ], "shortest_path_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying" ], "shortest_path_cycles": [ - 0.0625, 0.0, - 0.0625, 0.0, 0.0, 0.0, + 0.0, + 0.25, 0.0 ], "total_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying" ], "total_cycles": [ - 0.0625, 0.0, - 0.0625, 0.0, 0.0, 0.0, + 0.0, + 0.25, 0.0 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 4, - "work_registers_used": 5 + "uniform_registers_used": 0, + "work_registers_used": 3 } } } @@ -12531,8 +12560,59 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 28, + "uniform_registers_used": 32, "work_registers_used": 32 + }, + "Varying": { + "fp16_arithmetic": null, + "has_stack_spilling": false, + "performance": { + "longest_path_bound_pipelines": [ + "load_store" + ], + "longest_path_cycles": [ + 0.0625, + 0.0, + 0.0625, + 0.0, + 2.0, + 0.0 + ], + "pipelines": [ + "arith_total", + "arith_fma", + "arith_cvt", + "arith_sfu", + "load_store", + "texture" + ], + "shortest_path_bound_pipelines": [ + "load_store" + ], + "shortest_path_cycles": [ + 0.0625, + 0.0, + 0.0625, + 0.0, + 2.0, + 0.0 + ], + "total_bound_pipelines": [ + "load_store" + ], + "total_cycles": [ + 0.0625, + 0.0, + 0.0625, + 0.0, + 2.0, + 0.0 + ] + }, + "stack_spill_bytes": 0, + "thread_occupancy": 100, + "uniform_registers_used": 24, + "work_registers_used": 7 } } } @@ -12871,7 +12951,7 @@ "core": "Mali-G78", "filename": "flutter/impeller/entity/texture_fill.frag.vkspv", "has_side_effects": false, - "has_uniform_computation": true, + "has_uniform_computation": false, "modifies_coverage": false, "reads_color_buffer": false, "type": "Fragment", @@ -12883,8 +12963,7 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "longest_path_cycles": [ 0.03125, @@ -12892,7 +12971,7 @@ 0.015625, 0.0, 0.0, - 0.25, + 0.375, 0.25 ], "pipelines": [ @@ -12905,8 +12984,7 @@ "texture" ], "shortest_path_bound_pipelines": [ - "varying", - "texture" + "varying" ], "shortest_path_cycles": [ 0.03125, @@ -12914,12 +12992,11 @@ 0.015625, 0.0, 0.0, - 0.25, + 0.375, 0.25 ], "total_bound_pipelines": [ - "varying", - "texture" + "varying" ], "total_cycles": [ 0.03125, @@ -12927,14 +13004,14 @@ 0.015625, 0.0, 0.0, - 0.25, + 0.375, 0.25 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 4, - "work_registers_used": 5 + "uniform_registers_used": 2, + "work_registers_used": 6 } } } @@ -13005,9 +13082,9 @@ "load_store" ], "longest_path_cycles": [ + 0.046875, 0.015625, - 0.015625, - 0.015625, + 0.046875, 0.0, 3.0, 0.0 @@ -13024,9 +13101,9 @@ "load_store" ], "shortest_path_cycles": [ + 0.046875, 0.015625, - 0.015625, - 0.015625, + 0.046875, 0.0, 3.0, 0.0 @@ -13035,9 +13112,9 @@ "load_store" ], "total_cycles": [ + 0.046875, 0.015625, - 0.015625, - 0.015625, + 0.046875, 0.0, 3.0, 0.0 @@ -13046,7 +13123,7 @@ "stack_spill_bytes": 0, "thread_occupancy": 100, "uniform_registers_used": 22, - "work_registers_used": 8 + "work_registers_used": 10 } } } @@ -13068,10 +13145,7 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "arith_total", - "arith_cvt", - "varying", - "texture" + "varying" ], "longest_path_cycles": [ 0.25, @@ -13079,7 +13153,7 @@ 0.25, 0.0625, 0.0, - 0.25, + 0.375, 0.25 ], "pipelines": [ @@ -13100,14 +13174,11 @@ 0.140625, 0.0625, 0.0, - 0.25, + 0.375, 0.0 ], "total_bound_pipelines": [ - "arith_total", - "arith_cvt", - "varying", - "texture" + "varying" ], "total_cycles": [ 0.25, @@ -13115,14 +13186,14 @@ 0.25, 0.0625, 0.0, - 0.25, + 0.375, 0.25 ] }, "stack_spill_bytes": 0, "thread_occupancy": 100, "uniform_registers_used": 4, - "work_registers_used": 7 + "work_registers_used": 8 } } } From fbe34a61db10244049fcda21f74e6fd3e1bfd41a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 17:37:13 -0400 Subject: [PATCH 203/211] Roll Skia from 100d0f858f02 to 981146e6305d (3 revisions) (#43866) https://skia.googlesource.com/skia.git/+log/100d0f858f02..981146e6305d 2023-07-20 jmbetancourt@google.com add typeface setting to SkottieSlide's slot manager interface 2023-07-20 brianosman@google.com Convert recently added GM to unit test 2023-07-20 jvanverth@google.com [graphite] Get Vulkan present working. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bb872e6467c1e..ddcde6793d93e 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '100d0f858f02ee74022352dc968333d3e0d93441', + 'skia_revision': '981146e6305dc5ff7726d5fa0f0df9a7b311cb32', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6cdbca737e386..ef7da6ab36f24 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 35e23894bae82e856c71c630f7104dde +Signature: f515ba2926afce76bd817381c9c7252e ==================================================================================================== LIBRARY: etc1 From 0392724b526941c022d21efee2447f770edb5ad6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Jul 2023 19:20:04 -0400 Subject: [PATCH 204/211] Roll Skia from 981146e6305d to 6f2b2e94ebbd (3 revisions) (#43871) https://skia.googlesource.com/skia.git/+log/981146e6305d..6f2b2e94ebbd 2023-07-20 aeubanks@google.com Fix newly warned -Wconstant-logical-operand 2023-07-20 johnstiles@google.com Add WGSL support for uniforms inside interface blocks. 2023-07-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from e1c3b16d5aa5 to 13599b120a68 (8 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC bdero@google.com,brianosman@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ddcde6793d93e..8139c4434e7bc 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '981146e6305dc5ff7726d5fa0f0df9a7b311cb32', + 'skia_revision': '6f2b2e94ebbd4a2a5c031ac06bcd3f2d203034a7', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ef7da6ab36f24..3e2a2b98b4885 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f515ba2926afce76bd817381c9c7252e +Signature: 0d07bb62e3dd3d4a1fc8fd0f3b886ed4 ==================================================================================================== LIBRARY: etc1 From 37b319eec7cffc8ca0eec6c2855ec4d3ca7550d7 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 20 Jul 2023 16:27:13 -0700 Subject: [PATCH 205/211] [Impeller] [Vulkan] Add reset command buffer bit to command pools. (#43867) Without this bit, we're holding it wrong. From the docs: > VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT allows any command buffer allocated from a pool to be individually reset to the initial state; either by calling vkResetCommandBuffer, or via the implicit reset when calling vkBeginCommandBuffer. If this flag is not set on a pool, then vkResetCommandBuffer must not be called for any command buffer allocated from that pool. This means our reset calls later are getting ignored. Fixes https://github.com/flutter/flutter/issues/131001 --- impeller/renderer/backend/vulkan/command_pool_vk.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/impeller/renderer/backend/vulkan/command_pool_vk.cc b/impeller/renderer/backend/vulkan/command_pool_vk.cc index 505305fa60a63..380623c1cdc88 100644 --- a/impeller/renderer/backend/vulkan/command_pool_vk.cc +++ b/impeller/renderer/backend/vulkan/command_pool_vk.cc @@ -72,7 +72,8 @@ CommandPoolVK::CommandPoolVK(const ContextVK* context) vk::CommandPoolCreateInfo pool_info; pool_info.queueFamilyIndex = context->GetGraphicsQueue()->GetIndex().family; - pool_info.flags = vk::CommandPoolCreateFlagBits::eTransient; + pool_info.flags = vk::CommandPoolCreateFlagBits::eTransient | + vk::CommandPoolCreateFlagBits::eResetCommandBuffer; auto pool = context->GetDevice().createCommandPoolUnique(pool_info); if (pool.result != vk::Result::eSuccess) { return; From 4b403f6e454676759c197e1d8ca32f3d332c8e45 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Tue, 1 Aug 2023 12:00:39 -0700 Subject: [PATCH 206/211] Merge with main --- impeller/entity/contents/clip_contents.cc | 1 - impeller/entity/contents/content_context.cc | 192 +++++++++--------- .../renderer/backend/gles/context_gles.cc | 1 - .../renderer/backend/gles/render_pass_gles.cc | 4 +- .../renderer/backend/metal/context_mtl.mm | 1 - .../backend/vulkan/capabilities_vk.cc | 6 - .../renderer/backend/vulkan/capabilities_vk.h | 3 - impeller/renderer/capabilities.cc | 17 -- impeller/renderer/capabilities.h | 5 - lib/web_ui/dev/test_platform.dart | 1 - 10 files changed, 97 insertions(+), 134 deletions(-) diff --git a/impeller/entity/contents/clip_contents.cc b/impeller/entity/contents/clip_contents.cc index dfcf083ca149f..20c2ab2ded837 100644 --- a/impeller/entity/contents/clip_contents.cc +++ b/impeller/entity/contents/clip_contents.cc @@ -203,7 +203,6 @@ bool ClipRestoreContents::Render(const ContentContext& renderer, VS::FrameInfo info; info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize()); - info.color = Color::SkyBlue(); VS::BindFrameInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(info)); pass.AddCommand(std::move(cmd)); diff --git a/impeller/entity/contents/content_context.cc b/impeller/entity/contents/content_context.cc index cdc64acd05d33..ac398a11c5a63 100644 --- a/impeller/entity/contents/content_context.cc +++ b/impeller/entity/contents/content_context.cc @@ -29,104 +29,102 @@ void ContentContextOptions::ApplyToPipelineDescriptor( desc.SetSampleCount(sample_count); - auto* color0_ref = desc.GetColorAttachmentDescriptor(0u); - if (color0_ref) { - ColorAttachmentDescriptor color0 = *color0_ref; - color0.format = color_attachment_pixel_format; - color0.alpha_blend_op = BlendOperation::kAdd; - color0.color_blend_op = BlendOperation::kAdd; - - switch (pipeline_blend) { - case BlendMode::kClear: - color0.dst_alpha_blend_factor = BlendFactor::kZero; - color0.dst_color_blend_factor = BlendFactor::kZero; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - case BlendMode::kSource: - color0.blending_enabled = false; - color0.dst_alpha_blend_factor = BlendFactor::kZero; - color0.dst_color_blend_factor = BlendFactor::kZero; - color0.src_alpha_blend_factor = BlendFactor::kOne; - color0.src_color_blend_factor = BlendFactor::kOne; - break; - case BlendMode::kDestination: - color0.dst_alpha_blend_factor = BlendFactor::kOne; - color0.dst_color_blend_factor = BlendFactor::kOne; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - case BlendMode::kSourceOver: - color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kOne; - color0.src_color_blend_factor = BlendFactor::kOne; - break; - case BlendMode::kDestinationOver: - color0.dst_alpha_blend_factor = BlendFactor::kOne; - color0.dst_color_blend_factor = BlendFactor::kOne; - color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - break; - case BlendMode::kSourceIn: - color0.dst_alpha_blend_factor = BlendFactor::kZero; - color0.dst_color_blend_factor = BlendFactor::kZero; - color0.src_alpha_blend_factor = BlendFactor::kDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kDestinationAlpha; - break; - case BlendMode::kDestinationIn: - color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - case BlendMode::kSourceOut: - color0.dst_alpha_blend_factor = BlendFactor::kZero; - color0.dst_color_blend_factor = BlendFactor::kZero; - color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - break; - case BlendMode::kDestinationOut: - color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - case BlendMode::kSourceATop: - color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kDestinationAlpha; - break; - case BlendMode::kDestinationATop: - color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - break; - case BlendMode::kXor: - color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; - color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; - break; - case BlendMode::kPlus: - color0.dst_alpha_blend_factor = BlendFactor::kOne; - color0.dst_color_blend_factor = BlendFactor::kOne; - color0.src_alpha_blend_factor = BlendFactor::kOne; - color0.src_color_blend_factor = BlendFactor::kOne; - break; - case BlendMode::kModulate: - color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; - color0.dst_color_blend_factor = BlendFactor::kSourceColor; - color0.src_alpha_blend_factor = BlendFactor::kZero; - color0.src_color_blend_factor = BlendFactor::kZero; - break; - default: - FML_UNREACHABLE(); - } - desc.SetColorAttachmentDescriptor(0u, color0); + ColorAttachmentDescriptor color0 = *desc.GetColorAttachmentDescriptor(0u); + color0.format = color_attachment_pixel_format; + color0.alpha_blend_op = BlendOperation::kAdd; + color0.color_blend_op = BlendOperation::kAdd; + + switch (pipeline_blend) { + case BlendMode::kClear: + color0.dst_alpha_blend_factor = BlendFactor::kZero; + color0.dst_color_blend_factor = BlendFactor::kZero; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + case BlendMode::kSource: + color0.blending_enabled = false; + color0.dst_alpha_blend_factor = BlendFactor::kZero; + color0.dst_color_blend_factor = BlendFactor::kZero; + color0.src_alpha_blend_factor = BlendFactor::kOne; + color0.src_color_blend_factor = BlendFactor::kOne; + break; + case BlendMode::kDestination: + color0.dst_alpha_blend_factor = BlendFactor::kOne; + color0.dst_color_blend_factor = BlendFactor::kOne; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + case BlendMode::kSourceOver: + color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kOne; + color0.src_color_blend_factor = BlendFactor::kOne; + break; + case BlendMode::kDestinationOver: + color0.dst_alpha_blend_factor = BlendFactor::kOne; + color0.dst_color_blend_factor = BlendFactor::kOne; + color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + break; + case BlendMode::kSourceIn: + color0.dst_alpha_blend_factor = BlendFactor::kZero; + color0.dst_color_blend_factor = BlendFactor::kZero; + color0.src_alpha_blend_factor = BlendFactor::kDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kDestinationAlpha; + break; + case BlendMode::kDestinationIn: + color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + case BlendMode::kSourceOut: + color0.dst_alpha_blend_factor = BlendFactor::kZero; + color0.dst_color_blend_factor = BlendFactor::kZero; + color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + break; + case BlendMode::kDestinationOut: + color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + case BlendMode::kSourceATop: + color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kDestinationAlpha; + break; + case BlendMode::kDestinationATop: + color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + break; + case BlendMode::kXor: + color0.dst_alpha_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kOneMinusSourceAlpha; + color0.src_alpha_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + color0.src_color_blend_factor = BlendFactor::kOneMinusDestinationAlpha; + break; + case BlendMode::kPlus: + color0.dst_alpha_blend_factor = BlendFactor::kOne; + color0.dst_color_blend_factor = BlendFactor::kOne; + color0.src_alpha_blend_factor = BlendFactor::kOne; + color0.src_color_blend_factor = BlendFactor::kOne; + break; + case BlendMode::kModulate: + color0.dst_alpha_blend_factor = BlendFactor::kSourceAlpha; + color0.dst_color_blend_factor = BlendFactor::kSourceColor; + color0.src_alpha_blend_factor = BlendFactor::kZero; + color0.src_color_blend_factor = BlendFactor::kZero; + break; + default: + FML_UNREACHABLE(); } + desc.SetColorAttachmentDescriptor(0u, color0); + if (!has_stencil_attachment) { desc.ClearStencilAttachments(); } diff --git a/impeller/renderer/backend/gles/context_gles.cc b/impeller/renderer/backend/gles/context_gles.cc index 8e81e8d444110..4d0530127cf1a 100644 --- a/impeller/renderer/backend/gles/context_gles.cc +++ b/impeller/renderer/backend/gles/context_gles.cc @@ -77,7 +77,6 @@ ContextGLES::ContextGLES(std::unique_ptr gl, .SetSupportsReadFromOnscreenTexture(false) .SetSupportsDecalTileMode(false) .SetSupportsMemorylessTextures(false) - .SetSupportsPipelinesWithNoColorAttachments(false) .Build(); } diff --git a/impeller/renderer/backend/gles/render_pass_gles.cc b/impeller/renderer/backend/gles/render_pass_gles.cc index 33da6a0ad2f1f..2cdadb4fc3cd7 100644 --- a/impeller/renderer/backend/gles/render_pass_gles.cc +++ b/impeller/renderer/backend/gles/render_pass_gles.cc @@ -257,8 +257,8 @@ struct RenderPassData { const auto* color_attachment = pipeline.GetDescriptor().GetLegacyCompatibleColorAttachment(); if (!color_attachment) { - VALIDATION_LOG << "The OpenGLES backend requires pipelines to have color " - "attachments."; + VALIDATION_LOG + << "Color attachment is too complicated for a legacy renderer."; return false; } diff --git a/impeller/renderer/backend/metal/context_mtl.mm b/impeller/renderer/backend/metal/context_mtl.mm index 3cbe6c7ca3dc5..566dd3a17e032 100644 --- a/impeller/renderer/backend/metal/context_mtl.mm +++ b/impeller/renderer/backend/metal/context_mtl.mm @@ -65,7 +65,6 @@ static bool DeviceSupportsComputeSubgroups(id device) { .SetSupportsReadFromResolve(true) .SetSupportsReadFromOnscreenTexture(true) .SetSupportsMemorylessTextures(true) - .SetSupportsPipelinesWithNoColorAttachments(true) .Build(); } diff --git a/impeller/renderer/backend/vulkan/capabilities_vk.cc b/impeller/renderer/backend/vulkan/capabilities_vk.cc index 78e6c0d0ff46f..33e3ca7ceb748 100644 --- a/impeller/renderer/backend/vulkan/capabilities_vk.cc +++ b/impeller/renderer/backend/vulkan/capabilities_vk.cc @@ -431,7 +431,6 @@ bool CapabilitiesVK::SupportsReadFromOnscreenTexture() const { return false; } -// |Capabilities| bool CapabilitiesVK::SupportsDecalTileMode() const { return true; } @@ -441,11 +440,6 @@ bool CapabilitiesVK::SupportsMemorylessTextures() const { return supports_memoryless_textures_; } -// |Capabilities| -bool CapabilitiesVK::SupportsPipelinesWithNoColorAttachments() const { - return true; -} - // |Capabilities| PixelFormat CapabilitiesVK::GetDefaultColorFormat() const { return color_format_; diff --git a/impeller/renderer/backend/vulkan/capabilities_vk.h b/impeller/renderer/backend/vulkan/capabilities_vk.h index 3a6af726aee1b..ffa96d46bc98e 100644 --- a/impeller/renderer/backend/vulkan/capabilities_vk.h +++ b/impeller/renderer/backend/vulkan/capabilities_vk.h @@ -93,9 +93,6 @@ class CapabilitiesVK final : public Capabilities, // |Capabilities| bool SupportsMemorylessTextures() const override; - // |Capabilities| - bool SupportsPipelinesWithNoColorAttachments() const override; - // |Capabilities| PixelFormat GetDefaultColorFormat() const override; diff --git a/impeller/renderer/capabilities.cc b/impeller/renderer/capabilities.cc index 680c64b5e4400..d0c9f62348066 100644 --- a/impeller/renderer/capabilities.cc +++ b/impeller/renderer/capabilities.cc @@ -76,16 +76,10 @@ class StandardCapabilities final : public Capabilities { return default_stencil_format_; } - // |Capabilities| bool SupportsMemorylessTextures() const override { return supports_memoryless_textures_; } - // |Capabilities| - bool SupportsPipelinesWithNoColorAttachments() const override { - return supports_pipelines_with_no_color_attachments_; - } - private: StandardCapabilities(bool has_threading_restrictions, bool supports_offscreen_msaa, @@ -99,7 +93,6 @@ class StandardCapabilities final : public Capabilities { bool supports_read_from_resolve, bool supports_decal_tile_mode, bool supports_memoryless_textures, - bool supports_pipelines_with_no_color_attachments, PixelFormat default_color_format, PixelFormat default_stencil_format) : has_threading_restrictions_(has_threading_restrictions), @@ -115,8 +108,6 @@ class StandardCapabilities final : public Capabilities { supports_read_from_resolve_(supports_read_from_resolve), supports_decal_tile_mode_(supports_decal_tile_mode), supports_memoryless_textures_(supports_memoryless_textures), - supports_pipelines_with_no_color_attachments_( - supports_pipelines_with_no_color_attachments), default_color_format_(default_color_format), default_stencil_format_(default_stencil_format) {} @@ -134,7 +125,6 @@ class StandardCapabilities final : public Capabilities { bool supports_read_from_resolve_ = false; bool supports_decal_tile_mode_ = false; bool supports_memoryless_textures_ = false; - bool supports_pipelines_with_no_color_attachments_ = false; PixelFormat default_color_format_ = PixelFormat::kUnknown; PixelFormat default_stencil_format_ = PixelFormat::kUnknown; @@ -225,12 +215,6 @@ CapabilitiesBuilder& CapabilitiesBuilder::SetSupportsMemorylessTextures( return *this; } -CapabilitiesBuilder& -CapabilitiesBuilder::SetSupportsPipelinesWithNoColorAttachments(bool value) { - supports_pipelines_with_no_color_attachments_ = value; - return *this; -} - std::unique_ptr CapabilitiesBuilder::Build() { return std::unique_ptr(new StandardCapabilities( // has_threading_restrictions_, // @@ -245,7 +229,6 @@ std::unique_ptr CapabilitiesBuilder::Build() { supports_read_from_resolve_, // supports_decal_tile_mode_, // supports_memoryless_textures_, // - supports_pipelines_with_no_color_attachments_, // default_color_format_.value_or(PixelFormat::kUnknown), // default_stencil_format_.value_or(PixelFormat::kUnknown) // )); diff --git a/impeller/renderer/capabilities.h b/impeller/renderer/capabilities.h index c865a84e924c0..87a7f9df08892 100644 --- a/impeller/renderer/capabilities.h +++ b/impeller/renderer/capabilities.h @@ -39,8 +39,6 @@ class Capabilities { virtual bool SupportsMemorylessTextures() const = 0; - virtual bool SupportsPipelinesWithNoColorAttachments() const = 0; - virtual PixelFormat GetDefaultColorFormat() const = 0; virtual PixelFormat GetDefaultStencilFormat() const = 0; @@ -85,8 +83,6 @@ class CapabilitiesBuilder { CapabilitiesBuilder& SetSupportsMemorylessTextures(bool value); - CapabilitiesBuilder& SetSupportsPipelinesWithNoColorAttachments(bool value); - std::unique_ptr Build(); private: @@ -102,7 +98,6 @@ class CapabilitiesBuilder { bool supports_read_from_resolve_ = false; bool supports_decal_tile_mode_ = false; bool supports_memoryless_textures_ = false; - bool supports_pipelines_with_no_color_attachments_ = false; std::optional default_color_format_ = std::nullopt; std::optional default_stencil_format_ = std::nullopt; diff --git a/lib/web_ui/dev/test_platform.dart b/lib/web_ui/dev/test_platform.dart index 6fa967b4e4816..e95c32fb41ed5 100644 --- a/lib/web_ui/dev/test_platform.dart +++ b/lib/web_ui/dev/test_platform.dart @@ -547,7 +547,6 @@ class BrowserPlatform extends PlatformPlugin { ${htmlEscape.convert(test)} Test