-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
flutter/engine
#35602Labels
cp: reviewCherry-picks in the review queueCherry-picks in the review queuefound in release: 3.3Found to occur in 3.3Found to occur in 3.3
Description
Happens after integer CTM removal. Video:
RasterCacheBleeding.mov
Code to reproduce:
class HomeScreen extends StatefulWidget {
const HomeScreen({Key key}) : super(key: key);
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: ListView(
children: [
Container(
height: 150,
),
SizedBox.fromSize(
size: const Size(100, 100.1),
child: Container(
color: Colors.black,
child: FlutterLogo(), // force raster caching
),
),
],
),
);
}
}The issue is that compared to original layer bounds, raster cache surface dimensions are rounded up to physical pixels. Drawing surface like this on subpixel coordinates can occasionally bleed slightly to adjacent physical pixels, which would be otherwise unaffected (glitch disappears when FlutterLogo is removed).
Metadata
Metadata
Assignees
Labels
cp: reviewCherry-picks in the review queueCherry-picks in the review queuefound in release: 3.3Found to occur in 3.3Found to occur in 3.3