Name Description Size
brush_blend.c 58468
brush_blend.h 42000
brush_blend_ALPHA_PASS.c 58498
brush_blend_ALPHA_PASS.h 42317
brush_blend_DEBUG_OVERDRAW.c 58502
brush_blend_DEBUG_OVERDRAW.h 36977
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.c 61781
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.h 43871
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61783
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.h 43907
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_2D.c 61719
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_2D.h 40685
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_RECT.c 61721
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_RECT.h 40721
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_2D.c 61787
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_2D.h 43466
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_RECT.c 61789
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_RECT.h 43502
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.c 61747
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.h 43661
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61749
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.h 43697
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 61725
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 40227
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_RECT.c 61727
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_RECT.h 40263
brush_image_ALPHA_PASS_TEXTURE_2D.c 61685
brush_image_ALPHA_PASS_TEXTURE_2D.h 40475
brush_image_ALPHA_PASS_TEXTURE_RECT.c 61687
brush_image_ALPHA_PASS_TEXTURE_RECT.h 40511
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_2D.c 61751
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_2D.h 40791
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_RECT.c 61753
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_RECT.h 40827
brush_image_ANTIALIASING_REPETITION_TEXTURE_2D.c 61717
brush_image_ANTIALIASING_REPETITION_TEXTURE_2D.h 41242
brush_image_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61719
brush_image_ANTIALIASING_REPETITION_TEXTURE_RECT.h 41278
brush_image_DEBUG_OVERDRAW_TEXTURE_2D.c 61689
brush_image_DEBUG_OVERDRAW_TEXTURE_2D.h 38173
brush_image_DEBUG_OVERDRAW_TEXTURE_RECT.c 61691
brush_image_DEBUG_OVERDRAW_TEXTURE_RECT.h 38209
brush_image_TEXTURE_2D.c 61655
brush_image_TEXTURE_2D.h 38498
brush_image_TEXTURE_RECT.c 61657
brush_image_TEXTURE_RECT.h 38534
brush_linear_gradient.c 54787
brush_linear_gradient.h 37692
brush_linear_gradient_ALPHA_PASS.c 54817
brush_linear_gradient_ALPHA_PASS.h 38126
brush_linear_gradient_DEBUG_OVERDRAW.c 54821
brush_linear_gradient_DEBUG_OVERDRAW.h 36618
brush_mix_blend.c 54544
brush_mix_blend.h 45164
brush_mix_blend_ALPHA_PASS.c 54574
brush_mix_blend_ALPHA_PASS.h 45587
brush_mix_blend_DEBUG_OVERDRAW.c 54578
brush_mix_blend_DEBUG_OVERDRAW.h 37051
brush_opacity.c 47880
brush_opacity.h 35217
brush_opacity_ALPHA_PASS.c 47910
brush_opacity_ALPHA_PASS.h 35534
brush_opacity_ALPHA_PASS_ANTIALIASING.c 47942
brush_opacity_ALPHA_PASS_ANTIALIASING.h 35716
brush_opacity_ANTIALIASING.c 47912
brush_opacity_ANTIALIASING.h 35399
brush_opacity_ANTIALIASING_DEBUG_OVERDRAW.c 47946
brush_opacity_ANTIALIASING_DEBUG_OVERDRAW.h 35203
brush_opacity_DEBUG_OVERDRAW.c 47914
brush_opacity_DEBUG_OVERDRAW.h 35021
brush_solid.c 46564
brush_solid.h 31882
brush_solid_ALPHA_PASS.c 46594
brush_solid_ALPHA_PASS.h 32199
brush_solid_DEBUG_OVERDRAW.c 46598
brush_solid_DEBUG_OVERDRAW.h 31942
brush_yuv_image_ALPHA_PASS_TEXTURE_2D_YUV.c 58491
brush_yuv_image_ALPHA_PASS_TEXTURE_2D_YUV.h 47440
brush_yuv_image_ALPHA_PASS_TEXTURE_RECT_YUV.c 58493
brush_yuv_image_ALPHA_PASS_TEXTURE_RECT_YUV.h 47274
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_2D_YUV.c 58495
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_2D_YUV.h 45687
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_RECT_YUV.c 58497
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_RECT_YUV.h 45521
brush_yuv_image_TEXTURE_2D_YUV.c 58461
brush_yuv_image_TEXTURE_2D_YUV.h 47050
brush_yuv_image_TEXTURE_RECT_YUV.c 58463
brush_yuv_image_TEXTURE_RECT_YUV.h 46884
composite_FAST_PATH_TEXTURE_2D.c 30409
composite_FAST_PATH_TEXTURE_2D.h 9282
composite_FAST_PATH_TEXTURE_2D_YUV.c 30432
composite_FAST_PATH_TEXTURE_2D_YUV.h 22074
composite_FAST_PATH_TEXTURE_RECT.c 30411
composite_FAST_PATH_TEXTURE_RECT.h 9289
composite_FAST_PATH_TEXTURE_RECT_YUV.c 30434
composite_FAST_PATH_TEXTURE_RECT_YUV.h 22001
composite_TEXTURE_2D.c 30380
composite_TEXTURE_2D.h 12730
composite_TEXTURE_2D_YUV.c 30403
composite_TEXTURE_2D_YUV.h 24996
composite_TEXTURE_RECT.c 30382
composite_TEXTURE_RECT.h 12708
composite_TEXTURE_RECT_YUV.c 30405
composite_TEXTURE_RECT_YUV.h 24923
cs_blur_ALPHA_TARGET.c 42927
cs_blur_ALPHA_TARGET.h 31184
cs_blur_COLOR_TARGET.c 42927
cs_blur_COLOR_TARGET.h 31188
cs_border_segment.c 32502
cs_border_segment.h 21508
cs_border_solid.c 23771
cs_border_solid.h 15952
cs_clip_box_shadow_TEXTURE_2D.c 43356
cs_clip_box_shadow_TEXTURE_2D.h 38955
cs_clip_rectangle.c 56287
cs_clip_rectangle.h 46245
cs_clip_rectangle_FAST_PATH.c 56316
cs_clip_rectangle_FAST_PATH.h 41844
cs_conic_gradient.c 28936
cs_conic_gradient.h 20031
cs_fast_linear_gradient.c 13788
cs_fast_linear_gradient.h 7218
cs_line_decoration.c 18837
cs_line_decoration.h 10315
cs_linear_gradient.c 28567
cs_linear_gradient.h 19528
cs_radial_gradient.c 28941
cs_radial_gradient.h 20075
cs_scale_TEXTURE_2D.c 15183
cs_scale_TEXTURE_2D.h 8318
cs_scale_TEXTURE_RECT.c 15185
cs_scale_TEXTURE_RECT.h 8359
cs_svg_filter.c 54469
cs_svg_filter.h 46964
cs_svg_filter_node.c Notes about how this shader works and the requirements it faces: Each filter has a _CONVERTSRGB variant that converts to linear before performing the operation and converts back to sRGB for output. Since the inputs and output of this shader are premultiplied alpha, we have to undo the premultiply and then convert the sRGB color to linearRGB color, perform the desired operations, and then convert back to sRGB and then premultiply again. For some operations the _CONVERTSRGB variant is never invoked by WebRender, an example is OPACITY where the two modes have identical results, as scaling RGBA by a single scalar value only changes the opacity, without changing color relative to alpha, the sRGB vs linearRGB gamut mapping is relative to alpha. SVG filters are usually in linear space so the _CONVERTSRGB variant is used heavily in SVG filter graphs, whereas CSS filters use the regular variant. Handling of color-interpolation for feFlood and feDropShadow is out of scope for this shader, the values can be converted in the WebRender or Gecko code if necessary. All SVG filters have a subregion rect to clip the operation to, in many cases this can just be an alteration of the task uvrect in WebRender, but in some cases we might need to enforce it in the shader. All filters have an offset for each input, this is an optimization for folding feOffset into the downstream nodes of the graph, because it is inefficient to be copying an image just to scroll it, and feOffset is not rare. Notes about specific filter kinds: FILTER_BLEND_* kinds follow spec https://drafts.fxtf.org/compositing-1/#blending which says to mix from Rs to B() based on Rb.a, then mix from Rb to that color based on Rs.a. FILTER_COMPOSITE_* kinds use math from Skia as it is elegant. FILTER_COMPONENT_TRANSFER_* kinds assume a [4][256] table in gpucache. FILTER_DROP_SHADOW_* composites Rs source over the dropshadow in Rb.a, it's not actually a composite per se, and needs to be composited onto the destination using a separate blend. 69557
cs_svg_filter_node.h 51290
debug_color.c 15096
debug_color.h 5942
debug_font.c 15254
debug_font.h 7546
flag_check.c 28
flag_check.cpp 28
load_shader.h 14009
ps_clear.c 13607
ps_clear.h 6179
ps_copy.c 3576
ps_copy.h 6795
ps_quad_conic_gradient.c 42498
ps_quad_conic_gradient.h 37890
ps_quad_gradient.c 50606
ps_quad_gradient.h 44832
ps_quad_mask.c 46615
ps_quad_mask.h 41104
ps_quad_mask_FAST_PATH.c 46644
ps_quad_mask_FAST_PATH.h 36643
ps_quad_radial_gradient.c 42085
ps_quad_radial_gradient.h 39240
ps_quad_textured.c 39917
ps_quad_textured.h 34895
ps_split_composite.c 38968
ps_split_composite.h 34759
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_GLYPH_TRANSFORM_TEXTURE_2D.c 48354
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_GLYPH_TRANSFORM_TEXTURE_2D.h 37868
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 48319
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 36271
ps_text_run_ALPHA_PASS_GLYPH_TRANSFORM_TEXTURE_2D.c 48314
ps_text_run_ALPHA_PASS_GLYPH_TRANSFORM_TEXTURE_2D.h 37628
ps_text_run_ALPHA_PASS_TEXTURE_2D.c 48279
ps_text_run_ALPHA_PASS_TEXTURE_2D.h 36031
ps_text_run_DEBUG_OVERDRAW_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 48323
ps_text_run_DEBUG_OVERDRAW_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 36299
ps_text_run_DEBUG_OVERDRAW_TEXTURE_2D.c 48283
ps_text_run_DEBUG_OVERDRAW_TEXTURE_2D.h 36059