Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

[Impeller] null check samplers #37489

Merged
merged 26 commits into from
Nov 11, 2022

Conversation

jonahwilliams
Copy link
Member

@jonahwilliams jonahwilliams commented Nov 10, 2022

Fixes flutter/flutter#115027

When run in debug mode, prints a nice error message:

══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
The following _Exception was thrown during paint():
Exception: Invalid FragmentShader shaders/blur.frag: missing sampler

The relevant error-causing widget was:
  _ShaderSamplerImpl
  _ShaderSamplerImpl:file:///Users/jonahwilliams/.pub-cache/hosted/pub.dev/flutter_shaders-0.0.1/lib/src/animated_sampler.dart:76:12

When the exception was thrown, this was the stack:
#0      FragmentShader._validate (dart:ui/painting.dart:4297:7)
#1      Paint.shader= (dart:ui/painting.dart:1412:12)
#2      _MyHomePageState.build.<anonymous closure>.<anonymous closure> (package:foo_bar_shaders/main.dart:62:64)
#3      _RenderShaderSamplerBuilderWidget.paint (package:flutter_shaders/src/animated_sampler.dart:211:12)
#4      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2850:7)
#5      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#6      RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:144:15)
#7      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2850:7)
#8      PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:169:11)
#9      PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:112:5)
#10     PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:264:7)
#11     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:245:7)
#12     RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:74:15)
#13     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2850:7)
#14     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#15     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2924:15)

@jonahwilliams jonahwilliams added the Work in progress (WIP) Not ready (yet) for review! label Nov 10, 2022
@jonahwilliams
Copy link
Member Author

having some testing problems, investigating

@jonahwilliams
Copy link
Member Author

As far as I can tell, the issue I'm hitting is that the ReusableFragmentShader instance that is the receiever in the _validateSampler call is different than the ResuableFragmentShader instance that was constructed in the test

@jonahwilliams jonahwilliams removed the Work in progress (WIP) Not ready (yet) for review! label Nov 10, 2022
@jonahwilliams
Copy link
Member Author

The isses was, my ffiNative signature was Bool Function(Handle) instead of Bool Function(Pointer<Void>) and I believe the former was causing a new instance of ReusableFragmentShader to be created, which ended up uninitialized.

@jonahwilliams jonahwilliams added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 11, 2022
@auto-submit auto-submit bot merged commit 0721c86 into flutter:main Nov 11, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 11, 2022
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Nov 11, 2022
sourcegraph-bot pushed a commit to sgtest/megarepo that referenced this pull request Nov 11, 2022
…) (#115132)

Commit: 6e89042d9b15005cc95c185c6d1fb9cfbcd9c918
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 11, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 11, 2022
auto-submit bot pushed a commit to flutter/plugins that referenced this pull request Nov 11, 2022
* bdcacbf 1c1ad0e72 Roll Fuchsia Linux SDK from RNSA2Wp1MObtc7OHy... to mduclAELKkftJ-fwI... (flutter/engine#37495) (flutter/flutter#115088)

* ca61652 Roll ios-deploy iOS artifact (flutter/flutter#115042)

* b31b9dc 057c53a05 [Impeller] Remove duplicate code in 'TiledTextureContents' (flutter/engine#37492) (flutter/flutter#115093)

* 19b351b f467eee51 Turned on performance-move-const-arg everywhere. (flutter/engine#37482) (flutter/flutter#115095)

* 5a60045 Reland: Adds support for the Material Badge widget, BadgeTheme, BadgeThemeData (#114560) (flutter/flutter#115002)

* 09a4f23 Prevent tests from producing dill files alongside the test file (flutter/flutter#115075)

* 1f891a0 Fix `RangeSlider` semantics node size (flutter/flutter#114999)

* c1ceda4 Include stdout in codesign failure output (flutter/flutter#115115)

* 2e432ec chore: enable Flutter Android workflow on aarch64 (flutter/flutter#113829)

* ad72a45 12dabe83d Felt analyze (flutter/engine#37481) (flutter/flutter#115102)

* 4e7dbef Explicitly call out documentation links in "flutter create" (flutter/flutter#114181)

* d413081 Fix shrinkwrap on animated list (flutter/flutter#115104)

* bd00a93 Roll Flutter Engine from 12dabe83da19 to 4cb9c1e00a84 (5 revisions) (flutter/flutter#115118)

* 8858c17 Roll Flutter Engine from 4cb9c1e00a84 to 30e2cedfa2ac (2 revisions) (flutter/flutter#115122)

* 0f2f4b8 Roll Flutter Engine from 30e2cedfa2ac to cae1716611a4 (2 revisions) (flutter/flutter#115124)

* c6561e6 53cfb94c5 Roll Skia from 65b60707772d to b50a2f714837 (46 revisions) (flutter/engine#37501) (flutter/flutter#115128)

* 6e89042 0721c860e [Impeller] null check samplers (flutter/engine#37489) (flutter/flutter#115132)

* 88e49ed Load assets in flutter_test without turning event loop. (flutter/flutter#115123)

* f997281 Roll Flutter Engine from 0721c860e2c3 to cb78576e5fec (3 revisions) (flutter/flutter#115134)

* 0d081f9 Roll Flutter Engine from cb78576e5fec to a41712cec63a (2 revisions) (flutter/flutter#115135)

* 83cda7e 19ead2834 Roll Fuchsia Linux SDK from mduclAELKkftJ-fwI... to R3L54Ma3VT2TQ6RpI... (flutter/engine#37513) (flutter/flutter#115139)

* c021d91 [flutter_tools] support github reporter (flutter/flutter#115137)

* 413bb21 e32fc0044 Roll Skia from b50f741ef341 to 77620568f467 (5 revisions) (flutter/engine#37514) (flutter/flutter#115142)

* 098aac7 7326e5b33 Roll Dart SDK from 3a022103e91d to 1e37edb1f6c1 (1 revision) (flutter/engine#37515) (flutter/flutter#115145)
stuartmorgan-g pushed a commit to flutter/packages that referenced this pull request Nov 11, 2022
* 19b351b f467eee51 Turned on performance-move-const-arg everywhere. (flutter/engine#37482) (flutter/flutter#115095)

* 5a60045 Reland: Adds support for the Material Badge widget, BadgeTheme, BadgeThemeData (#114560) (flutter/flutter#115002)

* 09a4f23 Prevent tests from producing dill files alongside the test file (flutter/flutter#115075)

* 1f891a0 Fix `RangeSlider` semantics node size (flutter/flutter#114999)

* c1ceda4 Include stdout in codesign failure output (flutter/flutter#115115)

* 2e432ec chore: enable Flutter Android workflow on aarch64 (flutter/flutter#113829)

* ad72a45 12dabe83d Felt analyze (flutter/engine#37481) (flutter/flutter#115102)

* 4e7dbef Explicitly call out documentation links in "flutter create" (flutter/flutter#114181)

* d413081 Fix shrinkwrap on animated list (flutter/flutter#115104)

* bd00a93 Roll Flutter Engine from 12dabe83da19 to 4cb9c1e00a84 (5 revisions) (flutter/flutter#115118)

* 8858c17 Roll Flutter Engine from 4cb9c1e00a84 to 30e2cedfa2ac (2 revisions) (flutter/flutter#115122)

* 0f2f4b8 Roll Flutter Engine from 30e2cedfa2ac to cae1716611a4 (2 revisions) (flutter/flutter#115124)

* c6561e6 53cfb94c5 Roll Skia from 65b60707772d to b50a2f714837 (46 revisions) (flutter/engine#37501) (flutter/flutter#115128)

* 6e89042 0721c860e [Impeller] null check samplers (flutter/engine#37489) (flutter/flutter#115132)

* 88e49ed Load assets in flutter_test without turning event loop. (flutter/flutter#115123)

* f997281 Roll Flutter Engine from 0721c860e2c3 to cb78576e5fec (3 revisions) (flutter/flutter#115134)

* 0d081f9 Roll Flutter Engine from cb78576e5fec to a41712cec63a (2 revisions) (flutter/flutter#115135)

* 83cda7e 19ead2834 Roll Fuchsia Linux SDK from mduclAELKkftJ-fwI... to R3L54Ma3VT2TQ6RpI... (flutter/engine#37513) (flutter/flutter#115139)

* c021d91 [flutter_tools] support github reporter (flutter/flutter#115137)

* 413bb21 e32fc0044 Roll Skia from b50f741ef341 to 77620568f467 (5 revisions) (flutter/engine#37514) (flutter/flutter#115142)

* 098aac7 7326e5b33 Roll Dart SDK from 3a022103e91d to 1e37edb1f6c1 (1 revision) (flutter/engine#37515) (flutter/flutter#115145)
schwa423 pushed a commit to schwa423/engine that referenced this pull request Nov 16, 2022
* [Impeller] null check sampler and assert in Paint

* ++

* ++

* ++

* ++

* Update fragment_shader_test.dart

* ++

* TESTING

* ++

* TESTING

* ++

* ++

* ++

* ++

* ++

* ++

* ++

* ++

* ++

* ++

* ++

* ++

* remove debugging code

* ++

* ++
adam-harwood pushed a commit to adam-harwood/flutter_plugins that referenced this pull request Nov 21, 2022
* bdcacbf 1c1ad0e72 Roll Fuchsia Linux SDK from RNSA2Wp1MObtc7OHy... to mduclAELKkftJ-fwI... (flutter/engine#37495) (flutter/flutter#115088)

* ca61652 Roll ios-deploy iOS artifact (flutter/flutter#115042)

* b31b9dc 057c53a05 [Impeller] Remove duplicate code in 'TiledTextureContents' (flutter/engine#37492) (flutter/flutter#115093)

* 19b351b f467eee51 Turned on performance-move-const-arg everywhere. (flutter/engine#37482) (flutter/flutter#115095)

* 5a60045 Reland: Adds support for the Material Badge widget, BadgeTheme, BadgeThemeData (#114560) (flutter/flutter#115002)

* 09a4f23 Prevent tests from producing dill files alongside the test file (flutter/flutter#115075)

* 1f891a0 Fix `RangeSlider` semantics node size (flutter/flutter#114999)

* c1ceda4 Include stdout in codesign failure output (flutter/flutter#115115)

* 2e432ec chore: enable Flutter Android workflow on aarch64 (flutter/flutter#113829)

* ad72a45 12dabe83d Felt analyze (flutter/engine#37481) (flutter/flutter#115102)

* 4e7dbef Explicitly call out documentation links in "flutter create" (flutter/flutter#114181)

* d413081 Fix shrinkwrap on animated list (flutter/flutter#115104)

* bd00a93 Roll Flutter Engine from 12dabe83da19 to 4cb9c1e00a84 (5 revisions) (flutter/flutter#115118)

* 8858c17 Roll Flutter Engine from 4cb9c1e00a84 to 30e2cedfa2ac (2 revisions) (flutter/flutter#115122)

* 0f2f4b8 Roll Flutter Engine from 30e2cedfa2ac to cae1716611a4 (2 revisions) (flutter/flutter#115124)

* c6561e6 53cfb94c5 Roll Skia from 65b60707772d to b50a2f714837 (46 revisions) (flutter/engine#37501) (flutter/flutter#115128)

* 6e89042 0721c860e [Impeller] null check samplers (flutter/engine#37489) (flutter/flutter#115132)

* 88e49ed Load assets in flutter_test without turning event loop. (flutter/flutter#115123)

* f997281 Roll Flutter Engine from 0721c860e2c3 to cb78576e5fec (3 revisions) (flutter/flutter#115134)

* 0d081f9 Roll Flutter Engine from cb78576e5fec to a41712cec63a (2 revisions) (flutter/flutter#115135)

* 83cda7e 19ead2834 Roll Fuchsia Linux SDK from mduclAELKkftJ-fwI... to R3L54Ma3VT2TQ6RpI... (flutter/engine#37513) (flutter/flutter#115139)

* c021d91 [flutter_tools] support github reporter (flutter/flutter#115137)

* 413bb21 e32fc0044 Roll Skia from b50f741ef341 to 77620568f467 (5 revisions) (flutter/engine#37514) (flutter/flutter#115142)

* 098aac7 7326e5b33 Roll Dart SDK from 3a022103e91d to 1e37edb1f6c1 (1 revision) (flutter/engine#37515) (flutter/flutter#115145)
shogohida pushed a commit to shogohida/flutter that referenced this pull request Dec 7, 2022
gspencergoog pushed a commit to gspencergoog/flutter that referenced this pull request Jan 19, 2023
mauricioluz pushed a commit to mauricioluz/plugins that referenced this pull request Jan 26, 2023
* bdcacbf 1c1ad0e72 Roll Fuchsia Linux SDK from RNSA2Wp1MObtc7OHy... to mduclAELKkftJ-fwI... (flutter/engine#37495) (flutter/flutter#115088)

* ca61652 Roll ios-deploy iOS artifact (flutter/flutter#115042)

* b31b9dc 057c53a05 [Impeller] Remove duplicate code in 'TiledTextureContents' (flutter/engine#37492) (flutter/flutter#115093)

* 19b351b f467eee51 Turned on performance-move-const-arg everywhere. (flutter/engine#37482) (flutter/flutter#115095)

* 5a60045 Reland: Adds support for the Material Badge widget, BadgeTheme, BadgeThemeData (#114560) (flutter/flutter#115002)

* 09a4f23 Prevent tests from producing dill files alongside the test file (flutter/flutter#115075)

* 1f891a0 Fix `RangeSlider` semantics node size (flutter/flutter#114999)

* c1ceda4 Include stdout in codesign failure output (flutter/flutter#115115)

* 2e432ec chore: enable Flutter Android workflow on aarch64 (flutter/flutter#113829)

* ad72a45 12dabe83d Felt analyze (flutter/engine#37481) (flutter/flutter#115102)

* 4e7dbef Explicitly call out documentation links in "flutter create" (flutter/flutter#114181)

* d413081 Fix shrinkwrap on animated list (flutter/flutter#115104)

* bd00a93 Roll Flutter Engine from 12dabe83da19 to 4cb9c1e00a84 (5 revisions) (flutter/flutter#115118)

* 8858c17 Roll Flutter Engine from 4cb9c1e00a84 to 30e2cedfa2ac (2 revisions) (flutter/flutter#115122)

* 0f2f4b8 Roll Flutter Engine from 30e2cedfa2ac to cae1716611a4 (2 revisions) (flutter/flutter#115124)

* c6561e6 53cfb94c5 Roll Skia from 65b60707772d to b50a2f714837 (46 revisions) (flutter/engine#37501) (flutter/flutter#115128)

* 6e89042 0721c860e [Impeller] null check samplers (flutter/engine#37489) (flutter/flutter#115132)

* 88e49ed Load assets in flutter_test without turning event loop. (flutter/flutter#115123)

* f997281 Roll Flutter Engine from 0721c860e2c3 to cb78576e5fec (3 revisions) (flutter/flutter#115134)

* 0d081f9 Roll Flutter Engine from cb78576e5fec to a41712cec63a (2 revisions) (flutter/flutter#115135)

* 83cda7e 19ead2834 Roll Fuchsia Linux SDK from mduclAELKkftJ-fwI... to R3L54Ma3VT2TQ6RpI... (flutter/engine#37513) (flutter/flutter#115139)

* c021d91 [flutter_tools] support github reporter (flutter/flutter#115137)

* 413bb21 e32fc0044 Roll Skia from b50f741ef341 to 77620568f467 (5 revisions) (flutter/engine#37514) (flutter/flutter#115142)

* 098aac7 7326e5b33 Roll Dart SDK from 3a022103e91d to 1e37edb1f6c1 (1 revision) (flutter/engine#37515) (flutter/flutter#115145)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
autosubmit Merge PR when tree becomes green via auto submit App e: impeller
Projects
No open projects
Archived in project
Development

Successfully merging this pull request may close these issues.

[Impeller] forgetting to set the sampler in a FragmentShader causes native crash
2 participants