Name Description Size Coverage
brush_blend.c 58148 -
brush_blend.h 42807 -
brush_blend_ALPHA_PASS.c 58178 -
brush_blend_ALPHA_PASS.h 43124 -
brush_blend_DEBUG_OVERDRAW.c 58182 -
brush_blend_DEBUG_OVERDRAW.h 37766 -
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.c 61495 -
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.h 44942 -
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61497 -
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.h 44978 -
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_2D.c 61433 -
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_2D.h 41756 -
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_RECT.c 61435 -
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_RECT.h 41792 -
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_2D.c 61501 -
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_2D.h 44537 -
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_RECT.c 61503 -
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_RECT.h 44573 -
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.c 61461 -
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.h 44732 -
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61463 -
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.h 44768 -
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 61439 -
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 41298 -
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_RECT.c 61441 -
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_RECT.h 41334 -
brush_image_ALPHA_PASS_TEXTURE_2D.c 61399 -
brush_image_ALPHA_PASS_TEXTURE_2D.h 41546 -
brush_image_ALPHA_PASS_TEXTURE_RECT.c 61401 -
brush_image_ALPHA_PASS_TEXTURE_RECT.h 41582 -
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_2D.c 61465 -
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_2D.h 41862 -
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_RECT.c 61467 -
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_RECT.h 41898 -
brush_image_ANTIALIASING_REPETITION_TEXTURE_2D.c 61431 -
brush_image_ANTIALIASING_REPETITION_TEXTURE_2D.h 42313 -
brush_image_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61433 -
brush_image_ANTIALIASING_REPETITION_TEXTURE_RECT.h 42349 -
brush_image_DEBUG_OVERDRAW_TEXTURE_2D.c 61403 -
brush_image_DEBUG_OVERDRAW_TEXTURE_2D.h 39244 -
brush_image_DEBUG_OVERDRAW_TEXTURE_RECT.c 61405 -
brush_image_DEBUG_OVERDRAW_TEXTURE_RECT.h 39280 -
brush_image_TEXTURE_2D.c 61369 -
brush_image_TEXTURE_2D.h 39569 -
brush_image_TEXTURE_RECT.c 61371 -
brush_image_TEXTURE_RECT.h 39605 -
brush_linear_gradient.c 52647 -
brush_linear_gradient.h 37738 -
brush_linear_gradient_ALPHA_PASS.c 52677 -
brush_linear_gradient_ALPHA_PASS.h 38172 -
brush_linear_gradient_DEBUG_OVERDRAW.c 52681 -
brush_linear_gradient_DEBUG_OVERDRAW.h 36559 -
brush_mix_blend.c 54211 -
brush_mix_blend.h 45947 -
brush_mix_blend_ALPHA_PASS.c 54241 -
brush_mix_blend_ALPHA_PASS.h 46370 -
brush_mix_blend_DEBUG_OVERDRAW.c 54245 -
brush_mix_blend_DEBUG_OVERDRAW.h 37834 -
brush_opacity.c 47547 -
brush_opacity.h 35995 -
brush_opacity_ALPHA_PASS.c 47577 -
brush_opacity_ALPHA_PASS.h 36312 -
brush_opacity_ALPHA_PASS_ANTIALIASING.c 47609 -
brush_opacity_ALPHA_PASS_ANTIALIASING.h 36494 -
brush_opacity_ANTIALIASING.c 47579 -
brush_opacity_ANTIALIASING.h 36177 -
brush_opacity_ANTIALIASING_DEBUG_OVERDRAW.c 47613 -
brush_opacity_ANTIALIASING_DEBUG_OVERDRAW.h 35981 -
brush_opacity_DEBUG_OVERDRAW.c 47581 -
brush_opacity_DEBUG_OVERDRAW.h 35799 -
brush_solid.c 46233 -
brush_solid.h 32521 -
brush_solid_ALPHA_PASS.c 46263 -
brush_solid_ALPHA_PASS.h 32838 -
brush_solid_DEBUG_OVERDRAW.c 46267 -
brush_solid_DEBUG_OVERDRAW.h 32581 -
brush_yuv_image_ALPHA_PASS_TEXTURE_2D_YUV.c 58160 -
brush_yuv_image_ALPHA_PASS_TEXTURE_2D_YUV.h 48086 -
brush_yuv_image_ALPHA_PASS_TEXTURE_RECT_YUV.c 58162 -
brush_yuv_image_ALPHA_PASS_TEXTURE_RECT_YUV.h 47920 -
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_2D_YUV.c 58164 -
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_2D_YUV.h 46333 -
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_RECT_YUV.c 58166 -
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_RECT_YUV.h 46167 -
brush_yuv_image_TEXTURE_2D_YUV.c 58130 -
brush_yuv_image_TEXTURE_2D_YUV.h 47696 -
brush_yuv_image_TEXTURE_RECT_YUV.c 58132 -
brush_yuv_image_TEXTURE_RECT_YUV.h 47530 -
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 42558 -
cs_blur_ALPHA_TARGET.h 31679 -
cs_blur_COLOR_TARGET.c 42558 -
cs_blur_COLOR_TARGET.h 31683 -
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 43008 -
cs_clip_box_shadow_TEXTURE_2D.h 39682 -
cs_clip_rectangle.c 51905 -
cs_clip_rectangle.h 43954 -
cs_clip_rectangle_FAST_PATH.c 51934 -
cs_clip_rectangle_FAST_PATH.h 39553 -
cs_conic_gradient.c 24987 -
cs_conic_gradient.h 17845 -
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 24851 -
cs_linear_gradient.h 17342 -
cs_radial_gradient.c 25170 -
cs_radial_gradient.h 17889 -
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_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. 69332 -
cs_svg_filter_node.h 52169 -
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 13902 -
ps_clear.c 13607 -
ps_clear.h 6179 -
ps_copy.c 3576 -
ps_copy.h 6795 -
ps_quad_conic_gradient.c 42989 -
ps_quad_conic_gradient.h 38140 -
ps_quad_gradient.c 51740 -
ps_quad_gradient.h 45453 -
ps_quad_mask.c 47134 -
ps_quad_mask.h 41295 -
ps_quad_mask_FAST_PATH.c 47163 -
ps_quad_mask_FAST_PATH.h 36834 -
ps_quad_radial_gradient.c 42755 -
ps_quad_radial_gradient.h 39490 -
ps_quad_textured.c 40436 -
ps_quad_textured.h 34967 -
ps_split_composite.c 38496 -
ps_split_composite.h 35334 -
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_GLYPH_TRANSFORM_TEXTURE_2D.c 48672 -
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_GLYPH_TRANSFORM_TEXTURE_2D.h 38987 -
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 48637 -
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 37390 -
ps_text_run_ALPHA_PASS_GLYPH_TRANSFORM_TEXTURE_2D.c 48632 -
ps_text_run_ALPHA_PASS_GLYPH_TRANSFORM_TEXTURE_2D.h 38747 -
ps_text_run_ALPHA_PASS_TEXTURE_2D.c 48597 -
ps_text_run_ALPHA_PASS_TEXTURE_2D.h 37150 -
ps_text_run_DEBUG_OVERDRAW_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 48641 -
ps_text_run_DEBUG_OVERDRAW_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 37418 -
ps_text_run_DEBUG_OVERDRAW_TEXTURE_2D.c 48601 -
ps_text_run_DEBUG_OVERDRAW_TEXTURE_2D.h 37178 -