diff options
Diffstat (limited to 'gfx/wr/webrender/src/renderer/shade.rs')
-rw-r--r-- | gfx/wr/webrender/src/renderer/shade.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/gfx/wr/webrender/src/renderer/shade.rs b/gfx/wr/webrender/src/renderer/shade.rs index 96e8982aa0..5463e8eb67 100644 --- a/gfx/wr/webrender/src/renderer/shade.rs +++ b/gfx/wr/webrender/src/renderer/shade.rs @@ -263,6 +263,7 @@ impl LazilyCompiledShader { VertexArrayKind::Scale => &desc::SCALE, VertexArrayKind::Resolve => &desc::RESOLVE, VertexArrayKind::SvgFilter => &desc::SVG_FILTER, + VertexArrayKind::SvgFilterNode => &desc::SVG_FILTER_NODE, VertexArrayKind::Composite => &desc::COMPOSITE, VertexArrayKind::Clear => &desc::CLEAR, VertexArrayKind::Copy => &desc::COPY, @@ -601,6 +602,7 @@ pub struct Shaders { pub cs_radial_gradient: LazilyCompiledShader, pub cs_conic_gradient: LazilyCompiledShader, pub cs_svg_filter: LazilyCompiledShader, + pub cs_svg_filter_node: LazilyCompiledShader, // Brush shaders brush_solid: BrushShader, @@ -632,6 +634,8 @@ pub struct Shaders { ps_split_composite: LazilyCompiledShader, pub ps_quad_textured: LazilyCompiledShader, + pub ps_quad_radial_gradient: LazilyCompiledShader, + pub ps_quad_conic_gradient: LazilyCompiledShader, pub ps_mask: LazilyCompiledShader, pub ps_mask_fast: LazilyCompiledShader, pub ps_clear: LazilyCompiledShader, @@ -768,6 +772,16 @@ impl Shaders { profile, )?; + let cs_svg_filter_node = LazilyCompiledShader::new( + ShaderKind::Cache(VertexArrayKind::SvgFilterNode), + "cs_svg_filter_node", + &[], + device, + options.precache_flags, + &shader_list, + profile, + )?; + let ps_mask = LazilyCompiledShader::new( ShaderKind::Cache(VertexArrayKind::Mask), "ps_quad_mask", @@ -888,6 +902,26 @@ impl Shaders { profile, )?; + let ps_quad_radial_gradient = LazilyCompiledShader::new( + ShaderKind::Primitive, + "ps_quad_radial_gradient", + &[], + device, + options.precache_flags, + &shader_list, + profile, + )?; + + let ps_quad_conic_gradient = LazilyCompiledShader::new( + ShaderKind::Primitive, + "ps_quad_conic_gradient", + &[], + device, + options.precache_flags, + &shader_list, + profile, + )?; + let ps_split_composite = LazilyCompiledShader::new( ShaderKind::Primitive, "ps_split_composite", @@ -1107,6 +1141,7 @@ impl Shaders { cs_border_solid, cs_scale, cs_svg_filter, + cs_svg_filter_node, brush_solid, brush_image, brush_fast_image, @@ -1122,6 +1157,8 @@ impl Shaders { ps_text_run, ps_text_run_dual_source, ps_quad_textured, + ps_quad_radial_gradient, + ps_quad_conic_gradient, ps_mask, ps_mask_fast, ps_split_composite, @@ -1160,6 +1197,8 @@ impl Shaders { ) -> &mut LazilyCompiledShader { match pattern { PatternKind::ColorOrTexture => &mut self.ps_quad_textured, + PatternKind::RadialGradient => &mut self.ps_quad_radial_gradient, + PatternKind::ConicGradient => &mut self.ps_quad_conic_gradient, PatternKind::Mask => unreachable!(), } } @@ -1175,6 +1214,12 @@ impl Shaders { BatchKind::Quad(PatternKind::ColorOrTexture) => { &mut self.ps_quad_textured } + BatchKind::Quad(PatternKind::RadialGradient) => { + &mut self.ps_quad_radial_gradient + } + BatchKind::Quad(PatternKind::ConicGradient) => { + &mut self.ps_quad_conic_gradient + } BatchKind::Quad(PatternKind::Mask) => { unreachable!(); } @@ -1268,6 +1313,7 @@ impl Shaders { self.cs_blur_a8.deinit(device); self.cs_blur_rgba8.deinit(device); self.cs_svg_filter.deinit(device); + self.cs_svg_filter_node.deinit(device); self.brush_solid.deinit(device); self.brush_blend.deinit(device); self.brush_mix_blend.deinit(device); @@ -1305,6 +1351,8 @@ impl Shaders { self.cs_border_segment.deinit(device); self.ps_split_composite.deinit(device); self.ps_quad_textured.deinit(device); + self.ps_quad_radial_gradient.deinit(device); + self.ps_quad_conic_gradient.deinit(device); self.ps_mask.deinit(device); self.ps_mask_fast.deinit(device); self.ps_clear.deinit(device); |