Name Description Size
brush_blend.c 58106
brush_blend.h 42807
brush_blend_ALPHA_PASS.c 58136
brush_blend_ALPHA_PASS.h 43124
brush_blend_DEBUG_OVERDRAW.c 58140
brush_blend_DEBUG_OVERDRAW.h 37766
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.c 61453
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.h 44942
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61455
brush_image_ADVANCED_BLEND_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.h 44978
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_2D.c 61391
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_2D.h 41756
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_RECT.c 61393
brush_image_ADVANCED_BLEND_ALPHA_PASS_TEXTURE_RECT.h 41792
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_2D.c 61459
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 61461
brush_image_ALPHA_PASS_ANTIALIASING_DUAL_SOURCE_BLENDING_REPETITION_TEXTURE_RECT.h 44573
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.c 61419
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_2D.h 44732
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61421
brush_image_ALPHA_PASS_ANTIALIASING_REPETITION_TEXTURE_RECT.h 44768
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 61397
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 41298
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_RECT.c 61399
brush_image_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_RECT.h 41334
brush_image_ALPHA_PASS_TEXTURE_2D.c 61357
brush_image_ALPHA_PASS_TEXTURE_2D.h 41546
brush_image_ALPHA_PASS_TEXTURE_RECT.c 61359
brush_image_ALPHA_PASS_TEXTURE_RECT.h 41582
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_2D.c 61423
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_2D.h 41862
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_RECT.c 61425
brush_image_ANTIALIASING_DEBUG_OVERDRAW_REPETITION_TEXTURE_RECT.h 41898
brush_image_ANTIALIASING_REPETITION_TEXTURE_2D.c 61389
brush_image_ANTIALIASING_REPETITION_TEXTURE_2D.h 42313
brush_image_ANTIALIASING_REPETITION_TEXTURE_RECT.c 61391
brush_image_ANTIALIASING_REPETITION_TEXTURE_RECT.h 42349
brush_image_DEBUG_OVERDRAW_TEXTURE_2D.c 61361
brush_image_DEBUG_OVERDRAW_TEXTURE_2D.h 39244
brush_image_DEBUG_OVERDRAW_TEXTURE_RECT.c 61363
brush_image_DEBUG_OVERDRAW_TEXTURE_RECT.h 39280
brush_image_TEXTURE_2D.c 61327
brush_image_TEXTURE_2D.h 39569
brush_image_TEXTURE_RECT.c 61329
brush_image_TEXTURE_RECT.h 39605
brush_linear_gradient.c 52605
brush_linear_gradient.h 37738
brush_linear_gradient_ALPHA_PASS.c 52635
brush_linear_gradient_ALPHA_PASS.h 38172
brush_linear_gradient_DEBUG_OVERDRAW.c 52639
brush_linear_gradient_DEBUG_OVERDRAW.h 36559
brush_mix_blend.c 54169
brush_mix_blend.h 45947
brush_mix_blend_ALPHA_PASS.c 54199
brush_mix_blend_ALPHA_PASS.h 46370
brush_mix_blend_DEBUG_OVERDRAW.c 54203
brush_mix_blend_DEBUG_OVERDRAW.h 37834
brush_opacity.c 47505
brush_opacity.h 35995
brush_opacity_ALPHA_PASS.c 47535
brush_opacity_ALPHA_PASS.h 36312
brush_opacity_ALPHA_PASS_ANTIALIASING.c 47567
brush_opacity_ALPHA_PASS_ANTIALIASING.h 36494
brush_opacity_ANTIALIASING.c 47537
brush_opacity_ANTIALIASING.h 36177
brush_opacity_ANTIALIASING_DEBUG_OVERDRAW.c 47571
brush_opacity_ANTIALIASING_DEBUG_OVERDRAW.h 35981
brush_opacity_DEBUG_OVERDRAW.c 47539
brush_opacity_DEBUG_OVERDRAW.h 35799
brush_solid.c 46191
brush_solid.h 32521
brush_solid_ALPHA_PASS.c 46221
brush_solid_ALPHA_PASS.h 32838
brush_solid_DEBUG_OVERDRAW.c 46225
brush_solid_DEBUG_OVERDRAW.h 32581
brush_yuv_image_ALPHA_PASS_TEXTURE_2D_YUV.c 58118
brush_yuv_image_ALPHA_PASS_TEXTURE_2D_YUV.h 48086
brush_yuv_image_ALPHA_PASS_TEXTURE_RECT_YUV.c 58120
brush_yuv_image_ALPHA_PASS_TEXTURE_RECT_YUV.h 47920
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_2D_YUV.c 58122
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_2D_YUV.h 46333
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_RECT_YUV.c 58124
brush_yuv_image_DEBUG_OVERDRAW_TEXTURE_RECT_YUV.h 46167
brush_yuv_image_TEXTURE_2D_YUV.c 58088
brush_yuv_image_TEXTURE_2D_YUV.h 47696
brush_yuv_image_TEXTURE_RECT_YUV.c 58090
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 42516
cs_blur_ALPHA_TARGET.h 31679
cs_blur_COLOR_TARGET.c 42516
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 42934
cs_clip_box_shadow_TEXTURE_2D.h 39682
cs_clip_rectangle.c 51831
cs_clip_rectangle.h 43954
cs_clip_rectangle_FAST_PATH.c 51860
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. 69290
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 43248
ps_quad_conic_gradient.h 38400
ps_quad_gradient.c 51996
ps_quad_gradient.h 45704
ps_quad_mask.c 47365
ps_quad_mask.h 41523
ps_quad_mask_FAST_PATH.c 47394
ps_quad_mask_FAST_PATH.h 37062
ps_quad_radial_gradient.c 43014
ps_quad_radial_gradient.h 39750
ps_quad_textured.c 40667
ps_quad_textured.h 35195
ps_split_composite.c 38454
ps_split_composite.h 35334
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_GLYPH_TRANSFORM_TEXTURE_2D.c 47949
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_GLYPH_TRANSFORM_TEXTURE_2D.h 38509
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 47914
ps_text_run_ALPHA_PASS_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 36912
ps_text_run_ALPHA_PASS_GLYPH_TRANSFORM_TEXTURE_2D.c 47909
ps_text_run_ALPHA_PASS_GLYPH_TRANSFORM_TEXTURE_2D.h 38269
ps_text_run_ALPHA_PASS_TEXTURE_2D.c 47874
ps_text_run_ALPHA_PASS_TEXTURE_2D.h 36672
ps_text_run_DEBUG_OVERDRAW_DUAL_SOURCE_BLENDING_TEXTURE_2D.c 47918
ps_text_run_DEBUG_OVERDRAW_DUAL_SOURCE_BLENDING_TEXTURE_2D.h 36940
ps_text_run_DEBUG_OVERDRAW_TEXTURE_2D.c 47878
ps_text_run_DEBUG_OVERDRAW_TEXTURE_2D.h 36700