diff --git a/servo/Cargo.lock b/servo/Cargo.lock index a97f1d01fee5..5e84766637d9 100644 --- a/servo/Cargo.lock +++ b/servo/Cargo.lock @@ -96,13 +96,13 @@ dependencies = [ [[package]] name = "azure" -version = "0.10.0" -source = "git+https://github.com/servo/rust-azure#d5aa52563e620be05aa52727ce52065ac54b0751" +version = "0.10.1" +source = "git+https://github.com/servo/rust-azure#e8c85e2edf9c586cf0c944e285a1f9076bd0acb7" dependencies = [ "cmake 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-text 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-text 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -283,7 +283,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "canvas" version = "0.0.1" dependencies = [ - "azure 0.10.0 (git+https://github.com/servo/rust-azure)", + "azure 0.10.1 (git+https://github.com/servo/rust-azure)", "canvas_traits 0.0.1", "cssparser 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -394,12 +394,12 @@ dependencies = [ [[package]] name = "cocoa" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -445,7 +445,7 @@ dependencies = [ "servo_url 0.0.1", "style_traits 0.0.1", "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", - "webrender 0.11.1 (git+https://github.com/servo/webrender)", + "webrender 0.12.0 (git+https://github.com/servo/webrender)", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", ] @@ -524,7 +524,7 @@ dependencies = [ [[package]] name = "core-graphics" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -534,11 +534,11 @@ dependencies = [ [[package]] name = "core-text" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -680,7 +680,7 @@ dependencies = [ [[package]] name = "dwrote" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -696,7 +696,7 @@ dependencies = [ name = "embedding" version = "0.0.1" dependencies = [ - "cocoa 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cocoa 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "compositing 0.0.1", "devtools 0.0.1", "euclid 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -907,6 +907,14 @@ dependencies = [ "mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "gamma-lut" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "gaol" version = "0.0.1" @@ -965,9 +973,9 @@ dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-text 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dwrote 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-text 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "dwrote 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "fontsan 0.3.2 (git+https://github.com/servo/fontsan)", @@ -1072,7 +1080,7 @@ dependencies = [ "osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "script_traits 0.0.1", "servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "servo-glutin 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "servo-glutin 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "servo_config 0.0.1", "servo_geometry 0.0.1", "servo_url 0.0.1", @@ -1523,7 +1531,7 @@ dependencies = [ "style 0.0.1", "url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "webdriver_server 0.0.1", - "webrender 0.11.1 (git+https://github.com/servo/webrender)", + "webrender 0.12.0 (git+https://github.com/servo/webrender)", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", "webvr 0.0.1", "webvr_traits 0.0.1", @@ -2521,14 +2529,14 @@ dependencies = [ [[package]] name = "servo-glutin" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "android_glue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cgl 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "cocoa 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cocoa 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "dwmapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2564,7 +2572,7 @@ dependencies = [ "servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "servo-fontconfig-sys 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "servo-freetype-sys 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "servo-glutin 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "servo-glutin 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "x11 2.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3242,20 +3250,21 @@ dependencies = [ [[package]] name = "webrender" -version = "0.11.1" -source = "git+https://github.com/servo/webrender#2251e98c32da123a36b2d04995c62e9a28ed82b7" +version = "0.12.0" +source = "git+https://github.com/servo/webrender#c8ca454555935c78f9b271dbfcf6fc6171edc9c9" 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)", "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-text 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dwrote 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-text 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "dwrote 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gamma-lut 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3269,12 +3278,12 @@ dependencies = [ [[package]] name = "webrender_traits" version = "0.11.0" -source = "git+https://github.com/servo/webrender#2251e98c32da123a36b2d04995c62e9a28ed82b7" +source = "git+https://github.com/servo/webrender#c8ca454555935c78f9b271dbfcf6fc6171edc9c9" 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)", - "core-graphics 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "dwrote 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "dwrote 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3410,7 +3419,7 @@ dependencies = [ "checksum aster 0.38.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2c9b49e42a449c0b79d8acb91db37621de0978064dca7d3288ddcf030123e5b3" "checksum atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2dcb6e6d35f20276943cc04bb98e538b348d525a04ac79c10021561d202f21" "checksum audio-video-metadata 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "03da2550cb89fe3faf218c179261c26cf7891c4234707c15f5d09ebb32ae2400" -"checksum azure 0.10.0 (git+https://github.com/servo/rust-azure)" = "" +"checksum azure 0.10.1 (git+https://github.com/servo/rust-azure)" = "" "checksum backtrace 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f551bc2ddd53aea015d453ef0b635af89444afa5ed2405dd0b2062ad5d600d80" "checksum backtrace-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3602e8d8c43336088a8505fa55cae2b3884a9be29440863a11528a42f46f6bb7" "checksum bincode 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9fbba641f73d3e74a5431d4a6d9e42a70bcce76d466d796c852ba1db31ba41bc" @@ -3436,15 +3445,15 @@ dependencies = [ "checksum clap 2.19.3 (registry+https://github.com/rust-lang/crates.io-index)" = "95b78f3fe0fc94c13c731714363260e04b557a637166f33a4570d3189d642374" "checksum clippy_lints 0.0.107 (registry+https://github.com/rust-lang/crates.io-index)" = "6a5b967814b5912082a96a18833dcf36d793b13488ab145e485d97eac4a41c80" "checksum cmake 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "a3a6805df695087e7c1bcd9a82e03ad6fb864c8e67ac41b1348229ce5b7f0407" -"checksum cocoa 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e1be5fd98bb7e8ef0eea233a4984f4e85ecdcfa002a90b8b12b7a20faf44dc1" +"checksum cocoa 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2b7c71e7da239e6c2a5916b42dba3ed087b46ca613de687fa17560ee84b1adf5" "checksum color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a475fc4af42d83d28adf72968d9bcfaf035a1a9381642d8e85d8a04957767b0d" "checksum compiletest_rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f3f344389765ad7bec166f64c1b39ed6dd2b54d81c4c5dd8af789169351d380c" "checksum content-blocker 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5893d533bce3cea1f59dd239ae577d4f88e4eccb4bed3b1d9cd51a33b187f7f6" "checksum cookie 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e3d6405328b6edb412158b3b7710e2634e23f3614b9bb1c412df7952489a626" "checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67" "checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d" -"checksum core-graphics 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "66e998abb8823fecd2a8a7205429b17a340d447d8c69b3bce86846dcdea3e33b" -"checksum core-text 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2debbf22a8358e5e270e958b6d65694667be7a2ef9c3a2bf05a0872a3124dc98" +"checksum core-graphics 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8bd94d0f0b2bbcbfeeb670fc48654afde7a13c2c551ca9d2b9a6cfafdafe1a64" +"checksum core-text 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "642fa40165b6c53bbd3f636951ffc3e1a3fd3c47e7d00598523c3e8c9321ed0c" "checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97" "checksum cssparser 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bd03c0b039e63f6756e905f902f881cb547a5393229e6bfa9b0b69646cc1d83f" "checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850" @@ -3456,7 +3465,7 @@ dependencies = [ "checksum dlib 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "148bce4ce1c36c4509f29cb54e62c2bd265551a9b00b38070fad551a851866ec" "checksum dtoa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0dd841b58510c9618291ffa448da2e4e0f699d984d436122372f446dae62263d" "checksum dwmapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07c4c7cc7b396419bc0a4d90371d0cee16cb5053b53647d287c0b728000c41fe" -"checksum dwrote 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "570707c940fc7b7fc627011fe2c8abedaea562b03bde715e3ee2dd3d6857a03c" +"checksum dwrote 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5998238340a4625b5e1cf52341bd330c5ad91a39a41527ed8af20f95a258a96c" "checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" "checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" "checksum encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" @@ -3479,6 +3488,7 @@ dependencies = [ "checksum freetype 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fde23272c687e4570aefec06cb71174ec0f5284b725deac4e77ba2665d635faf" "checksum fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bcd414e5a1a979b931bb92f41b7a54106d3f6d2e6c253e9ce943b7cd468251ef" "checksum futf 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7a9689380a2553b51c564b3d9178075c68ebd0b397972c783acfd28b46c28ad" +"checksum gamma-lut 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca6b9023d24a7faff85abfa82fabd382f7ecbbde95af5143f1c215fd94e91cd" "checksum gaol 0.0.1 (git+https://github.com/servo/gaol)" = "" "checksum gcc 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)" = "3689e1982a563af74960ae3a4758aa632bb8fd984cfc3cc3b60ee6109477ab6e" "checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518" @@ -3595,7 +3605,7 @@ dependencies = [ "checksum servo-fontconfig 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "93f799b649b4a2bf362398910eca35240704c7e765e780349b2bb1070d892262" "checksum servo-fontconfig-sys 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a0af4a4d7746467921486e5c5420f815cc016a6bf5574210d8e9c00f4afae224" "checksum servo-freetype-sys 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9232032c2e85118c0282c6562c84cab12316e655491ba0a5d1905b2320060d1b" -"checksum servo-glutin 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6c32094e9b558e9bf8cec93b9f78fee88e7c30e90341c5014b08a54b1ddce4f7" +"checksum servo-glutin 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f065633fa298a2cb3b2ba0c6ac94646a0ad219b838ffbdf78452861ec100c67f" "checksum servo-skia 0.20130412.24 (registry+https://github.com/rust-lang/crates.io-index)" = "bb975cdf292243956e6b6acfac336ac8be0aa567e32bb89901be161e4003d0b3" "checksum sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" "checksum shared_library 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb04126b6fcfd2710fb5b6d18f4207b6c535f2850a7e1a43bcd526d44f30a79a" @@ -3653,7 +3663,7 @@ dependencies = [ "checksum wayland-sys 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9633f7fe5de56544215f82eaf1b76bf1b584becf7f08b58cbef4c2c7d10e803a" "checksum wayland-window 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "309b69d3a863c9c21422d889fb7d98cf02f8a2ca054960a49243ce5b67ad884c" "checksum webdriver 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cdc28802daddee94267a657ffeac2593a33881fb7a3a44fedd320b1319efcaf6" -"checksum webrender 0.11.1 (git+https://github.com/servo/webrender)" = "" +"checksum webrender 0.12.0 (git+https://github.com/servo/webrender)" = "" "checksum webrender_traits 0.11.0 (git+https://github.com/servo/webrender)" = "" "checksum websocket 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a1a6ea5ed0367f32eb3d94dcc58859ef4294b5f75ba983dbf56ac314af45d" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" diff --git a/servo/components/canvas/canvas_paint_thread.rs b/servo/components/canvas/canvas_paint_thread.rs index 447d60a28626..437785557367 100644 --- a/servo/components/canvas/canvas_paint_thread.rs +++ b/servo/components/canvas/canvas_paint_thread.rs @@ -559,9 +559,13 @@ impl<'a> CanvasPaintThread<'a> { self.drawtarget.snapshot().get_data_surface().with_data(|element| { let size = self.drawtarget.get_size(); self.webrender_api.update_image(self.webrender_image_key, - size.width as u32, - size.height as u32, - webrender_traits::ImageFormat::RGBA8, + webrender_traits::ImageDescriptor { + width: size.width as u32, + height: size.height as u32, + stride: None, + format: webrender_traits::ImageFormat::RGBA8, + is_opaque: false, + }, element.into()); let data = CanvasImageData { diff --git a/servo/components/canvas/webgl_paint_thread.rs b/servo/components/canvas/webgl_paint_thread.rs index e852742bc15b..7dcfabda1231 100644 --- a/servo/components/canvas/webgl_paint_thread.rs +++ b/servo/components/canvas/webgl_paint_thread.rs @@ -236,9 +236,13 @@ impl WebGLPaintThread { // TODO: This shouldn't be a common path, but try to avoid // the spurious clone(). webrender_api.update_image(image_key, - width as u32, - height as u32, - webrender_traits::ImageFormat::RGBA8, + webrender_traits::ImageDescriptor { + width: width as u32, + height: height as u32, + stride: None, + format: webrender_traits::ImageFormat::RGBA8, + is_opaque: false, + }, pixels.clone()); let image_data = CanvasImageData { diff --git a/servo/components/compositing/compositor.rs b/servo/components/compositing/compositor.rs index 49b92f8e1711..d0769c8a0ec5 100644 --- a/servo/components/compositing/compositor.rs +++ b/servo/components/compositing/compositor.rs @@ -739,6 +739,7 @@ impl IOCompositor { let pipeline_id = frame_tree.pipeline.id.to_webrender(); self.webrender_api.set_root_pipeline(pipeline_id); + self.webrender_api.generate_frame(); self.create_pipeline_details_for_frame_tree(&frame_tree); diff --git a/servo/components/gfx/Cargo.toml b/servo/components/gfx/Cargo.toml index 3f6ff4f7104c..f71d4d947231 100644 --- a/servo/components/gfx/Cargo.toml +++ b/servo/components/gfx/Cargo.toml @@ -49,7 +49,7 @@ features = ["serde_derive", "ipc"] [target.'cfg(target_os = "macos")'.dependencies] byteorder = "0.5" core-foundation = "0.2" -core-graphics = "0.4" +core-graphics = "0.5" core-text = "2.0" [target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies] diff --git a/servo/components/layout/webrender_helpers.rs b/servo/components/layout/webrender_helpers.rs index f222109089a6..dd4ab6b9f01a 100644 --- a/servo/components/layout/webrender_helpers.rs +++ b/servo/components/layout/webrender_helpers.rs @@ -246,7 +246,8 @@ impl WebRenderDisplayItemConverter for DisplayItem { item.text_run.font_key, item.text_color, item.text_run.actual_pt_size, - item.blur_radius); + item.blur_radius, + None); } } DisplayItem::Image(ref item) => { diff --git a/servo/components/layout_thread/lib.rs b/servo/components/layout_thread/lib.rs index 8297c6a725c1..8fe49ef5cd84 100644 --- a/servo/components/layout_thread/lib.rs +++ b/servo/components/layout_thread/lib.rs @@ -988,6 +988,7 @@ impl LayoutThread { webrender_traits::Epoch(epoch_number), viewport_size, builder); + self.webrender_api.generate_frame(); }); } diff --git a/servo/components/net/image_cache_thread.rs b/servo/components/net/image_cache_thread.rs index 2df54b8e30c6..51d8324bd481 100644 --- a/servo/components/net/image_cache_thread.rs +++ b/servo/components/net/image_cache_thread.rs @@ -33,6 +33,26 @@ use webrender_traits; /// MAYBE(Yoric): /// * For faster lookups, it might be useful to store the LoadKey in the DOM once we have performed a first load. +// TODO(gw): This is a port of the old is_image_opaque code from WR. +// Consider using SIMD to speed this up if it shows in profiles. +fn is_image_opaque(format: webrender_traits::ImageFormat, bytes: &[u8]) -> bool { + match format { + webrender_traits::ImageFormat::RGBA8 => { + let mut is_opaque = true; + for i in 0..(bytes.len() / 4) { + if bytes[i * 4 + 3] != 255 { + is_opaque = false; + break; + } + } + is_opaque + } + webrender_traits::ImageFormat::RGB8 => true, + webrender_traits::ImageFormat::A8 => false, + webrender_traits::ImageFormat::Invalid | webrender_traits::ImageFormat::RGBAF32 => unreachable!(), + } +} + /// Represents an image that is either being loaded /// by the resource thread, or decoded by a worker thread. struct PendingLoad { @@ -314,12 +334,15 @@ fn get_placeholder_image(webrender_api: &webrender_traits::RenderApi) -> io::Res let format = convert_format(image.format); let mut bytes = Vec::new(); bytes.extend_from_slice(&*image.bytes); + let descriptor = webrender_traits::ImageDescriptor { + width: image.width, + height: image.height, + stride: None, + format: format, + is_opaque: is_image_opaque(format, &bytes), + }; let data = webrender_traits::ImageData::new(bytes); - image.id = Some(webrender_api.add_image(image.width, - image.height, - None, - format, - data)); + image.id = Some(webrender_api.add_image(descriptor, data)); Ok(Arc::new(image)) } @@ -476,12 +499,15 @@ impl ImageCache { let format = convert_format(image.format); let mut bytes = Vec::new(); bytes.extend_from_slice(&*image.bytes); + let descriptor = webrender_traits::ImageDescriptor { + width: image.width, + height: image.height, + stride: None, + format: format, + is_opaque: is_image_opaque(format, &bytes), + }; let data = webrender_traits::ImageData::new(bytes); - image.id = Some(self.webrender_api.add_image(image.width, - image.height, - None, - format, - data)); + image.id = Some(self.webrender_api.add_image(descriptor, data)); } LoadResult::PlaceholderLoaded(..) | LoadResult::None => {} } diff --git a/servo/components/servo/lib.rs b/servo/components/servo/lib.rs index c7005629652a..9ce7bd971e40 100644 --- a/servo/components/servo/lib.rs +++ b/servo/components/servo/lib.rs @@ -162,13 +162,21 @@ impl Browser where Window: WindowMethods + 'static { webrender_traits::RendererKind::Native }; + let recorder = if opts.webrender_record { + let record_path = PathBuf::from("wr-record.bin"); + let recorder = Box::new(webrender::BinaryRecorder::new(&record_path)); + Some(recorder as Box) + } else { + None + }; + webrender::Renderer::new(webrender::RendererOptions { device_pixel_ratio: device_pixel_ratio, resource_override_path: Some(resource_path), enable_aa: opts.enable_text_antialiasing, enable_profiler: opts.webrender_stats, debug: opts.webrender_debug, - enable_recording: opts.webrender_record, + recorder: recorder, precache_shaders: opts.precache_shaders, enable_scrollbars: opts.output_file.is_none(), renderer_kind: renderer_kind, diff --git a/servo/ports/cef/Cargo.toml b/servo/ports/cef/Cargo.toml index 16d1396e933f..e378dfcbc620 100644 --- a/servo/ports/cef/Cargo.toml +++ b/servo/ports/cef/Cargo.toml @@ -42,7 +42,7 @@ features = ["serde_derive", "ipc"] [target.'cfg(target_os="macos")'.dependencies] objc = "0.2" -cocoa = "0.5" +cocoa = "0.6" [target.'cfg(target_os="linux")'.dependencies] x11 = "2.3"