Name Description Size
brush_blend.c 58531
brush_blend.h 42000
brush_blend_ALPHA_PASS.c 58561
brush_blend_ALPHA_PASS.h 42317
brush_blend_DEBUG_OVERDRAW.c 58565
brush_blend_DEBUG_OVERDRAW.h 36977
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.c 61713
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.h 44007
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61715
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.h 44043
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_2D.c 61651
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_2D.h 40685
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_RECT.c 61653
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_RECT.h 40721
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_2D.c 61719
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_2D.h 43602
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_RECT.c 61721
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_RECT.h 43638
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.c 61679
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.h 43797
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61681
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.h 43833
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 61657
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 40227
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_RECT.c 61659
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_RECT.h 40263
brush_image_ALPHA_PASS_TEXTURE_2D.c 61617
brush_image_ALPHA_PASS_TEXTURE_2D.h 40475
brush_image_ALPHA_PASS_TEXTURE_RECT.c 61619
brush_image_ALPHA_PASS_TEXTURE_RECT.h 40511
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_2D.c 61683
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_2D.h 40927
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_RECT.c 61685
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_RECT.h 40963
brush_image_ANTIALIASING_REPETITION_TEXTURE_2D.c 61649
brush_image_ANTIALIASING_REPETITION_TEXTURE_2D.h 41378
brush_image_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61651
brush_image_ANTIALIASING_REPETITION_TEXTURE_RECT.h 41414
brush_image_DEBUG_OVERDRAW_TEXTURE_2D.c 61621
brush_image_DEBUG_OVERDRAW_TEXTURE_2D.h 38173
brush_image_DEBUG_OVERDRAW_TEXTURE_RECT.c 61623
brush_image_DEBUG_OVERDRAW_TEXTURE_RECT.h 38209
brush_image_TEXTURE_2D.c 61587
brush_image_TEXTURE_2D.h 38498
brush_image_TEXTURE_RECT.c 61589
brush_image_TEXTURE_RECT.h 38534
brush_linear_gradient.c 54405
brush_linear_gradient.h 37692
brush_linear_gradient_ALPHA_PASS.c 54435
brush_linear_gradient_ALPHA_PASS.h 38126
brush_linear_gradient_DEBUG_OVERDRAW.c 54439
brush_linear_gradient_DEBUG_OVERDRAW.h 36618
brush_mix_blend.c 54607
brush_mix_blend.h 45164
brush_mix_blend_ALPHA_PASS.c 54637
brush_mix_blend_ALPHA_PASS.h 45587
brush_mix_blend_DEBUG_OVERDRAW.c 54641
brush_mix_blend_DEBUG_OVERDRAW.h 37051
brush_opacity.c 47943
brush_opacity.h 35217
brush_opacity_ALPHA_PASS.c 47973
brush_opacity_ALPHA_PASS.h 35534
brush_opacity_ALPHA_PASS_ANTIALIASING.c 48005
brush_opacity_ALPHA_PASS_ANTIALIASING.h 35716
brush_opacity_ANTIALIASING.c 47975
brush_opacity_ANTIALIASING.h 35399
brush_opacity_ANTIALIASING_DEBUG_OVERDRAW.c 48009
brush_opacity_ANTIALIASING_DEBUG_OVERDRAW.h 35203
brush_opacity_DEBUG_OVERDRAW.c 47977
brush_opacity_DEBUG_OVERDRAW.h 35021
brush_solid.c 46627
brush_solid.h 31882
brush_solid_ALPHA_PASS.c 46657
brush_solid_ALPHA_PASS.h 32199
brush_solid_DEBUG_OVERDRAW.c 46661
brush_solid_DEBUG_OVERDRAW.h 31942
brush_yuv_image_ALPHA_PASS_TEXTURE_2D_YUV.c 58554
brush_yuv_image_ALPHA_PASS_TEXTURE_2D_YUV.h 47440
brush_yuv_image_ALPHA_PASS_TEXTURE_RECT_YUV.c 58556
brush_yuv_image_ALPHA_PASS_TEXTURE_RECT_YUV.h 47274
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_2D_YUV.c 58558
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_2D_YUV.h 45687
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_RECT_YUV.c 58560
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_RECT_YUV.h 45521
brush_yuv_image_TEXTURE_2D_YUV.c 58524
brush_yuv_image_TEXTURE_2D_YUV.h 47050
brush_yuv_image_TEXTURE_RECT_YUV.c 58526
brush_yuv_image_TEXTURE_RECT_YUV.h 46884
composite_FAST_PATH_TEXTURE_2D.c 28528
composite_FAST_PATH_TEXTURE_2D.h 9282
composite_FAST_PATH_TEXTURE_RECT.c 28530
composite_FAST_PATH_TEXTURE_RECT.h 9289
composite_TEXTURE_2D.c 28499
composite_TEXTURE_2D.h 9628
composite_TEXTURE_2D_YUV.c 28522
composite_TEXTURE_2D_YUV.h 21894
composite_TEXTURE_RECT.c 28501
composite_TEXTURE_RECT.h 9606
composite_TEXTURE_RECT_YUV.c 28524
composite_TEXTURE_RECT_YUV.h 21821
cs_blur_ALPHA_TARGET.c 41997
cs_blur_ALPHA_TARGET.h 30089
cs_blur_COLOR_TARGET.c 41997
cs_blur_COLOR_TARGET.h 30093
cs_border_segment.c 32565
cs_border_segment.h 21508
cs_border_solid.c 23834
cs_border_solid.h 15952
cs_clip_box_shadow_TEXTURE_2D.c 43419
cs_clip_box_shadow_TEXTURE_2D.h 38955
cs_clip_rectangle.c 56350
cs_clip_rectangle.h 46245
cs_clip_rectangle_FAST_PATH.c 56379
cs_clip_rectangle_FAST_PATH.h 41844
cs_conic_gradient.c 28554
cs_conic_gradient.h 20031
cs_fast_linear_gradient.c 13851
cs_fast_linear_gradient.h 7218
cs_line_decoration.c 18900
cs_line_decoration.h 10315
cs_linear_gradient.c 28185
cs_linear_gradient.h 19528
cs_radial_gradient.c 28559
cs_radial_gradient.h 20075
cs_scale_TEXTURE_2D.c 15246
cs_scale_TEXTURE_2D.h 8318
cs_scale_TEXTURE_RECT.c 15248
cs_scale_TEXTURE_RECT.h 8359
cs_svg_filter.c 54532
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. 69620
cs_svg_filter_node.h 51290
debug_color.c 15159
debug_color.h 5942
debug_font.c 15317
debug_font.h 7546
load_shader.h 13547
ps_clear.c 13670
ps_clear.h 6179
ps_copy.c 3576
ps_copy.h 6795
ps_quad_conic_gradient.c 42116
ps_quad_conic_gradient.h 37890
ps_quad_mask.c 46678
ps_quad_mask.h 41104
ps_quad_mask_FAST_PATH.c 46707
ps_quad_mask_FAST_PATH.h 36643
ps_quad_radial_gradient.c 41703
ps_quad_radial_gradient.h 39240
ps_quad_textured.c 39980
ps_quad_textured.h 34895
ps_split_composite.c 39031
ps_split_composite.h 34759
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_GLYPH_TRANSFORM_TEXTURE_2D.c 48417
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 48382
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 36271
ps_text_run_ALPHA_PASS_GLYPH_TRANSFORM_TEXTURE_2D.c 48377
ps_text_run_ALPHA_PASS_GLYPH_TRANSFORM_TEXTURE_2D.h 37628
ps_text_run_ALPHA_PASS_TEXTURE_2D.c 48342
ps_text_run_ALPHA_PASS_TEXTURE_2D.h 36031
ps_text_run_DEBUG_OVERDRAW_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 48386
ps_text_run_DEBUG_OVERDRAW_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 36299
ps_text_run_DEBUG_OVERDRAW_TEXTURE_2D.c 48346
ps_text_run_DEBUG_OVERDRAW_TEXTURE_2D.h 36059