ladybird/Libraries/LibGfx
Aliaksandr Kalenik 116668651b LibWeb+Compositor: Avoid canvas readback for canvas drawImage
2D canvas rendering now lives in the compositor, but drawing one canvas
into another still converted the source HTMLCanvasElement into a
DecodedImageFrame in WebContent. That forced a compositor readback for
every drawImage(canvas, ...) call before sending the destination canvas
commands back to the compositor.

Teach the canvas command stream to carry a DrawCanvas command that names
the source canvas surface. The destination 2D context now flushes the
source canvas, records that command, and immediately flushes the
destination command list so the compositor copies the source surface at
the drawImage call boundary. Bitmap sources continue to use DrawBitmap,
and true readback APIs still read pixels explicitly.
2026-06-17 19:07:32 +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: Add a Direct3D Skia backend 2026-06-15 04:50:29 +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
DecodedImageFrameSkiaImageCache.cpp LibGfx: Make Skia image cache eviction pressure-based 2026-05-28 02:50:55 +01:00
DecodedImageFrameSkiaImageCache.h LibGfx: Hide Skia types behind pImpl in DecodedImageFrameSkiaImageCache 2026-05-10 19:49:29 +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: Let PaintingSurface read from source offsets 2026-06-17 19:07:32 +02:00
PaintingSurface.h LibGfx: Let PaintingSurface read from source offsets 2026-06-17 19:07:32 +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 Everywhere: Unify naming of RGBA-like colors 2025-11-28 18:32:48 +01: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 Everywhere: Unify naming of RGBA-like colors 2025-11-28 18:32:48 +01: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