Fixes https://github.com/flutter/flutter/issues/165740
if a user declares interleaved `float` and `sampler2D` uniforms, then we
can screw up the binding order.
This only manifests on platforms where we don't combine all float/scalar
uniform values into a single struct. We should probably start doing that
for metal, but refactoring there is out of scope for this patch.
I enabled a large number of skipped tests we probably should have turned
on by now. oops.
---------
Co-authored-by: gaaclarke <30870216+gaaclarke@users.noreply.github.com>
Changes required for this roll:
* addition of LLVM libc (which is now a dependency of libcxx)
* updates the to license script
* patching the verify_exported check to allow some symbols added by
libcxx
* annotations for clang-tidy warnings
This test was not running previously on the Linux builder, but it
started running again when ASAN was disabled due to the Ubuntu 24
upgrade on LUCI. The test is not currently functioning as intended and
needs to be disabled until the Ubuntu upgrade is stable.
See https://github.com/flutter/flutter/pull/165661
The 2 enum classes `impeller::BlendMode` and `flutter::DlBlendMode` were
essentially identical so they were merged.
The names were consolidated to the ui.BlendMode/DlBlendMode versions and
the implementation is shared from Impeller to DisplayList via a `using`
directive. No conversion is needed any more to describe blend modes
between DisplayList and Impeller.
- Handle textures that require a YUV import but aren't an undefined
format.
- INCOMPLETE is actually a success case for the pipeline cache. CERTAIN
drivers ALWAYS return incomplete, even when they wrote all the data.
Probably an off by one or something like that...
- Ensures Optional AndroidExtensions are enabled
- Only creates a YUV conversion if necessary
Now that skia can no longer be used on both iOS devices and Simulators,
we can switch the iOS engine to the "slimpeller" variant which removes
some (not all!) of the Skia dependencies. This should reduce binary size
and build time.
I also did some cleanups as some tests we're still opting into Skia
behaviors (though not actually running skia) and we now flag these as
errors.
Fixes https://github.com/flutter/flutter/issues/163302
Framework widgets check for ImageFIlter.== to determine whether to mark
themselves dirty. The filter obejct needs to delegate its equality to
the underlying native filter so that uniform values are considered.
Fixes https://github.com/flutter/flutter/issues/163315
Fixes https://github.com/flutter/flutter/issues/163521
Fixes https://github.com/flutter/flutter/issues/142641
OpenGL has an inverted coordinate system (bottom left is zero) compared
to Metal/Vulkan (top left is zero). We handle this by rendering things
upside down on OpenGL. Unfortunately this can leak out of the renderer
via readback (toImage), so we need to make sure to undo the inversion.
This is not performed for the "TextureCoordinateSystem::kUploadFromHost"
state as that indicates the texture is already "right side up".
Powered by the new and amazing `unnecessary_ignore` lint.
We're not enabling this lint by default because being able to
temporarily use ignores that don't ignore anything is a powerful tool to
enable migrations. We should turn this lint on locally periodically,
though, and clean up all outdated ignores.
Resolves https://github.com/flutter/flutter/issues/143891.
This patch includes breaking changes, but this API is still in preview.
* Breaking: Rename `Texture.GetBaseMipLevelSizeInBytes` to
`Texture.getBaseMipLevelSizeInBytes`.
* Breaking: Make `Texture.overwrite` throw exception instead of
returning false.
* Non-breaking: Make `DeviceBuffer`/`Texture` creation throw exceptions
instead of returning nullables.
We can incrementally add more specific exceptions for resource creation
failure.
Fixes https://github.com/flutter/flutter/issues/162128
Zero dimensioned rectangle blurs were causing the setup code to generate
NaN values. This condition could also happen for some very thin or short
rectangles so rather than just rule out zero-dimensioned rectangles, the
uniforms are checked for NaN values and the operation is skipped in
those cases.
🚫 **BLOCKED** : Do not merge until
https://github.com/flutter/flutter/issues/161261 (additional test
coverage).
---
This PR eliminates (1) `scenario_app/android`, and all references to an
Android `scenario_app`, including documentation, CI configuration, build
rules, test runner, Android-side test application, and (2), to verify
and disambiguate the remains, renames the folder `ios_scenario_app`,
which is now accurate.
It also eliminates elements that were _only_ used in the Android-side
scenario_app, such as Firebase Test Lab uploading.
I would be open to doing this in phases if we thought it was better to
do so, but given its mostly a mechanical change (and by renaming the
directory, references can be checked merely by looking for
`/\bscenario_app/`, I believe this is safe to iterate on and eventually
merge after the holidays.
## Background
As of the merged mono-repo, there is no longer a requirement for the
engine to be testable as a standalone unit.
As an example,
[`%ENGINE%/testing/scenario_app`](3762f2e973/engine/src/flutter/testing/scenario_app),
which was intended to _emulate_ the Flutter framework (and some of
`flutter_tools` tooling), load the iOS and Android embedder, and run
various "scenarios" (which ran a combination of `dart:ui` code and
Android Java/iOS Obj-C) verifying golden-file screenshots.
Instead, it is now possible to write and run _real_ (full) Flutter apps
the same way that an end-user (or our own tests) would. One such example
is
[`dev/native_driver_test`](https://github.com/flutter/flutter/tree/master/dev/integration_tests/native_driver_test),
which is a full-fledged Flutter app, which uses standard tooling (i.e.
`flutter`), to test most of the same elements that previously were only
tested in the Android version of `scenario_app`.
These cause ambiguous compiler reference errors on some GCC versions.
And, the errors seem right. But, newer versions of clang seem to resolve
that ambiguity by also checking if the references to the types are also
references to identical types.
Per the chat with Jim, also added the Dl prefix to those types.
No change in functionality. Just a rename of the types and removal of
the now unnecessary typedefs.
Fixes https://github.com/flutter/flutter/issues/161262
Sometimes we end up with clip replay entities that have clip depth
values substantially below the current depth. I suspect this is due to
either mismatched save/restore or a bug in our code. Update: this isn't
a bug/bug but its definitely a bug. We can have multiple clips per save,
but the restore will remove at most one from the record/replay.
If a clip has a depth value that is less than the current clip depth, it
cannot by definition impact anything that draws after it.
Fixes https://github.com/flutter/flutter/issues/161374
When we round out the texture size for a saveLayer, also round out the
coverage so that the drawing origin is correct. Otherwise we may
actually cut off the top left edge of rendering.
---------
Co-authored-by: gaaclarke <30870216+gaaclarke@users.noreply.github.com>
When processing the metadata for a struct with an array, incorporate the
padding into the layout. Previously we would register a vec3[n] array as
being 4*n bytes (including the padding), but when uploading this would
result in us writing data into the padding and then leave the rest
uninitialized. now we correctly insert a padding element between 3 byte
elements.
Fixes https://github.com/flutter/flutter/issues/161645
Fixes SkRSXform task in https://github.com/flutter/flutter/issues/161456
Removes (nearly) all uses of Skia SkRSXform object from DisplayList and
replaces it with a new Impeller RSTransform geometry object.
There are remaining uses in:
- Skia adapter code which needs to convert them back to SkRSXform when
using the Skia backend
- dl_rendering_tests which is waiting for a major conversion effort
- ?Fuchsia? code has an SkCanvas spy adapter used in its embedder code
(not DisplayList related)
- web_ui/skwasm
Towards https://github.com/flutter/flutter/issues/161406.
The goal is to, assuming this is WAI, move the `bringup: true` build
(the newly created one) to presubmit, and then in a follow-up PR, remove
the `tests: [...]` (and test dependencies) from
`linux_host_engine.json`, meaning that it would be a build/archive only
builder, and this _new_ builder would be a build/test one.
We talked about it being hypothetically better to _not_ build the engine
multiple times, and decided for now to depend on RBE and not try to
create stages or download artifacts created from another builder, but if
@zanderso has another suggestion here is the place to chime in :)
(Btw if we like this approach, I'll create a task list of every builder
that needs to be migrated)