diff options
-rw-r--r-- | components/servo/Cargo.lock | 18 | ||||
-rw-r--r-- | components/servo/lib.rs | 1 | ||||
-rw-r--r-- | components/util/opts.rs | 11 | ||||
-rw-r--r-- | ports/cef/Cargo.lock | 18 | ||||
-rw-r--r-- | resources/shaders/ps_text_run.fs.glsl | 4 |
5 files changed, 34 insertions, 18 deletions
diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index b67414822dc..86daa9392f8 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -1098,7 +1098,7 @@ dependencies = [ "enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "gif 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "jpeg-decoder 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", "num-rational 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1153,11 +1153,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jpeg-decoder" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "rayon" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2832,7 +2832,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.8.0" -source = "git+https://github.com/servo/webrender#c5eb15a9b8030bbad15809aba7dd1b5906d96397" +source = "git+https://github.com/servo/webrender#13e06df7906b71aaa2aa621a012678cae1f88052" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2849,7 +2849,7 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "offscreen_gl_context 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.8.0 (git+https://github.com/servo/webrender)", ] @@ -2857,7 +2857,7 @@ dependencies = [ [[package]] name = "webrender_traits" version = "0.8.0" -source = "git+https://github.com/servo/webrender#c5eb15a9b8030bbad15809aba7dd1b5906d96397" +source = "git+https://github.com/servo/webrender#13e06df7906b71aaa2aa621a012678cae1f88052" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3067,7 +3067,7 @@ dependencies = [ "checksum io-surface 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c93eb4952ee5b903c4193391779f90209e1b75ba55911097fa494f35e975846" "checksum ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "675587430ede6756dd03fdfdf9888f22f83855fd131c8451d842a710b059e571" "checksum itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3088ea4baeceb0284ee9eea42f591226e6beaecf65373e41b38d95a1b8e7a1" -"checksum jpeg-decoder 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "70be4c5ed7c80bb403fb28d95d30dd97ccf76829e943ae2350037fd6cd6961b6" +"checksum jpeg-decoder 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4be50b418a1fc5d198588d9a4f682ef808a55db4084dce39d09bb0562525bb8c" "checksum js 0.1.3 (git+https://github.com/servo/rust-mozjs)" = "<none>" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "09c9d3760673c427d46f91a0350f0a84a52e6bc5a84adf26dc610b6c52436630" @@ -3133,7 +3133,7 @@ dependencies = [ "checksum quickersort 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e952ea7699262481636004bc4ab8afaccf2bc13f91b79d1aee6617bd8fc39651" "checksum quote 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1e0c9bc6bfb0a60d539aab6e338207c1a5456e62f5bd5375132cee119aa4b3" "checksum rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2791d88c6defac799c3f20d74f094ca33b9332612d9aef9078519c82e4fe04a5" -"checksum rayon 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0783f5880c56f5a308e219ac9309dbe781e064741dd5def4c617c440890305" +"checksum rayon 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3b6a6e05e0e6b703e9f2ad266eb63f3712e693a17a2702b95a23de14ce8defa9" "checksum ref_slice 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "546bb4aa91c85f232732cc5b3c8097ea97ae9a77304f9ab4df8b203ff7672dad" "checksum regex 0.1.76 (registry+https://github.com/rust-lang/crates.io-index)" = "63b49f873f36ddc838d773972511e5fed2ef7350885af07d58e2f48ce8073dcd" "checksum regex-syntax 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279401017ae31cf4e15344aa3f085d0e2e5c1e70067289ef906906fdbe92c8fd" diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 023015e56fa..428ec905680 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -166,6 +166,7 @@ impl<Window> Browser<Window> where Window: WindowMethods + 'static { precache_shaders: opts.precache_shaders, enable_scrollbars: opts.output_file.is_none(), renderer_kind: renderer_kind, + enable_subpixel_aa: opts.enable_subpixel_text_antialiasing, }) }; diff --git a/components/util/opts.rs b/components/util/opts.rs index d82c9f5a5d7..cf7c5cafed2 100644 --- a/components/util/opts.rs +++ b/components/util/opts.rs @@ -109,6 +109,11 @@ pub struct Opts { /// font for layout tests. pub enable_text_antialiasing: bool, + /// If set with --enable-subpixel, use subpixel antialiasing for glyphs. In the future + /// this will likely become the default, but for now it's opt-in while we work + /// out any bugs and improve the implementation. + pub enable_subpixel_text_antialiasing: bool, + /// If set with --disable-canvas-aa, disable antialiasing on the HTML canvas element. /// Like --disable-text-aa, this is useful for reftests where pixel perfect results are required. pub enable_canvas_antialiasing: bool, @@ -241,6 +246,9 @@ pub struct DebugOptions { /// Disable antialiasing of rendered text. pub disable_text_aa: bool, + /// Enable subpixel antialiasing of rendered text. + pub enable_subpixel_aa: bool, + /// Disable antialiasing of rendered text on the HTML canvas element. pub disable_canvas_aa: bool, @@ -343,6 +351,7 @@ impl DebugOptions { "help" => debug_options.help = true, "bubble-widths" => debug_options.bubble_widths = true, "disable-text-aa" => debug_options.disable_text_aa = true, + "enable-subpixel-aa" => debug_options.enable_subpixel_aa = true, "disable-canvas-aa" => debug_options.disable_text_aa = true, "dump-style-tree" => debug_options.dump_style_tree = true, "dump-rule-tree" => debug_options.dump_rule_tree = true, @@ -516,6 +525,7 @@ pub fn default_opts() -> Opts { show_debug_parallel_layout: false, paint_flashing: false, enable_text_antialiasing: false, + enable_subpixel_text_antialiasing: false, enable_canvas_antialiasing: false, trace_layout: false, debugger_port: None, @@ -830,6 +840,7 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult { show_debug_parallel_layout: debug_options.show_parallel_layout, paint_flashing: debug_options.paint_flashing, enable_text_antialiasing: !debug_options.disable_text_aa, + enable_subpixel_text_antialiasing: debug_options.enable_subpixel_aa, enable_canvas_antialiasing: !debug_options.disable_canvas_aa, dump_style_tree: debug_options.dump_style_tree, dump_rule_tree: debug_options.dump_rule_tree, diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index d5ee02102b6..f18b08435d9 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -1003,7 +1003,7 @@ dependencies = [ "enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "gif 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "jpeg-decoder 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", "num-rational 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1058,11 +1058,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jpeg-decoder" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1841,7 +1841,7 @@ dependencies = [ [[package]] name = "rayon" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2690,7 +2690,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.8.0" -source = "git+https://github.com/servo/webrender#c5eb15a9b8030bbad15809aba7dd1b5906d96397" +source = "git+https://github.com/servo/webrender#13e06df7906b71aaa2aa621a012678cae1f88052" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2707,7 +2707,7 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "offscreen_gl_context 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.8.0 (git+https://github.com/servo/webrender)", ] @@ -2715,7 +2715,7 @@ dependencies = [ [[package]] name = "webrender_traits" version = "0.8.0" -source = "git+https://github.com/servo/webrender#c5eb15a9b8030bbad15809aba7dd1b5906d96397" +source = "git+https://github.com/servo/webrender#13e06df7906b71aaa2aa621a012678cae1f88052" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2919,7 +2919,7 @@ dependencies = [ "checksum io-surface 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c93eb4952ee5b903c4193391779f90209e1b75ba55911097fa494f35e975846" "checksum ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "675587430ede6756dd03fdfdf9888f22f83855fd131c8451d842a710b059e571" "checksum itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3088ea4baeceb0284ee9eea42f591226e6beaecf65373e41b38d95a1b8e7a1" -"checksum jpeg-decoder 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "70be4c5ed7c80bb403fb28d95d30dd97ccf76829e943ae2350037fd6cd6961b6" +"checksum jpeg-decoder 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4be50b418a1fc5d198588d9a4f682ef808a55db4084dce39d09bb0562525bb8c" "checksum js 0.1.3 (git+https://github.com/servo/rust-mozjs)" = "<none>" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "09c9d3760673c427d46f91a0350f0a84a52e6bc5a84adf26dc610b6c52436630" @@ -2985,7 +2985,7 @@ dependencies = [ "checksum quickersort 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e952ea7699262481636004bc4ab8afaccf2bc13f91b79d1aee6617bd8fc39651" "checksum quote 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1e0c9bc6bfb0a60d539aab6e338207c1a5456e62f5bd5375132cee119aa4b3" "checksum rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2791d88c6defac799c3f20d74f094ca33b9332612d9aef9078519c82e4fe04a5" -"checksum rayon 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0783f5880c56f5a308e219ac9309dbe781e064741dd5def4c617c440890305" +"checksum rayon 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3b6a6e05e0e6b703e9f2ad266eb63f3712e693a17a2702b95a23de14ce8defa9" "checksum ref_slice 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "546bb4aa91c85f232732cc5b3c8097ea97ae9a77304f9ab4df8b203ff7672dad" "checksum regex 0.1.76 (registry+https://github.com/rust-lang/crates.io-index)" = "63b49f873f36ddc838d773972511e5fed2ef7350885af07d58e2f48ce8073dcd" "checksum regex-syntax 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279401017ae31cf4e15344aa3f085d0e2e5c1e70067289ef906906fdbe92c8fd" diff --git a/resources/shaders/ps_text_run.fs.glsl b/resources/shaders/ps_text_run.fs.glsl index 79051beb583..f0948b207e3 100644 --- a/resources/shaders/ps_text_run.fs.glsl +++ b/resources/shaders/ps_text_run.fs.glsl @@ -3,6 +3,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ void main(void) { +#ifdef WR_FEATURE_SUBPIXEL_AA + oFragColor = texture(sDiffuse, vUv); +#else float a = texture(sDiffuse, vUv).a; #ifdef WR_FEATURE_TRANSFORM float alpha = 0.0; @@ -10,4 +13,5 @@ void main(void) { a *= alpha; #endif oFragColor = vec4(vColor.rgb, vColor.a * a); +#endif } |