Roll Engine from b75aaa34f16d to 80c04d70c0d6 (435 revisions) (#102704)
Roll Engine from b75aaa34f16d to 80c04d70c0d6 (435 revisions) (#102704)

* 28af36b9d Merge entity renderer impl into the entity renderer.

* 08f00cd5e Move entity shaders to their own directory.

* e95252f06 Shorten names of the render target attachment descriptors.

* b5ed864d7 Fixup names of pipeline descriptors.

* 531162ff5 Minor fixups to pipeline creation.

* a09363684 Make pipelines store pipeline descriptors.

* 612b54fd7 Start consolidating content rendering.

* 27473322e Separate save layer calls into a canvas pass.

* 97455db0f Start wiring up the entity playground.

* 778fc113b Allow shader libraries to look at multiple shader dylibs.

* 5405b9a6f Implement texture mapping.

* 866045d5f WIP on stroke rendering.

* d35f10ab1 Insert additional padding at the end of the struct if the size of the struct does not satisfy the alignment requirements of all its members.

* 41ed619fc Fix struct padding calculations.

* ac10b798e Rendering of continuous strokes.

* ede764556 Cleanup entity API.

* 9ce9a81d5 WIP Add test for clip rendering.

* 05705810a Add support for typed commands.

* 9c88b09aa Give the default render target a stencil buffer.

* 60c3b2191 Implement stencil-only clips.

* 65ffd0482 Rework canvas passes in prep for subpasses.

* 38d4abac5 Renderer components no longer need a surface reference to function.

* 17d301b96 WIP on creating utils for creating offscreen render targets.

* 935931173 Fix bug in texture usage mask.

* 3f417887c Setup aiks for canvas subpasses.

* ab16b0bc8 Setup canvas pass hierarchies.

* 3a8fb57fc Canvas subpasses rendering into their own command buffers.

* 398b74fac Work towards making canvas subpasses configure postprocessing effects.

* bb633cade Fix alpha writes while rendering to texture.

* f9a6a2cb1 Fixup ortho calculations and add ostream printers for geometry utils.

* 18f8e729b Setup a framework to collapse passes.

* d00efdd5f Move entity pass management to the entity framework.

* ead8058c9 Setup a paint pass delgate.

* ed8b78a96 Allow entity passes to be elided based on their contents.

* 026dcd191 Turn on full-screen 4xMSAA by default and additional render target validations.

* 603b91575 Add render pass and pipeline sample count validation.

* 30f28f161 All creation of pipeline variants from a pipeline.

* 2b7848053 Allow for the on-demand creation and caching of pipeline variants from the prototype.

* 723ca3b97 Add more validation logs instead of FML logs.

* 6d871081a Implement Canvas::Skew.

* 18399a5ff Implement Canvas::SaveLayer with bounds.

* 4234b343d Minor: Add Canvas::Transform.

* 8e90d388d Rect union and intersection.

* 4417fa637 Don't let subpass coverage exceed entity coverage.

* a63c04785 Remove unused and confusing API in TRect.

* 20d22fd3e Add macOS availability checks.

* 05e9f893a Add missing availability check for macOS 10.12.

* cb547949c Fix broken test.

* e3d435755 Support non-uniform rounding radii.

* 10487e3c1 Stub out a display list dispatcher.

* f83a0211a Support path fill types.

* 66096b5ba Add support for path composition in path builder.

* d3626cd1f Implement conversion SkPath to Impeller paths.

* 98c18b3e1 Import the archivist framework.

* 147e64fbd Update translation units for style guide.

* 8d7d8e653 Cleanup archive structure.

* 89589cc3d Separate archive_location into its own TU.

* 547fc005e Clearer names for primary keys.

* 4a6e2d07f Add uncommitted patches from a previous change.

* 0c595a929 More use of optionals in archivist.

* 52891357c Make primary keys optional.

* 7b3ab4178 Minor: Rename primary key variable name.

* 188890c35 Support user readable table names.

* 94b9bfd7c Add error message for incorrect member lookup.

* 95386ed3f Remove superfluous auto_key from ArchiveDef.

* bf24ff925 Cleanup macros in archive statement.

* 85b8a0093 Remove remaining C-Style casts.

* 4ca5af44c Fix temporary database file deletion.

* 84eee265a Fix iOS compilation issues.

* a104fa53d Update GN rules for Flutter updates.

* a404064ac Minor: Rename the Impeller dispatcher to be something sane and prep for sidecar wireup.

* 57a0728c1 Rework the confusingly named renderer subsystem instances.

* db3c4a11d Make the Metal drawable wrapping routine from the playground a utility.

* 7566d670c Minor: Change the names of the intermediates for the wrapped render target.

* 0016e4808 Allow resizing the playground.

* 64e3b29ee Holy size savings Batman!

* 3ac38d8b1 Forward targets specification to the code generator in impellerc.

* 0b63e2cc2 Shader data can now be compiled into the binary.

* 86c91dc62 Fix pipeline library issue related to not tracking pending futures.

* 687f18991 Don't waste space on an unnecessary depth buffer.

* 8748c7687 Setup default pixel formats.

* f282f414b Remove support for the weird 5 byte pixel format.

* 7e5364a4d Minor: Account for macro namespacing.

* c66b7fb34 IOS macros have not been namespaced yet.

* f70087318 Gate the minimum iOS deployment versions in the generated shaders.

* 819b0336f Cross reference issues and add additional tracing.

* 169abed1c Add a README.

* c251e079a Fixup minor Markdown formatting issues in the README.

* 6d520d234 Add an image overview of the shader compilation pipeline.

* a449707c0 Link to the shader pipeline from the README.

* 844d40063 Enable playgrounds in all tests and fix default sample counts.

* 9c536958c Update tests to account for sample count defaults.

* 14bf82761 Back out changes to the Impeller dispatcher stub that depend on WIP interface changes. (flutter/engine#3)

* 2a6bb6eb3 create scorecards-analysis.yml (flutter/engine#4)

* fec03558c Use -M0 instead of -frecord-sources (flutter/engine#5)

* e982526e8 Compensate for change to saveLayer (flutter/engine#6)

* 14ec50ada Adds a GN flag for playgrounds (flutter/engine#7)

* 3d422b2f7 Wrap all MD files at 80 cols, minor cleanup of headers/indenting (flutter/engine#8)

* ca3433db3 Fix Rect::Compare bugs (flutter/engine#10)

* e768f4d0a adopt new DlColorFilter objects (flutter/engine#12)

* 88f4c24ac Support 16bit index buffers (flutter/engine#11)

* dde655fdd Add viewport and scissor support (flutter/engine#9)

* 4220ef372 Add cull mode to command (flutter/engine#13)

* 9b2cbc13c Support nested clips & clip state restoration (flutter/engine#14)

* a2f755518 Fix bug introduced in a476b92 which broke a bunch of tests (flutter/engine#15)

* e7f90736b changes for new DlMaskFilter objects (flutter/engine#17)

* ba1ecb66c Add baseVertex (flutter/engine#16)

* 542b8c4c3 Fix index size check to respect 16 bit buffers (flutter/engine#19)

* 26090e475 Add mixed type specializations on algebraic ops in TPoint (flutter/engine#21)

* cb9997ab9 Respect TextureContents/Canvas::DrawImageRect source rect (flutter/engine#22)

* 9ecbb76c5 Add an ImGui backend targetting Impeller to the playground (flutter/engine#20)

* 604a93f96 Fix prod build (flutter/engine#23)

* 6cd7a4553 Bad cubic tests (flutter/engine#24)

* e94acaae6 Match skia's path param ordering (flutter/engine#25)

* b26c6ac38 Do not include the leading point for cubic polylines (flutter/engine#29)

* bafa73b54 Add assignment operators to point (flutter/engine#26)

* 2373da89f Add entity playground callback (flutter/engine#27)

* 2dceced0e adopt new DlAttributeType enum naming (flutter/engine#30)

* f41c0a93e Support subcontours in strokes, lay groundwork for fills (flutter/engine#31)

* 4be3053ec Add immediate mode manipulator widget macros for the playground (flutter/engine#28)

* f0a7b4e90 Fix MoveTo for fills (flutter/engine#32)

* df2485c90 Add dot and cross product to Point (flutter/engine#33)

* 3cff1a93b Remove duplicate points between connected components when generating polylines (flutter/engine#34)

* 451f93e83 Handle all corner cases for stroke geometry, add bevel join & cap/join enums (flutter/engine#35)

* 0dae5ada0 Add `//impeller/typographer`. (flutter/engine#36)

* e1a9ae853 Remove schedule runs of scorecards. (flutter/engine#38)

* 8d79ce674 Bump ossf/scorecard-action from 1.0.3 to 1.0.4 (flutter/engine#40)

* 137fa4816 Fix license to make the license script happy (flutter/engine#37)

* 91ec4c207 Bump github/codeql-action from 1.0.26 to 1.1.3 (flutter/engine#39)

* 62135be77 Remove break corner cases, simplify strokes, and generate closed path joins (flutter/engine#41)

* 9f9c557ec Account for glyph extents in the atlas. (flutter/engine#42)

* 4e323c6fd Relay text color from Paint. (flutter/engine#43)

* c11f4083d Account for updated macro name in //flutter/fml/build_config.h (flutter/engine#44)

* a781e2f9a Setup join/cap proc (flutter/engine#45)

* 555fabaa0 Avoid depending on STB in //flutter/impeller/image. (flutter/engine#47)

* d84a831d8 Add square cap (flutter/engine#48)

* 75e83ff3e Point: Add reflect and make scalar ops more flexible (flutter/engine#51)

* d9e792783 Add miter join (flutter/engine#49)

* 905895695 Add round caps and joins (flutter/engine#52)

* c81fbbdac Move Contents classes into separate translation units (flutter/engine#53)

* 9d6048ab0 Expose C API for tessellator, move to own subdir (flutter/engine#18)

* 2a1b56096 Fix ScalarNearlyEqual test (flutter/engine#56)

* 845c3bc07 Add color premultiply/unpremultiply (flutter/engine#57)

* 6f9fa60b0 Add pipeline blend modes & demo (flutter/engine#55)

* 0936dfaee Bump github/codeql-action from 1.1.3 to 1.1.4 (flutter/engine#58)

* 6da61e7fd Remove FML dependency on geometry, tessellator (flutter/engine#59)

* b14fb96b3 Make Path::Polyline::GetContourPointBounds safe for OOB (flutter/engine#60)

* 24d7083c9 Add LICENSE file. (flutter/engine#61)

* 841bb991b Move impeller::Comparable to //impeller/base. (flutter/engine#62)

* 74dff11d5 Add a script that checks that all source files have a valid license block. (flutter/engine#63)

* ec27727a2 Correct polyline bounds test (flutter/engine#64)

* 0084668ec Bump actions/upload-artifact from 2.3.1 to 3 (flutter/engine#54)

* b816f8f4f Bump actions/checkout from 2.4.0 to 3 (flutter/engine#50)

* e5fc54887 [tessellator]Expose and document smoothing approximation via the C/Dart API. Minor refactor of tessellator to supply fill type to method rather than to object. (flutter/engine#65)

* 24e249a4f Fix top-level build group to not include the compiler and fixup headers. (flutter/engine#66)

* 9c3cbf855 Hack to prevent back-to-back playground tests from hanging (flutter/engine#68)

* 1828c4c89 Correct default blend mode, fix solid stroke shader to respect premultiplied source colors (flutter/engine#69)

* b3cbf05b8 Chainable texture filters (flutter/engine#67)

* f3a6b3e1b Document GN rules and make targets that cannot be built on the platform be no-ops. (flutter/engine#70)

* 597c10eb1 Fix diagnostic on iOS simulators. (flutter/engine#71)

* e46345db6 Only depend on FML for tracing when building executables. (flutter/engine#72)

* d0c59286c Fix loop-range-construct warnings added in newer versions of Clang. (flutter/engine#75)

* b97e965b7 Add remaining additive blends (flutter/engine#76)

* ec1dd96b0 Fix issues with constexpr correctness. (flutter/engine#77)

* 47cb97c35 Add case necessary on 32-bit arm builds. (flutter/engine#79)

* f5db75a15 Use new DlColorSource objects (flutter/engine#73)

* 75a9853fe update the linear gradient code to the new accessor names (flutter/engine#80)

* e381974b1 Impelement DisplayListDispatcher::transformReset. (flutter/engine#82)

* 8784ff4be Don't use `Add[Thing]` operations when emulating Skia path components (flutter/engine#86)

* 9e33c6fc1 Transform clips by the entity's transform (flutter/engine#87)

* d916e2c7c Add blend filter support for advanced blends (flutter/engine#81)

* 396ef7d0a Bump github/codeql-action from 1.1.4 to 1.1.5 (flutter/engine#83)

* 503dff6b0 Add directional + 2D gaussian blur (flutter/engine#84)

* 6e778862f Add ClearContents to apply specified contents to the entire render target. (flutter/engine#88)

* 688321533 Add blend mode setting to Entity, Aiks paint, and the dispatcher (flutter/engine#89)

* 1d6dc1e68 Forward blend mode from the dispatchers drawColor call. (flutter/engine#90)

* 5b1b9dfbf Apply Aiks transforms in the canvas space, not world space (flutter/engine#91)

* b32a65fe9 Use new DlBlendMode object (flutter/engine#78)

* 47ff8dbed switch dispatcher methods to new DlImageFilter objects (flutter/engine#92)

* 3235eac2a Separate filters into different TUs (flutter/engine#93)

* f2d23512b Implement impeller::DisplayListDispatcher::drawTextBlob. (flutter/engine#94)

* a6b0939fc Add support for instanced rendering and shader storage buffers. (flutter/engine#95)

* 47e9b0853 Use 8bpp glyph atlases. (flutter/engine#96)

* 86c5ea4f3 Draw all glyphs in a text run using a single draw call. (flutter/engine#97)

* 32b5a8dd7 Batch all draw calls in the entire text frame. (flutter/engine#100)

* 39f4ebd75 Make the filter DAG render all textures at the correct resolution (flutter/engine#99)

* 0aaa84e5c Render glyphs at the correct resolution with respect to the current transform (flutter/engine#101)

* eb7b7d187 Add difference clipping (flutter/engine#104)

* 6f02b8943 Wire up stroke cap/join/miter limit display list ops (flutter/engine#105)

* cbd14baf1 Premultiply gradient colors (flutter/engine#106)

* 9886da891 Use display list images. (flutter/engine#102)

* 82a340332 Make filter inputs lazy and sharable (flutter/engine#103)

* 69334fd7b Implement drawArc (flutter/engine#109)

* 6de2c9c56 support new DlVertices object in dispatcher (flutter/engine#108)

* 31812de08 Bump github/codeql-action from 1.1.5 to 2.1.6 (flutter/engine#110)

* 78eb5d67f Add blur styles to gaussian blur (flutter/engine#107)

* c4f1a592d Fix solid stroke contour switching + round cap smoothing, and add transparent path overdraw example (flutter/engine#112)

* f2bf47d25 Fix SaveLayer/entity subpass behavioral problems (flutter/engine#111)

* 2dd379708 Wire up enhanced command buffer error reporting. (flutter/engine#113)

* 6e8368c47 Remove extra point from DrawRect; skip over duplicate contour points when generating polylines (flutter/engine#114)

* 93c59198b Explicitly wait for subpass buffers to be scheduled. (flutter/engine#115)

* f2e297c1f Bump github/codeql-action from 2.1.6 to 2.1.7 (flutter/engine#116)

* e09b0ed12 Add static thread safety analysis ready synchronization primitives. (flutter/engine#117)

* 8075d383f Standardize around "coverage" terminology; make coverage optional everywhere (flutter/engine#118)

* 685ae23ad Add explicit scaling methods for Point/Vector2 (flutter/engine#119)

* af922f9d4 Ignore the stencil in the imgui pipeline (flutter/engine#120)

* 4248b5d2a Use the stencil buffer to avoid overdraw when rendering non-opaque solid strokes. (flutter/engine#121)

* 93035a4cd Remove base.h from base/BUILD (flutter/engine#122)

* 20148b270 Standardize around blur sigma<->radius conversion factor (flutter/engine#123)

* 533b86d3d No newline in depfile output, which seems to confuse ninja (flutter/engine#125)

* 0ed6d4c4a Fix Path::GetBoundingBox crash for cubics with no local min/max (flutter/engine#126)

* 1a055b08a Add solid stroke coverage override (flutter/engine#127)

* 3bc1f3340 Allow building targets that do not create metal shaders on all platforms. (flutter/engine#133)

* 43a750813 Move rendering TUs behind own flag (flutter/engine#134)

* 3c9f0e147 Build fixes for roll (flutter/engine#135)

* f6508c108 Remove extra premultiply from solid stroke/fill (flutter/engine#124)

* 999978fa9 Fix enum typedef for older mac SDKs (flutter/engine#136)

* 9c4018f10 Filters: Replace Snapshot position with a full transform (flutter/engine#130)

* ca3cd7f77 Move static methods to anonymous namespace (flutter/engine#137)

* f1c1b68c5 Adds --sksl target to impellerc (flutter/engine#131)

* fa68eb6eb Bump github/codeql-action from 2.1.7 to 2.1.8 (flutter/engine#128)

* a08cb8b4f Border mask blur (flutter/engine#132)

* a4599bf6f Add impellerc options to compile OpenGL Desktop and ES variant shaders. (flutter/engine#139)

* 8b881c634 Compute text coverage; use blend mode in savelayer; conservative pass collapse/elision behavior (flutter/engine#129)

* 3b1dfc4a4 Add an OpenGL ES stub and parameterize all playgrounds on rendering backend. (flutter/engine#141)

* 4d5031540 Fix subpass ordering (flutter/engine#143)

* 80bb5f953 Windows (flutter/engine#144)

* 79f2e86a4 Compile and package all shaders for the OpenGL ES backend. (flutter/engine#146)

* f86c9b72a Implement mask blur in display list dispatcher (flutter/engine#142)

* 01e81ef7e Fix Mac compilation issue. (flutter/engine#147)

* 2b48a800e Fix up build/test issues when building on or off of mac (flutter/engine#148)

* 68d88aeb4 Filters: Add local transforms (flutter/engine#140)

* df261f9d9 Fix minor mask blur issues (flutter/engine#149)

* c5474f6f0 Untie paths from entities (flutter/engine#145)

* 69b676c49 Bump actions/checkout from 3.0.0 to 3.0.2 (flutter/engine#151)

* 8679fe78e Remove dependency on Dart, add crash handler to impellerc (flutter/engine#150)

* 56056357f Use New DlPathEffect Object (flutter/engine#98)

* cd1a5a355 implement drawDisplayList in impeller dispatcher (flutter/engine#153)

* 5ec32d7ed Revert "Use New DlPathEffect Object (#98)" (flutter/engine#154)

* da9cfb3ca Separate FilterInput variants into their own TUs (flutter/engine#152)

* 3ebfe9e05 Another coverage fix for border mask blur (flutter/engine#158)

* 86fdc7912 Make it an error for a stage input to take more than one slot. (flutter/engine#161)

* 120c0b631 Avoid instancing/SSBOs for text to support GLES (flutter/engine#160)

* 4c75fe6e3 Set path for linear gradient contents; don't fail renders for failed tessellations (flutter/engine#162)

* dd4d7050e Check if sub_command_buffer is null before setting label (flutter/engine#163)

* d5f978195 format

* e676fd7a8 Missing files

* 89a30a729 temporarily increase clang_tidy test limits

* 7f0e95b1e Delete DartIsolateTest::ValidLoadingUnitSucceeds (flutter/engine#32970)

* 80c04d70c Delete AppLifecycleTests testDismissedFlutterViewControllerNotRespondingToApplicationLifecycle (flutter/engine#32971)
tvolkert/flutter,flutter/flutter,flutter/flutter,tvolkert/flutter,tvolkert/flutter,flutter/flutter,flutter/flutter,tvolkert/flutter,tvolkert/flutter,flutter/flutter,tvolkert/flutter,tvolkert/flutter,flutter/flutter,tvolkert/flutter,tvolkert/flutter,flutter/flutter,tvolkert/flutter,flutter/flutter,flutter/flutter,flutter/flutter