Skip to content

[Impeller] GLES y axis adjustment can leak out of renderer when data is readback. #163315

@jimmyszeles

Description

@jimmyszeles

Steps to reproduce

I was following a different issue with Impeller and Google Maps on PowerVR devices.
And saw it was merged into master, so I checked it out.
The map is now drawn correctly, but for some reason all my markers are flipped on the X-axis.

Sample code from: GoogleMapsFlutter package, but with a custom maker from an Icon.
(See code sample below)

Device information which I used:

  • Productname: Galaxy Tab Active3
  • model: SM-T575
  • Versie One UI: 5.1.1
  • Android-versie: 13

Expected results

See Video (Google Maps Marker with Impeller disabled)

Marker is drawn correctly.

Actual results

See video (Google Maps Marker with Impeller enabled)

Marker is drawn flipped on the x-axis.

Code sample

Code sample
import 'dart:async';
import 'dart:math';
import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Maps Impeller'),
      ),
      body: MapSample(),
    );
  }
}

class MapSample extends StatefulWidget {
  const MapSample({super.key});

  @override
  State<MapSample> createState() => MapSampleState();
}

class MapSampleState extends State<MapSample> {
  final Completer<GoogleMapController> _controller =
      Completer<GoogleMapController>();
  final Set<Marker> _markers = <Marker>{};

  static const CameraPosition _kGooglePlex = CameraPosition(
    target: LatLng(37.42796133580664, -122.085749655962),
    zoom: 14.4746,
  );

  static const CameraPosition _kLake = CameraPosition(
      bearing: 192.8334901395799,
      target: LatLng(37.43296265331129, -122.08832357078792),
      tilt: 59.440717697143555,
      zoom: 19.151926040649414);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: GoogleMap(
        markers: _markers,
        mapType: MapType.hybrid,
        initialCameraPosition: _kGooglePlex,
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: _createMarker,
        label: const Text('Create marker and show!'),
        icon: const Icon(Icons.directions_boat),
      ),
    );
  }

  Future<void> _createMarker() async {
    final markerGenerator = MarkerIconGenerator(45.0);
    final iconBitmap = await markerGenerator.createBitmapDescriptorFromIconData(
      Icons.local_shipping,
      Colors.black,
      Colors.red,
      Colors.white,
    );
    final marker = Marker(
      markerId: MarkerId('1'),
      position: LatLng(
        _kLake.target.latitude,
        _kLake.target.longitude,
      ),
      infoWindow: InfoWindow(
        title: 'The lake',
      ),
      icon: iconBitmap,
    );
    setState(() {
      _markers.clear();
      _markers.add(marker);
    });
    final GoogleMapController controller = await _controller.future;
    await controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
  }
}

class MarkerIconGenerator {
  final double _markerSize;
  late double _circleStrokeWidth;
  late double _circleOffset;
  late double _outlineCircleWidth;
  late double _fillCircleWidth;
  late double _iconSize;
  late double _iconOffset;

  MarkerIconGenerator(this._markerSize) {
    // Calculate marker dimensions
    _circleStrokeWidth = _markerSize / 10.0;
    _circleOffset = _markerSize / 2;
    _outlineCircleWidth = _circleOffset - (_circleStrokeWidth / 2);
    _fillCircleWidth = _markerSize / 2;
    final outlineCircleInnerWidth = _markerSize - (2 * _circleStrokeWidth);
    _iconSize = sqrt(pow(outlineCircleInnerWidth, 2) / 2);
    final rectDiagonal = sqrt(2 * pow(_markerSize, 2));
    final circleDistanceToCorners =
        (rectDiagonal - outlineCircleInnerWidth) / 2;
    _iconOffset = sqrt(pow(circleDistanceToCorners, 2) / 2);
  }

  /// Creates a BitmapDescriptor from an IconData
  Future<BitmapDescriptor> createBitmapDescriptorFromIconData(
    IconData iconData,
    Color iconColor,
    Color circleColor,
    Color backgroundColor,
  ) async {
    final pictureRecorder = PictureRecorder();
    final canvas = Canvas(pictureRecorder);

    _paintCircleFill(canvas, backgroundColor);
    _paintCircleStroke(canvas, circleColor);
    _paintIcon(canvas, iconColor, iconData);

    final picture = pictureRecorder.endRecording();
    final image = await picture.toImage(
      _markerSize.round(),
      _markerSize.round(),
    );

    final bytes = await image.toByteData(format: ImageByteFormat.png);
    if (bytes == null) {
      return BitmapDescriptor.defaultMarker;
    }
    return BitmapDescriptor.bytes(bytes.buffer.asUint8List());
  }

  /// Paints the icon background
  void _paintCircleFill(Canvas canvas, Color color) {
    final paint = Paint()
      ..style = PaintingStyle.fill
      ..color = color;
    canvas.drawCircle(
      Offset(_circleOffset, _circleOffset),
      _fillCircleWidth,
      paint,
    );
  }

  /// Paints a circle around the icon
  void _paintCircleStroke(Canvas canvas, Color color) {
    final paint = Paint()
      ..style = PaintingStyle.stroke
      ..color = color
      ..strokeWidth = _circleStrokeWidth;
    canvas.drawCircle(
      Offset(_circleOffset, _circleOffset),
      _outlineCircleWidth,
      paint,
    );
  }

  /// Paints the icon
  void _paintIcon(Canvas canvas, Color color, IconData iconData) {
    final textPainter = TextPainter(textDirection: TextDirection.ltr);
    textPainter.text = TextSpan(
        text: String.fromCharCode(iconData.codePoint),
        style: TextStyle(
          letterSpacing: 0.0,
          fontSize: _iconSize,
          fontFamily: iconData.fontFamily,
          package: iconData.fontPackage,
          color: color,
        ));
    textPainter.layout();
    textPainter.paint(canvas, Offset(_iconOffset, _iconOffset));
  }
}

Screenshots or Video

Google Maps Marker with Impeller disabled
marker_icon_impeller_disabled.mp4
Google Maps Marker with Impeller enabled
marker_icon_impeller_enabled.mp4

Logs

Logs
[+6746 ms] I/google_maps_bug(32165): Background concurrent copying GC freed 19MB AllocSpace bytes, 215(15MB) LOS objects, 49% free, 15MB/31MB, paused 563us,108us total 168.614ms
[   +3 ms] D/OpenGLRenderer(32165): setSurface called with nullptr
[+1362 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +23 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +19 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +7 ms] E/libEGL  (32165): call to OpenGL ES API with no current context (logged once per thread)
[  +11 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +19 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +6 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +13 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +8 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +4 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +5 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +4 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +6 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +4 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +5 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +7 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +5 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +8 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +8 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +6 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +9 ms] W/JavaCronetEngine(32165): using the fallback Cronet Engine implementation. Performance will suffer and many HTTP client features, including caching, will not work.
[   +7 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[  +15 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +7 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +3 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +6 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +3 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +3 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +7 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +5 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[  +15 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +3 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +3 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +3 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[  +11 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +3 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[  +12 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +13 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +2 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +4 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[  +11 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +9 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +7 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +4 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[  +12 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[   +3 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +4 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +6 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +18 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +14 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(32165): updateAcquireFence: Did not find frame.
[ +411 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[   +1 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[ +108 ms] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.
[        ] W/ProxyAndroidLoggerBackend(32165): Too many Flogger logs received before configuration. Dropping old logs.

Flutter Doctor output

Doctor output
[√] Flutter (Channel master, 3.30.0-1.0.pre.175, on Microsoft Windows [Version 10.0.26100.3194], locale nl-BE) [5,5s]
    • Flutter version 3.30.0-1.0.pre.175 on channel master at C:\Data\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 60a7716159 (9 hours ago), 2025-02-14 02:11:04 -0500
    • Engine revision 60a7716159
    • Dart version 3.8.0 (build 3.8.0-91.0.dev)
    • DevTools version 2.43.0

[√] Windows Version (11 Pro 64-bit, 24H2, 2009) [3,3s]

[√] Android toolchain - develop for Android devices (Android SDK version 35.0.0) [2,4s]
    • Android SDK at C:\Users\Jimmy Szeles\AppData\Local\Android\sdk
    • Platform android-35, build-tools 35.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 21.0.5+-12932927-b750.29)
    • All Android licenses accepted.

[√] Chrome - develop for the web [295ms]
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.10.4) [294ms]
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.10.35027.167
    • Windows 10 SDK version 10.0.22621.0

[√] Android Studio (version 2024.2) [16ms]
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.5+-12932927-b750.29)

[√] VS Code (version 1.97.2) [15ms]
    • VS Code at C:\Users\Jimmy Szeles\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.104.0

[√] Connected device (4 available) [410ms]
    • SM T575 (mobile)  • R52W1036EXD • android-arm64  • Android 13 (API 33)
    • Windows (desktop) • windows     • windows-x64    • Microsoft Windows [Version 10.0.26100.3194]
    • Chrome (web)      • chrome      • web-javascript • Google Chrome 132.0.6834.160
    • Edge (web)        • edge        • web-javascript • Microsoft Edge 133.0.3065.59

[√] Network resources [1.640ms]
    • All expected network resources are available.

• No issues found!

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work liste: impellerImpeller rendering backend issues and features requestse: openglteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions