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 |
|
56079 |
cs_clip_rectangle.h |
|
46245 |
cs_clip_rectangle_FAST_PATH.c |
|
56108 |
cs_clip_rectangle_FAST_PATH.h |
|
41483 |
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 |
|
46551 |
ps_quad_mask.h |
|
41104 |
ps_quad_mask_FAST_PATH.c |
|
46580 |
ps_quad_mask_FAST_PATH.h |
|
36546 |
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 |