22469 Commits

Author SHA1 Message Date
Brandon DeRosier
a6134bf6ba Implement mask blur in display list dispatcher (flutter/engine#142) 2022-04-27 15:57:33 -07:00
Chinmay Garde
bbe5ef72cb Compile and package all shaders for the OpenGL ES backend. (flutter/engine#146)
* Dries up GN rules for Metal and OpenGL ES shader compilation and embedding in
  a target binary.
* Adds support for shader compile time macro definitions. This is so that
  workarounds for specific shader backends can be implemented. In the case of
  this patch, there are temporary OpenGLES workaround for users of instancing
  and SSBOs. These will be removed when I rework glyph rendering to not use
  these features that are missing in legacy targets.
* Since there is no concept of an OpenGLES shader library akin to a `.metallib`,
  adds a target called `blobcat` that concatenates shader blobs into single blob
  that can be embedded into a target binary. No parsing or data copying is
  necessary.
* `imgui_raster.vert` has been rewritten to work around the absence of unsigned
  integer types in legacy backends.
2022-04-27 15:57:33 -07:00
Dan Field
b433a73aa4 Windows (flutter/engine#144)
Speculative fixes for Windows build
2022-04-27 15:57:33 -07:00
Brandon DeRosier
855ef1ba64 Fix subpass ordering (flutter/engine#143) 2022-04-27 15:57:33 -07:00
Chinmay Garde
12d6f25901 Add an OpenGL ES stub and parameterize all playgrounds on rendering backend. (flutter/engine#141)
As we add more rendering backends, adding a new enum value to a single macro
`INSTANTIATE_PLAYGROUND_SUITE` in `playground.h` will create a new test variant
in any suite that uses playgrounds.

The invocations will look like the following:

```
[ RUN      ] Play/TypographerTest.CanCreateGlyphAtlas/Metal
[       OK ] Play/TypographerTest.CanCreateGlyphAtlas/Metal (210 ms)
[ RUN      ] Play/TypographerTest.CanCreateGlyphAtlas/OpenGLES
[       OK ] Play/TypographerTest.CanCreateGlyphAtlas/OpenGLES (xxx ms)
```

If you want to test just one backend, you may add a filter like so
`--gtest_filter="*/Metal"`

Right now, I have not added a the OpenGLES variant to the default test suite
instantiation since there are so many failures (that is just a stub ATM). But,
if the need arises to skip specific tests based on the backend in use (we won't
support instancing in OpenGLES for example), the backend for the playground may
be queried before deciding to GTEST_SKIP the invocation.

One additional change in the patch that will be reworked soon is the Metal
specificity of the source set generated after reflection. This will be made
agnostic in the coming few patches. Right now, these headers are in the `mtl`
folder.
2022-04-27 15:57:33 -07:00
Brandon DeRosier
42ffb00546 Compute text coverage; use blend mode in savelayer; conservative pass collapse/elision behavior (flutter/engine#129) 2022-04-27 15:57:33 -07:00
Chinmay Garde
621719cab6 Add impellerc options to compile OpenGL Desktop and ES variant shaders. (flutter/engine#139)
Also parameterize all unit-tests so all backends are automatically tested.
2022-04-27 15:57:33 -07:00
Brandon DeRosier
f4eec56a80 Border mask blur (flutter/engine#132) 2022-04-27 15:57:33 -07:00
dependabot[bot]
a8c598f9c3 Bump github/codeql-action from 2.1.7 to 2.1.8 (flutter/engine#128)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.7 to 2.1.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](0182a2c78c...1ed1437484)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-27 15:57:33 -07:00
Zachary Anderson
e47053d2ce Adds --sksl target to impellerc (flutter/engine#131) 2022-04-27 15:57:33 -07:00
Dan Field
fc2d6fb436 Move static methods to anonymous namespace (flutter/engine#137) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
5a342e838d Filters: Replace Snapshot position with a full transform (flutter/engine#130) 2022-04-27 15:57:33 -07:00
Dan Field
75634a6ab9 Fix enum typedef for older mac SDKs (flutter/engine#136) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
313f17df31 Remove extra premultiply from solid stroke/fill (flutter/engine#124) 2022-04-27 15:57:33 -07:00
Dan Field
3ff34b1e73 Build fixes for roll (flutter/engine#135)
* Add define for rendering

* Fix metal enum for older SDKs, add missing dep
2022-04-27 15:57:33 -07:00
Dan Field
7a8c2a90e7 Move rendering TUs behind own flag (flutter/engine#134) 2022-04-27 15:57:33 -07:00
Dan Field
3ca787ddae Allow building targets that do not create metal shaders on all platforms. (flutter/engine#133) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
b09c8eb436 Add solid stroke coverage override (flutter/engine#127) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
2e41cfc501 Fix Path::GetBoundingBox crash for cubics with no local min/max (flutter/engine#126) 2022-04-27 15:57:33 -07:00
Dan Field
f48865ec86 No newline in depfile output, which seems to confuse ninja (flutter/engine#125) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
da54caee10 Standardize around blur sigma<->radius conversion factor (flutter/engine#123) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
7ba73f2b09 Remove base.h from base/BUILD (flutter/engine#122) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
bc4e15c4cb Use the stencil buffer to avoid overdraw when rendering non-opaque solid strokes. (flutter/engine#121)
Fixes https://github.com/flutter/flutter/issues/101330
2022-04-27 15:57:33 -07:00
Brandon DeRosier
15efb79d10 Ignore the stencil in the imgui pipeline (flutter/engine#120) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
69fb1c897e Add explicit scaling methods for Point/Vector2 (flutter/engine#119) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
fa740cad04 Standardize around "coverage" terminology; make coverage optional everywhere (flutter/engine#118) 2022-04-27 15:57:33 -07:00
Chinmay Garde
3c2ea47abf Add static thread safety analysis ready synchronization primitives. (flutter/engine#117) 2022-04-27 15:57:33 -07:00
dependabot[bot]
012413f360 Bump github/codeql-action from 2.1.6 to 2.1.7 (flutter/engine#116)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.6 to 2.1.7.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](28eead2408...0182a2c78c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-27 15:57:33 -07:00
Chinmay Garde
90e5befb67 Explicitly wait for subpass buffers to be scheduled. (flutter/engine#115)
This is pending the addition of explicit synchronization primitives to
Impeller. It is unclear what the addition of such primitives would mean
to the future OpenGL ES backend.
2022-04-27 15:57:33 -07:00
Brandon DeRosier
025b9b2e24 Remove extra point from DrawRect; skip over duplicate contour points when generating polylines (flutter/engine#114) 2022-04-27 15:57:33 -07:00
Chinmay Garde
f42fc14df6 Wire up enhanced command buffer error reporting. (flutter/engine#113) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
7b630497e3 Fix SaveLayer/entity subpass behavioral problems (flutter/engine#111) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
b2abb9a511 Fix solid stroke contour switching + round cap smoothing, and add transparent path overdraw example (flutter/engine#112) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
95dfbcf504 Add blur styles to gaussian blur (flutter/engine#107) 2022-04-27 15:57:33 -07:00
dependabot[bot]
bb6e006787 Bump github/codeql-action from 1.1.5 to 2.1.6 (flutter/engine#110)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1.1.5 to 2.1.6.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](8834766498...28eead2408)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-27 15:57:33 -07:00
Jim Graham
7aa83ce681 support new DlVertices object in dispatcher (flutter/engine#108) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
a0e34818a9 Implement drawArc (flutter/engine#109) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
e1bda0b4f9 Make filter inputs lazy and sharable (flutter/engine#103) 2022-04-27 15:57:33 -07:00
Chinmay Garde
bc8eb90c27 Use display list images. (flutter/engine#102) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
ff91b522dd Premultiply gradient colors (flutter/engine#106) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
83f102353c Wire up stroke cap/join/miter limit display list ops (flutter/engine#105) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
8e42425e96 Add difference clipping (flutter/engine#104) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
458ab4ebb2 Render glyphs at the correct resolution with respect to the current transform (flutter/engine#101) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
951cb1c1ee Make the filter DAG render all textures at the correct resolution (flutter/engine#99) 2022-04-27 15:57:33 -07:00
Chinmay Garde
9e10ab5bc4 Batch all draw calls in the entire text frame. (flutter/engine#100)
Also updates comments that were first written when this wasn't batched.

For some reason, in the original implementation, I had assumed that
styling information was not already in a uniform.
2022-04-27 15:57:33 -07:00
Chinmay Garde
4665aa10f7 Draw all glyphs in a text run using a single draw call. (flutter/engine#97) 2022-04-27 15:57:33 -07:00
Chinmay Garde
0a5450f01d Use 8bpp glyph atlases. (flutter/engine#96)
Also remove the debugging goop as that's only relevant if you can
visualize the background.
2022-04-27 15:57:33 -07:00
Chinmay Garde
3b7aee66ef Add support for instanced rendering and shader storage buffers. (flutter/engine#95) 2022-04-27 15:57:33 -07:00
Chinmay Garde
a6e0e51d75 Implement impeller::DisplayListDispatcher::drawTextBlob. (flutter/engine#94) 2022-04-27 15:57:33 -07:00
Brandon DeRosier
f8ac111920 Separate filters into different TUs (flutter/engine#93) 2022-04-27 15:57:33 -07:00