Skip to content

Revert "Make the context current before accessing GL in MakeSkiaGpuImage" #363

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 25, 2023

Conversation

swift-kim
Copy link
Member

This reverts flutter#40208, which causes PictureRasterizationException (and screen flickering) on emulators when calling Naviagator.push.

══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
The following PictureRasterizationException was thrown during paint():
Failed to rasterize a picture: unable to create texture render target at specified size 720x1280.
The callstack when the image was created was:
#0      new Image._.<anonymous closure> (dart:ui/painting.dart:1711:32)
#1      new Image._ (dart:ui/painting.dart:1713:6)
#2      Scene.toImageSync (dart:ui/compositing.dart:34:18)
#3      OffsetLayer.toImageSync (package:flutter/src/rendering/layer.dart:1487:20)
#4      _RenderSnapshotWidget._paintAndDetachToImage
(package:flutter/src/widgets/snapshot_widget.dart:315:40)
#5      _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:345:22)
#6      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#7      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#8      RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:146:15)
#9      _ZoomEnterTransitionPainter.paint
(package:flutter/src/material/page_transitions_theme.dart:923:23)
#10     _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:335:15)
#11     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#12     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#13     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:146:15)
#14     _ZoomExitTransitionPainter.paint
(package:flutter/src/material/page_transitions_theme.dart:995:23)
#15     _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:335:15)
#16     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#17     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#18     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:146:15)
#19     _ZoomEnterTransitionPainter.paint
(package:flutter/src/material/page_transitions_theme.dart:923:23)
#20     _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:335:15)
#21     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#22     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#23     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:146:15)
#24     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#25     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:169:11)
#26     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:112:5)
#27     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1147:31)
#28     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:494:19)
#29     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:905:13)
#30     RendererBinding._handlePersistentFrameCallback
(package:flutter/src/rendering/binding.dart:358:5)
#31     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1284:15)
#32     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1214:9)
#33     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1072:5)
#34     _invoke (dart:ui/hooks.dart:142:13)
#35     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:359:5)
#36     _drawFrame (dart:ui/hooks.dart:112:31)

The relevant error-causing widget was:
  MaterialApp
  MaterialApp:file:///home/swift/Git/plugins/packages/video_player/example/lib/main.dart:14:5

When the exception was thrown, this was the stack:
#0      Canvas.drawImageRect (dart:ui/painting.dart:5414:7)
#1      _drawImageScaledAndCentered (package:flutter/src/material/page_transitions_theme.dart:819:18)
#2      _ZoomExitTransitionPainter.paintSnapshot (package:flutter/src/material/page_transitions_theme.dart:987:5)
#3      _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:351:15)
#4      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#5      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#6      RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:146:15)
#7      _ZoomEnterTransitionPainter.paint (package:flutter/src/material/page_transitions_theme.dart:923:23)
#8      _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:335:15)
#9      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#10     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#11     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:146:15)
#12     _ZoomExitTransitionPainter.paint (package:flutter/src/material/page_transitions_theme.dart:995:23)
#13     _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:335:15)
#14     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#15     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#16     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:146:15)
#17     _ZoomEnterTransitionPainter.paint (package:flutter/src/material/page_transitions_theme.dart:923:23)
#18     _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:335:15)
#19     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#20     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:13)
#21     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:146:15)
#22     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3059:7)
#23     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:169:11)
#24     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:112:5)
#25     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1147:31)
#26     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:494:19)
#27     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:905:13)
#28     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:358:5)
#29     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1284:15)
#30     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1214:9)
#31     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1072:5)
#32     _invoke (dart:ui/hooks.dart:142:13)
#33     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:359:5)
#34     _drawFrame (dart:ui/hooks.dart:112:31)

The following RenderObject was being processed when the exception was fired: _RenderSnapshotWidget#4aaf5:
  needs compositing
  creator: SnapshotWidget ← _ZoomExitTransition ← SnapshotWidget ← _ZoomEnterTransition ←
    DualTransitionBuilder ← SnapshotWidget ← _ZoomExitTransition ← SnapshotWidget ←
    _ZoomEnterTransition ← DualTransitionBuilder ← _ZoomPageTransition ← AnimatedBuilder ← ⋯
  parentData: <none> (can use size)
  constraints: BoxConstraints(w=315.9, h=561.7)
  size: Size(315.9, 561.7)
This RenderObject had the following descendants (showing up to depth 5):
    child: RenderIgnorePointer#a4dea
      child: RenderRepaintBoundary#a60a9
        child: RenderSemanticsAnnotations#8bb72
          child: RenderPhysicalModel#451e6
            child: _RenderInkFeatures#837b3
════════════════════════════════════════════════════════════════════════════════════════════════════

Easily reproducible with the sqflite_tizen and video_player_tizen examples on Flutter 3.10.

@flutter-tizen/maintainers Could someone take a closer look at this issue? Right now I don't fully understand what the purpose of the original commit is.

@swift-kim
Copy link
Member Author

@xuelian-bai Could this be a GPU issue? As far as I can see from the Skia source code, none of the multisampling extensions in this function are supported by the emulator and thus fMSFBOType ends up with the default value (kNone_MSFBOType). Also this condition is not satisfied, so no MSAA flags are added to RGBA8's fFlags. As a consequence,

@swift-kim
Copy link
Member Author

This is a blocker for flutter-tizen/flutter-tizen#497. Should we proceed by simply reverting the change for now?

@xuelian-bai
Copy link

for now, I think you can just revert the change

@swift-kim swift-kim merged commit 439a832 into flutter-tizen:flutter-3.10.1 May 25, 2023
JSUYA pushed a commit that referenced this pull request Aug 22, 2023
swift-kim added a commit that referenced this pull request Aug 28, 2023
swift-kim added a commit that referenced this pull request Nov 10, 2023
swift-kim added a commit that referenced this pull request Dec 4, 2023
swift-kim added a commit that referenced this pull request Dec 4, 2023
JSUYA pushed a commit to JSUYA/engine that referenced this pull request Mar 18, 2024
JSUYA pushed a commit to JSUYA/engine that referenced this pull request May 31, 2024
JSUYA pushed a commit to JSUYA/engine that referenced this pull request Jun 13, 2024
JSUYA pushed a commit to JSUYA/engine that referenced this pull request Jul 22, 2024
JSUYA pushed a commit to JSUYA/engine that referenced this pull request Aug 23, 2024
JSUYA pushed a commit that referenced this pull request Dec 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants