ladybird/Libraries/LibGfx
Aliaksandr Kalenik a08734ecbc LibGfx+LibWeb+Compositor+WebContent: Commit 2D canvas flushes atomically
2D canvas contexts started publishing partial frames after canvas
rasterization moved into the Compositor. WebContent still splits large
recorded command lists after 64 commands, but every split batch was sent
through the same compositor path as the end-of-frame flush. The
compositor replayed each batch into the DrawCanvas source surface,
so a pending present could sample a canvas after clear and before the
rest of the next frame had been drawn. Canvas-heavy pages such as
slither.com then flickered between partial and complete frames.

Carry an explicit commit bit with 2D canvas command updates. Non-commit
batches now update a hidden working canvas in the Compositor, while the
display-list-visible surface keeps the last committed canvas contents.
The end-of-frame canvas preparation sends the commit boundary, including
the empty-commit case needed when the auto-flush consumed all recorded
commands before prepare_for_compositing() runs.
2026-06-19 00:01:26 +02:00
..
Font LibGfx: Cache font-independent shape data in the font shaping cache 2026-06-09 17:35:54 +02:00
ImageFormats LibGfx: Reject a BMP V5 ICC profile offset that points out of bounds 2026-06-15 20:19:33 +09:00
Rust Rust: Set import granularity to Item 2026-05-28 06:52:18 +02:00
AffineTransform.cpp LibGfx: Add CanvasCommandList 2026-06-13 20:41:03 +02:00
AffineTransform.h LibGfx: Add CanvasCommandList 2026-06-13 20:41:03 +02:00
AntiAliasing.h LibGfx+LibWeb: Move display-list corner types to LibGfx 2026-05-12 16:30:26 +02:00
Bitmap.cpp LibGfx: Set maximum bitmap dimensions to 65535 2026-05-05 20:13:43 +02:00
Bitmap.h LibGfx+LibWeb: Move SVG mask/clip composition from CPU to GPU 2026-01-23 16:23:06 +01:00
BitmapExport.cpp LibGfx: Move bitmap export out of ImmutableBitmap 2026-05-05 14:39:17 -05:00
BitmapExport.h LibGfx: Move bitmap export out of ImmutableBitmap 2026-05-05 14:39:17 -05:00
BitmapSequence.cpp LibGfx: Preserve single-frame BitmapSequence backing 2026-05-25 19:46:46 +02:00
BitmapSequence.h LibGfx+LibWeb: Remove unused code from Gfx::Point/Rect/Size 2026-03-31 10:37:23 +02:00
BoundingBox.h LibGfx: Add BoundingBox::has_no_points for none vs zero-area rect 2026-04-15 10:26:53 +01:00
CanvasCommandList.cpp LibWeb+Compositor: Avoid canvas readback for canvas drawImage 2026-06-17 19:07:32 +02:00
CanvasCommandList.h LibWeb+Compositor: Avoid canvas readback for canvas drawImage 2026-06-17 19:07:32 +02:00
CanvasCommandPlayer.cpp LibWeb+Compositor: Avoid canvas readback for canvas drawImage 2026-06-17 19:07:32 +02:00
CanvasCommandPlayer.h LibWeb+Compositor: Avoid canvas readback for canvas drawImage 2026-06-17 19:07:32 +02:00
CMakeLists.txt LibGfx+LibWeb: Store Skia images with display list resources 2026-06-17 19:17:10 +02:00
CMYKBitmap.cpp LibGfx: Use NonnullRefPtr<Bitmap> for frame descriptors 2025-06-25 22:54:48 +12:00
CMYKBitmap.h LibGfx: Use NonnullRefPtr<Bitmap> for frame descriptors 2025-06-25 22:54:48 +12:00
Color.cpp LibGfx: Implement WCAG's contrast ratio in Color 2026-06-09 17:23:26 +02:00
Color.h LibGfx: Implement WCAG's contrast ratio in Color 2026-06-09 17:23:26 +02:00
ColorConversion.cpp LibGfx: Add color space conversions needed for CSS color interpolation 2026-04-16 12:06:10 +02:00
ColorConversion.h LibGfx: Preserve out-of-range components in HSL to sRGB conversion 2026-04-16 12:06:10 +02:00
ColorSpace.cpp LibGfx: Keep ImmutableBitmap source data context-neutral 2026-05-04 20:12:21 +02:00
ColorSpace.h LibGfx: Keep ImmutableBitmap source data context-neutral 2026-05-04 20:12:21 +02:00
CompositingAndBlendingOperator.h LibGfx: Reorder CompositingAndBlendingOperator values 2025-08-06 15:21:03 +02:00
CornerRadii.cpp LibGfx: Add IPC serialization for CornerRadii 2026-05-21 11:45:06 +01:00
CornerRadii.h LibGfx: Add IPC serialization for CornerRadii 2026-05-21 11:45:06 +01:00
Cursor.cpp Everywhere: Avoid large rebuilds when editing (Immutable)Bitmap headers 2025-11-28 18:32:48 +01:00
Cursor.h LibGfx: Add a stringifier for StandardCursor 2025-12-03 12:23:56 +01:00
DecodedImageFrame.cpp LibGfx: Add CanvasCommandList 2026-06-13 20:41:03 +02:00
DecodedImageFrame.h LibGfx: Add CanvasCommandList 2026-06-13 20:41:03 +02:00
Direct3DContext.cpp LibGfx: Add a Direct3D Skia backend 2026-06-15 04:50:29 +02:00
Direct3DContext.h LibGfx: Add a Direct3D Skia backend 2026-06-15 04:50:29 +02:00
Filter.cpp LibGfx: Add IPC serialization for Filter 2026-05-21 11:45:06 +01:00
Filter.h LibGfx: Add IPC serialization for Filter 2026-05-21 11:45:06 +01:00
FilterImpl.h LibWeb: Inline serialized filters in display list commands 2026-05-11 15:49:12 +02:00
FontCascadeList.cpp LibGfx+LibWeb: Only trigger @font-face loads from text shaping 2026-04-25 17:06:28 +02:00
FontCascadeList.h LibGfx: Remove unused FontCascadeList::size() 2026-05-19 20:34:27 +02:00
Forward.h LibGfx: Add CanvasCommandPlayer 2026-06-13 20:41:03 +02:00
FourCC.h LibGfx: Implement comparison operator and hash function for FourCC 2025-11-04 21:44:32 +01:00
GradientInterpolation.h LibGfx+LibWeb: Use Gfx gradient interpolation in display lists 2026-05-11 20:31:33 +02:00
GradientPainting.cpp LibGfx+LibWeb: Delete unused PaintStyle::paint() implementations 2025-08-01 04:39:50 -04:00
Gradients.cpp LibGfx: Add CanvasCommandList 2026-06-13 20:41:03 +02:00
Gradients.h LibGfx: Add CanvasCommandList 2026-06-13 20:41:03 +02:00
InterpolationColorSpace.h LibWeb: Implement the color-interpolation property for SVG gradients 2025-08-17 10:51:05 +02:00
LineStyle.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Matrix.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
Matrix3x3.h LibGfx+LibMedia+LibWeb: Use new Matrix subscript operator 2025-07-28 09:15:23 +02:00
Matrix4x4.cpp LibGfx: Add IPC serialization for FloatMatrix4x4 2026-05-21 11:45:06 +01:00
Matrix4x4.h LibGfx+LibWeb: Use matrix helpers in TransformationStyleValue::to_matrix 2026-06-12 01:10:24 +02:00
MetalContext.h Everywhere: Run clang-format 2024-12-28 05:39:32 -08:00
MetalContext.mm LibWeb: Allow construction of PaintingSurface directly from IOSurface 2024-12-03 23:35:45 +01:00
MorphologyOperator.h LibWeb+LibGfx: Implement SVGFEMorphologyElement 2025-11-15 16:08:53 +01:00
Orientation.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Painter.cpp LibGfx+LibWeb: Fix compile errors in clang-cl from recent header cleanup 2025-11-30 08:45:29 -05:00
Painter.h LibGfx: Reduce Painter to the bitmap-compositing interface 2026-06-13 20:41:03 +02:00
PainterSkia.cpp LibGfx: Stop caching Skia images during canvas playback 2026-06-16 00:38:30 +02:00
PainterSkia.h LibGfx: Stop caching Skia images during canvas playback 2026-06-16 00:38:30 +02:00
PaintingSurface.cpp LibGfx+LibWeb+Compositor+WebContent: Commit 2D canvas flushes atomically 2026-06-19 00:01:26 +02:00
PaintingSurface.h LibGfx+LibWeb+Compositor+WebContent: Commit 2D canvas flushes atomically 2026-06-19 00:01:26 +02:00
PaintStyle.cpp LibGfx+LibWeb: Make DecodedImageFrame a value type 2026-05-07 16:08:13 +02:00
PaintStyle.h LibGfx+LibWeb: Make DecodedImageFrame a value type 2026-05-07 16:08:13 +02:00
Palette.cpp LibGfx: Clean up #include directives 2024-11-20 21:13:23 +01:00
Palette.h LibGfx+LibWeb: Preserve text color for selections 2026-06-18 22:43:26 +02:00
Path.cpp LibGfx: Add IPC serialization for Path 2026-05-21 11:45:06 +01:00
Path.h LibGfx+LibWeb: Implement SVGTextPathElement.startOffset 2026-06-04 16:01:56 +02:00
PathSkia.cpp LibGfx+LibWeb: Implement SVGTextPathElement.startOffset 2026-06-04 16:01:56 +02:00
PathSkia.h LibGfx+LibWeb: Implement SVGTextPathElement.startOffset 2026-06-04 16:01:56 +02:00
Point.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Point.h LibGfx+LibWeb: Remove unused code from Gfx::Point/Rect/Size 2026-03-31 10:37:23 +02:00
Quad.h LibGfx: Implement even-odd method for Quad::contains() and add tests 2024-12-15 23:27:42 +01:00
Rect.cpp LibGfx: Add CanvasCommandList 2026-06-13 20:41:03 +02:00
Rect.h LibGfx: Add CanvasCommandList 2026-06-13 20:41:03 +02:00
ScalingMode.h LibGfx+LibWeb: Use mipmaps for downscaling images 2025-11-12 15:59:01 +01:00
ShapeFeature.cpp LibGfx: Add IPC serialization for ShapeFeature 2026-05-21 11:45:06 +01:00
ShapeFeature.h LibGfx: Add IPC serialization for ShapeFeature 2026-05-21 11:45:06 +01:00
ShareableBitmap.cpp Everywhere: Avoid large rebuilds when editing (Immutable)Bitmap headers 2025-11-28 18:32:48 +01:00
ShareableBitmap.h Everywhere: Avoid large rebuilds when editing (Immutable)Bitmap headers 2025-11-28 18:32:48 +01:00
SharedImage.cpp LibGfx+LibWeb: Add Linux dmabuf backing stores to SharedImage 2026-04-14 21:49:08 +02:00
SharedImage.h LibGfx+LibWeb: Add Linux dmabuf backing stores to SharedImage 2026-04-14 21:49:08 +02:00
SharedImageBuffer.cpp LibGfx: Preserve imported Linux DMABUF handles 2026-06-12 21:45:22 +02:00
SharedImageBuffer.h LibGfx: Preserve imported Linux DMABUF handles 2026-06-12 21:45:22 +02:00
Size.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Size.h LibGfx+LibWeb: Remove unused code from Gfx::Point/Rect/Size 2026-03-31 10:37:23 +02:00
SkiaBackendContext.cpp LibGfx: Add a Direct3D Skia backend 2026-06-15 04:50:29 +02:00
SkiaBackendContext.h LibGfx: Add a Direct3D Skia backend 2026-06-15 04:50:29 +02:00
SkiaUtils.cpp LibWeb: Inline serialized filters in display list commands 2026-05-11 15:49:12 +02:00
SkiaUtils.h LibGfx: Keep ImmutableBitmap source data context-neutral 2026-05-04 20:12:21 +02:00
SystemTheme.cpp Meta: Enable exit-time destructor warnings for libraries 2026-06-04 19:20:49 +02:00
SystemTheme.h LibGfx+LibWeb: Preserve text color for selections 2026-06-18 22:43:26 +02:00
TextAlignment.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
TextAttributes.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
TextLayout.cpp LibGfx: Cache font-independent shape data in the font shaping cache 2026-06-09 17:35:54 +02:00
TextLayout.h LibGfx: Cache font-independent shape data in the font shaping cache 2026-06-09 17:35:54 +02:00
TIFFGenerator.py LibGfx: Don't use varargs/implicit typing in TIFFGenerator 2026-05-13 08:13:51 -05:00
Triangle.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Triangle.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Vector2.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Vector3.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Vector4.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
VectorGraphic.cpp LibGfx: Reduce Painter to the bitmap-compositing interface 2026-06-13 20:41:03 +02:00
VectorGraphic.h LibGfx: Reduce Painter to the bitmap-compositing interface 2026-06-13 20:41:03 +02:00
VectorN.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
VulkanContext.cpp LibGfx: Move VulkanImage into a separate file 2026-04-12 21:18:33 +02:00
VulkanContext.h LibGfx: Move VulkanImage into a separate file 2026-04-12 21:18:33 +02:00
VulkanImage.cpp LibGfx: Preserve imported Linux DMABUF handles 2026-06-12 21:45:22 +02:00
VulkanImage.h LibGfx: Make create_shared_vulkan_image() accept modifiers as a span 2026-04-14 21:49:08 +02:00
WindingRule.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
YUVData.cpp LibGfx+LibMedia: Add IPC serialization for VideoFrame 2026-05-21 11:45:06 +01:00
YUVData.h LibGfx+LibMedia: Add IPC serialization for VideoFrame 2026-05-21 11:45:06 +01:00