Backed out changeset 106776ac6c20 (bug 1615694) for tidy build bustages.
authorArthur Iakab <aiakab@mozilla.com>
Tue, 18 Feb 2020 18:27:23 +0200
changeset 514411 9571edde56aaa5a3a3474bc1c042c6c42e80f25f
parent 514410 65dd9e70071acf3ef844ec09f93579282a5a5451
child 514412 920641826337ca6e7f9a8f090e63eb90d068c0c5
push id37135
push useropoprus@mozilla.com
push dateTue, 18 Feb 2020 21:33:59 +0000
treeherdermozilla-central@df596657bebc [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1615694
milestone75.0a1
backs out106776ac6c2056323c24fbc1e57c9eaee537e64c
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changeset 106776ac6c20 (bug 1615694) for tidy build bustages. CLOSED TREE
Cargo.lock
gfx/webrender_bindings/Cargo.toml
gfx/wr/Cargo.lock
gfx/wr/direct-composition/Cargo.toml
gfx/wr/example-compositor/compositor/Cargo.toml
gfx/wr/examples/Cargo.toml
gfx/wr/webrender/Cargo.toml
gfx/wr/webrender/src/device/gl.rs
gfx/wr/wrench/Cargo.toml
third_party/rust/gl_generator/.cargo-checksum.json
third_party/rust/gl_generator/Cargo.toml
third_party/rust/gl_generator/generators/debug_struct_gen.rs
third_party/rust/gl_generator/generators/global_gen.rs
third_party/rust/gl_generator/generators/struct_gen.rs
third_party/rust/gl_generator/generators/templates/types/gl.rs
third_party/rust/gl_generator/registry/parse.rs
third_party/rust/gleam/.cargo-checksum.json
third_party/rust/gleam/Cargo.toml
third_party/rust/gleam/build.rs
third_party/rust/gleam/src/gl.rs
third_party/rust/gleam/src/gl_fns.rs
third_party/rust/gleam/src/gles_fns.rs
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1632,30 +1632,30 @@ name = "gkrust_utils"
 version = "0.1.0"
 dependencies = [
  "nsstring",
  "uuid 0.8.1",
 ]
 
 [[package]]
 name = "gl_generator"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39a23d5e872a275135d66895d954269cf5e8661d234eb1c2480f4ce0d586acbd"
 dependencies = [
  "khronos_api",
  "log",
  "xml-rs",
 ]
 
 [[package]]
 name = "gleam"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "332d1f4e6c6181ed07178f84a552b2387d43ecf6821a86c22cfb3883ea3fb1b9"
+version = "0.6.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f46fd8874e043ffac0d638ed1567a2584f7814f6d72b4db37ab1689004a26c4"
 dependencies = [
  "gl_generator",
 ]
 
 [[package]]
 name = "glean-core"
 version = "24.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
--- a/gfx/webrender_bindings/Cargo.toml
+++ b/gfx/webrender_bindings/Cargo.toml
@@ -8,17 +8,17 @@ license = "MPL-2.0"
 webrender_debugger = ["webrender/debugger"]
 
 [dependencies]
 rayon = "1"
 num_cpus = "1.7.0"
 thread_profiler = "0.1.1"
 euclid = { version = "0.20.0", features = ["serde"] }
 app_units = "0.7"
-gleam = "0.9.2"
+gleam = "0.6.14"
 log = "0.4"
 nsstring = { path = "../../xpcom/rust/nsstring" }
 bincode = "1.0"
 uuid = { version = "0.8", features = ["v4"] }
 fxhash = "0.2.1"
 
 [dependencies.webrender]
 path = "../wr/webrender"
--- a/gfx/wr/Cargo.lock
+++ b/gfx/wr/Cargo.lock
@@ -183,17 +183,17 @@ name = "cfg-if"
 version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "cgl"
 version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "gleam 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "clap"
 version = "2.31.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
@@ -237,17 +237,17 @@ dependencies = [
  "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "compositor"
 version = "0.1.0"
 dependencies = [
  "compositor-windows 0.1.0",
- "gleam 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "webrender 0.61.0",
 ]
 
 [[package]]
 name = "compositor-windows"
 version = "0.1.0"
 dependencies = [
  "cc 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -410,17 +410,17 @@ dependencies = [
  "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "direct-composition"
 version = "0.1.0"
 dependencies = [
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gleam 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "mozangle 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "webrender 0.61.0",
  "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "winit 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "dlib"
@@ -588,39 +588,21 @@ version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "gl_generator"
-version = "0.14.0"
+name = "gleam"
+version = "0.6.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "gleam"
-version = "0.6.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "gl_generator 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "gleam"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "gl_generator 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "glutin"
 version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "android_glue 0.2.3 (git+https://github.com/rust-windowing/android-rs-glue.git?rev=e3ac6edea5814e1faca0c31ea8fac6877cb929ea)",
@@ -1766,17 +1748,17 @@ dependencies = [
  "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-text 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "cstr 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "dwrote 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "freetype 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gleam 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "image 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "malloc_size_of_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "mozangle 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "plane-split 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1800,17 +1782,17 @@ dependencies = [
 [[package]]
 name = "webrender-examples"
 version = "0.1.0"
 dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "env_logger 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gleam 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "glutin 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "rayon 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "webrender 0.61.0",
  "winit 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "webrender_api"
@@ -1927,17 +1909,17 @@ dependencies = [
  "clap 2.31.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
  "dwrote 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "env_logger 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "font-loader 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gleam 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "glutin 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "image 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "mozangle 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "osmesa-src 0.1.1 (git+https://github.com/servo/osmesa-src)",
  "osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "ron 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
  "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2072,19 +2054,17 @@ dependencies = [
 "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
 "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
 "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
 "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
 "checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518"
 "checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592"
 "checksum gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39a23d5e872a275135d66895d954269cf5e8661d234eb1c2480f4ce0d586acbd"
 "checksum gl_generator 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ca98bbde17256e02d17336a6bdb5a50f7d0ccacee502e191d3e3d0ec2f96f84a"
-"checksum gl_generator 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"
-"checksum gleam 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "cae10d7c99d0e77b4766e850a60898a17c1abaf01075531f1066f03dc7dc5fc5"
-"checksum gleam 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332d1f4e6c6181ed07178f84a552b2387d43ecf6821a86c22cfb3883ea3fb1b9"
+"checksum gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)" = "7f46fd8874e043ffac0d638ed1567a2584f7814f6d72b4db37ab1689004a26c4"
 "checksum glutin 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb26027a84c3b9e1949ef0df0b6a3db8d0c124243a5c161ea25c7def90cb1474"
 "checksum glutin_egl_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "23f48987ab6cb2b61ad903b59e54a2fd0c380a7baff68cffd6826b69a73dd326"
 "checksum glutin_emscripten_sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "245b3fdb08df6ffed7585365851f8404af9c7e2dd4b59f15262e968b6a95a0c7"
 "checksum glutin_gles2_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "89996c30857ae1b4de4b5189abf1ea822a20a9fe9e1c93e5e7b862ff0bdd5cdf"
 "checksum glutin_glx_sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1290a5ca5e46fcfa7f66f949cc9d9194b2cb6f2ed61892c8c2b82343631dba57"
 "checksum glutin_wgl_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f801bbc91efc22dd1c4818a47814fc72bf74d024510451b119381579bfa39021"
 "checksum httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f407128745b78abc95c0ffbe4e5d37427fdc0d45470710cfef8c44522a2e37"
 "checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e"
--- a/gfx/wr/direct-composition/Cargo.toml
+++ b/gfx/wr/direct-composition/Cargo.toml
@@ -2,13 +2,13 @@
 name = "direct-composition"
 version = "0.1.0"
 authors = ["Simon Sapin <simon.sapin@exyr.org>"]
 license = "MPL-2.0"
 edition = "2018"
 
 [target.'cfg(windows)'.dependencies]
 euclid = "0.20"
-gleam = "0.9.2"
+gleam = "0.6.2"
 mozangle = {version = "0.3.1", features = ["egl"]}
 webrender = {path = "../webrender"}
 winapi = {version = "0.3", features = ["winerror", "d3d11", "dcomp"]}
 winit = "0.19"
--- a/gfx/wr/example-compositor/compositor/Cargo.toml
+++ b/gfx/wr/example-compositor/compositor/Cargo.toml
@@ -2,12 +2,12 @@
 name = "compositor"
 version = "0.1.0"
 authors = ["Glenn Watson <gw@intuitionlibrary.com>"]
 edition = "2018"
 license = "MPL-2.0"
 
 [dependencies]
 webrender = { path = "../../webrender" }
-gleam = "0.9.2"
+gleam = "0.6.2"
 
 [target.'cfg(windows)'.dependencies]
 compositor-windows = { path = "../compositor-windows" }
--- a/gfx/wr/examples/Cargo.toml
+++ b/gfx/wr/examples/Cargo.toml
@@ -56,16 +56,16 @@ path = "yuv.rs"
 
 [features]
 debug = ["webrender/capture", "webrender/debugger", "webrender/profiler"]
 
 [dependencies]
 app_units = "0.7"
 env_logger = "0.5"
 euclid = "0.20"
-gleam = "0.9.2"
+gleam = "0.6.2"
 glutin = "0.21"
 rayon = "1"
 webrender = { path = "../webrender" }
 winit = "0.19"
 
 [target.'cfg(target_os = "macos")'.dependencies]
 core-foundation = "0.6.4"
--- a/gfx/wr/webrender/Cargo.toml
+++ b/gfx/wr/webrender/Cargo.toml
@@ -27,17 +27,17 @@ webrender_build = { version = "0.0.1", p
 base64 = { optional = true, version = "0.10" }
 bincode = "1.0"
 bitflags = "1.2"
 byteorder = "1.0"
 cfg-if = "0.1.2"
 cstr = "0.1.2"
 euclid = { version = "0.20.0", features = ["serde"] }
 fxhash = "0.2.1"
-gleam = "0.9.2"
+gleam = "0.6.17"
 image_loader = { optional = true, version = "0.22", package = "image", default-features = false, features = ["png_codec"] }
 lazy_static = "1"
 log = "0.4"
 malloc_size_of_derive = "0.1"
 num-traits = "0.2"
 plane-split = "0.15"
 png = { optional = true, version = "0.15" }
 rayon = "1"
--- a/gfx/wr/webrender/src/device/gl.rs
+++ b/gfx/wr/webrender/src/device/gl.rs
@@ -944,18 +944,16 @@ pub struct Capabilities {
     /// Whether KHR_debug is supported for getting debug messages from
     /// the driver.
     pub supports_khr_debug: bool,
     /// Whether we can configure texture units to do swizzling on sampling.
     pub supports_texture_swizzle: bool,
     /// Whether the driver supports uploading to textures from a non-zero
     /// offset within a PBO.
     pub supports_nonzero_pbo_offsets: bool,
-    /// Whether the driver supports specifying the texture usage up front.
-    pub supports_texture_usage: bool,
 }
 
 #[derive(Clone, Debug)]
 pub enum ShaderError {
     Compilation(String, String), // name, error message
     Link(String, String),        // name, error message
 }
 
@@ -1306,18 +1304,16 @@ impl Device {
                 panic!("Caught GL error {:x} at {}", code, name);
             });
         }
 
         if supports_extension(&extensions, "GL_ANGLE_provoking_vertex") {
             gl.provoking_vertex_angle(gl::FIRST_VERTEX_CONVENTION);
         }
 
-        let supports_texture_usage = supports_extension(&extensions, "GL_ANGLE_texture_usage");
-
         // Our common-case image data in Firefox is BGRA, so we make an effort
         // to use BGRA as the internal texture storage format to avoid the need
         // to swizzle during upload. Currently we only do this on GLES (and thus
         // for Windows, via ANGLE).
         //
         // On Mac, Apple docs [1] claim that BGRA is a more efficient internal
         // format, but they don't support it with glTextureStorage. As a workaround,
         // we pretend that it's RGBA8 for the purposes of texture transfers,
@@ -1479,17 +1475,16 @@ impl Device {
                 supports_multisampling: false, //TODO
                 supports_copy_image_sub_data,
                 supports_blit_to_texture_array,
                 supports_pixel_local_storage,
                 supports_advanced_blend_equation,
                 supports_khr_debug,
                 supports_texture_swizzle,
                 supports_nonzero_pbo_offsets,
-                supports_texture_usage,
             },
 
             color_formats,
             bgra_formats,
             swizzle_settings: SwizzleSettings {
                 bgra8_sampling_swizzle,
             },
 
@@ -2084,20 +2079,16 @@ impl Device {
             fbos_with_depth: vec![],
             blit_workaround_buffer: None,
             last_frame_used: self.frame_id,
             flags: TextureFlags::default(),
         };
         self.bind_texture(DEFAULT_TEXTURE, &texture, Swizzle::default());
         self.set_texture_parameters(texture.target, filter);
 
-        if self.capabilities.supports_texture_usage && render_target.is_some() {
-            self.gl.tex_parameter_i(texture.target, gl::TEXTURE_USAGE_ANGLE, gl::FRAMEBUFFER_ATTACHMENT_ANGLE as gl::GLint);
-        }
-
         // Allocate storage.
         let desc = self.gl_describe_format(texture.format);
         let is_array = match texture.target {
             gl::TEXTURE_2D_ARRAY => true,
             gl::TEXTURE_2D | gl::TEXTURE_RECTANGLE | gl::TEXTURE_EXTERNAL_OES => false,
             _ => panic!("BUG: Unexpected texture target!"),
         };
         assert!(is_array || texture.layer_count == 1);
--- a/gfx/wr/wrench/Cargo.toml
+++ b/gfx/wr/wrench/Cargo.toml
@@ -7,17 +7,17 @@ license = "MPL-2.0"
 edition = "2018"
 
 [dependencies]
 base64 = "0.10"
 bincode = "1.0"
 byteorder = "1.0"
 env_logger = { version = "0.5", optional = true }
 euclid = "0.20"
-gleam = "0.9.2"
+gleam = "0.6.2"
 glutin = "0.21"
 app_units = "0.7"
 clap = { version = "2", features = ["yaml"] }
 log = "0.4"
 yaml-rust = "0.4"
 serde_json = "1.0"
 ron = "0.1.5"
 time = "0.1"
--- a/third_party/rust/gl_generator/.cargo-checksum.json
+++ b/third_party/rust/gl_generator/.cargo-checksum.json
@@ -1,1 +1,1 @@
-{"files":{"Cargo.toml":"f586015aa2816b3c34d89f5e6a6539172efcd7f3ed055a0fab433ea83e2a0f0f","README.md":"52d8fee4681c879f2c964fd30e3faf0c907e8bf676eab7b44beab5c5bbd5c284","generators/debug_struct_gen.rs":"6fecccf8e57d4be93ea2657328d6e111ca44bc69542a5522cd7360d80ca64630","generators/global_gen.rs":"1696013af16bb92a3fa7cf3802a57ec6f7ba460322ede33aa2af30fc9911bd98","generators/mod.rs":"100a1da965bf11eaa9fad48a06c7856b60f48363a4a707e34ba97938bedae0b8","generators/static_gen.rs":"925a9401e27358a466baadfb660056a24394cf2fa21f5613e2d7f50ab8935e71","generators/static_struct_gen.rs":"eb08e6e59b0e0947c4ab263a0749efbb28430c5741634c413a2be011fcdad88f","generators/struct_gen.rs":"fa1bcda4501a597922be7c7ef4ad13738536a9c97529996671e264acd709c680","generators/templates/types/egl.rs":"d1785a30f1098e101302ba74ba4c22cf95ac44b17edf221dbb9d890f4bd635a2","generators/templates/types/gl.rs":"d72f91355febec875c40899a44c5575bd04993f7cf5c6e289eec872a2a161b20","generators/templates/types/glx.rs":"f444166d117b96afed2d8d13db6cd3369d6c59704f296e76202269f411bbd4a8","generators/templates/types/wgl.rs":"9d626e0959374c694c19a36d4dd34dae2f37acf3cb94e9bd4d242a16b41a970d","lib.rs":"6f47da878479b503b5202bda84ad8935607264ac03c0b68203109fad9cd479db","registry/mod.rs":"84eed5c113b322e5267b2b130987e6bb726b4e7c38ce50292cd6cc57b8e06994","registry/parse.rs":"5cb781082014f143b06ef7d3678f3c4ca59133a5732d4e136fd750b78fb9453f"},"package":"1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"}
\ No newline at end of file
+{"files":{"Cargo.toml":"e1a5f54814bdc0073585819a8bf8cbdba3e9b1cfb7fa1a5bd7fbb8d8670a3673","README.md":"52d8fee4681c879f2c964fd30e3faf0c907e8bf676eab7b44beab5c5bbd5c284","generators/debug_struct_gen.rs":"73164956c9c5fe848a568aac1a7518947a0786ad6118618d78b4f0208c3f442e","generators/global_gen.rs":"486384b1d7fc234dbe55815bd99e5fbd69144f361f8cefdf4aa9841db1d7832a","generators/mod.rs":"100a1da965bf11eaa9fad48a06c7856b60f48363a4a707e34ba97938bedae0b8","generators/static_gen.rs":"925a9401e27358a466baadfb660056a24394cf2fa21f5613e2d7f50ab8935e71","generators/static_struct_gen.rs":"eb08e6e59b0e0947c4ab263a0749efbb28430c5741634c413a2be011fcdad88f","generators/struct_gen.rs":"13444b524e992d88fdd2f4b0990e06bdee292b076047b274b7f607f3de12a85d","generators/templates/types/egl.rs":"d1785a30f1098e101302ba74ba4c22cf95ac44b17edf221dbb9d890f4bd635a2","generators/templates/types/gl.rs":"f71f3a2200c0fa13f09687ef05e51c28c5b11c1bb841acd402c0097d8f9130bd","generators/templates/types/glx.rs":"f444166d117b96afed2d8d13db6cd3369d6c59704f296e76202269f411bbd4a8","generators/templates/types/wgl.rs":"9d626e0959374c694c19a36d4dd34dae2f37acf3cb94e9bd4d242a16b41a970d","lib.rs":"6f47da878479b503b5202bda84ad8935607264ac03c0b68203109fad9cd479db","registry/mod.rs":"84eed5c113b322e5267b2b130987e6bb726b4e7c38ce50292cd6cc57b8e06994","registry/parse.rs":"c201ee463663878d4546a7d94194303a3d3c27f2bcb2cdbedd892f0446583795"},"package":"39a23d5e872a275135d66895d954269cf5e8661d234eb1c2480f4ce0d586acbd"}
\ No newline at end of file
--- a/third_party/rust/gl_generator/Cargo.toml
+++ b/third_party/rust/gl_generator/Cargo.toml
@@ -7,17 +7,17 @@
 #
 # If you believe there's an error in this file please file an
 # issue against the rust-lang/cargo repository. If you're
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
 [package]
 name = "gl_generator"
-version = "0.14.0"
+version = "0.11.0"
 authors = ["Brendan Zabarauskas <bjzaba@yahoo.com.au>", "Corey Richardson", "Arseny Kapoulkine"]
 description = "Code generators for creating bindings to the Khronos OpenGL APIs."
 homepage = "https://github.com/brendanzab/gl-rs/"
 documentation = "https://docs.rs/gl_generator"
 readme = "README.md"
 keywords = ["gl", "egl", "opengl", "khronos"]
 categories = ["api-bindings", "rendering::graphics-api"]
 license = "Apache-2.0"
--- a/third_party/rust/gl_generator/generators/debug_struct_gen.rs
+++ b/third_party/rust/gl_generator/generators/debug_struct_gen.rs
@@ -182,17 +182,17 @@ where
             /// use of functions like `glfwGetProcAddress` or `SDL_GL_GetProcAddress`.
             ///
             /// ~~~ignore
             /// let gl = Gl::load_with(|s| glfw.get_proc_address(s));
             /// ~~~
             #[allow(dead_code, unused_variables)]
             pub fn load_with<F>(mut loadfn: F) -> {api} where F: FnMut(&'static str) -> *const __gl_imports::raw::c_void {{
                 #[inline(never)]
-                fn do_metaloadfn(loadfn: &mut dyn FnMut(&'static str) -> *const __gl_imports::raw::c_void,
+                fn do_metaloadfn(loadfn: &mut FnMut(&'static str) -> *const __gl_imports::raw::c_void,
                                  symbol: &'static str,
                                  symbols: &[&'static str])
                                  -> *const __gl_imports::raw::c_void {{
                     let mut ptr = loadfn(symbol);
                     if ptr.is_null() {{
                         for &sym in symbols {{
                             ptr = loadfn(sym);
                             if !ptr.is_null() {{ break; }}
--- a/third_party/rust/gl_generator/generators/global_gen.rs
+++ b/third_party/rust/gl_generator/generators/global_gen.rs
@@ -58,17 +58,17 @@ where
 fn write_metaloadfn<W>(dest: &mut W) -> io::Result<()>
 where
     W: io::Write,
 {
     writeln!(
         dest,
         r#"
         #[inline(never)]
-        fn metaloadfn(loadfn: &mut dyn FnMut(&'static str) -> *const __gl_imports::raw::c_void,
+        fn metaloadfn(loadfn: &mut FnMut(&'static str) -> *const __gl_imports::raw::c_void,
                       symbol: &'static str,
                       fallbacks: &[&'static str]) -> *const __gl_imports::raw::c_void {{
             let mut ptr = loadfn(symbol);
             if ptr.is_null() {{
                 for &sym in fallbacks {{
                     ptr = loadfn(sym);
                     if !ptr.is_null() {{ break; }}
                 }}
@@ -280,30 +280,25 @@ where
                   "
         /// Load each OpenGL symbol using a custom load function. This allows for the
         /// use of functions like `glfwGetProcAddress` or `SDL_GL_GetProcAddress`.
         /// ~~~ignore
         /// gl::load_with(|s| glfw.get_proc_address(s));
         /// ~~~
         #[allow(dead_code)]
         pub fn load_with<F>(mut loadfn: F) where F: FnMut(&'static str) -> *const __gl_imports::raw::c_void {{
-            #[inline(never)]
-            fn inner(loadfn: &mut dyn FnMut(&'static str) -> *const __gl_imports::raw::c_void) {{
     "));
 
     for c in &registry.cmds {
         try!(writeln!(
             dest,
-            "{cmd_name}::load_with(&mut *loadfn);",
+            "{cmd_name}::load_with(&mut loadfn);",
             cmd_name = &c.proto.ident[..]
         ));
     }
 
     writeln!(
         dest,
         "
-            }}
-
-            inner(&mut loadfn)
         }}
     "
     )
 }
--- a/third_party/rust/gl_generator/generators/struct_gen.rs
+++ b/third_party/rust/gl_generator/generators/struct_gen.rs
@@ -182,17 +182,17 @@ where
             /// use of functions like `glfwGetProcAddress` or `SDL_GL_GetProcAddress`.
             ///
             /// ~~~ignore
             /// let gl = Gl::load_with(|s| glfw.get_proc_address(s));
             /// ~~~
             #[allow(dead_code, unused_variables)]
             pub fn load_with<F>(mut loadfn: F) -> {api} where F: FnMut(&'static str) -> *const __gl_imports::raw::c_void {{
                 #[inline(never)]
-                fn do_metaloadfn(loadfn: &mut dyn FnMut(&'static str) -> *const __gl_imports::raw::c_void,
+                fn do_metaloadfn(loadfn: &mut FnMut(&'static str) -> *const __gl_imports::raw::c_void,
                                  symbol: &'static str,
                                  symbols: &[&'static str])
                                  -> *const __gl_imports::raw::c_void {{
                     let mut ptr = loadfn(symbol);
                     if ptr.is_null() {{
                         for &sym in symbols {{
                             ptr = loadfn(sym);
                             if !ptr.is_null() {{ break; }}
--- a/third_party/rust/gl_generator/generators/templates/types/gl.rs
+++ b/third_party/rust/gl_generator/generators/templates/types/gl.rs
@@ -41,37 +41,37 @@ pub type GLuint64EXT = u64;
 
 pub enum __GLsync {}
 pub type GLsync = *const __GLsync;
 
 // compatible with OpenCL cl_context
 pub enum _cl_context {}
 pub enum _cl_event {}
 
-pub type GLDEBUGPROC = Option<extern "system" fn(source: GLenum,
-                                                 gltype: GLenum,
-                                                 id: GLuint,
-                                                 severity: GLenum,
-                                                 length: GLsizei,
-                                                 message: *const GLchar,
-                                                 userParam: *mut super::__gl_imports::raw::c_void)>;
-pub type GLDEBUGPROCARB = Option<extern "system" fn(source: GLenum,
-                                                    gltype: GLenum,
-                                                    id: GLuint,
-                                                    severity: GLenum,
-                                                    length: GLsizei,
-                                                    message: *const GLchar,
-                                                    userParam: *mut super::__gl_imports::raw::c_void)>;
-pub type GLDEBUGPROCKHR = Option<extern "system" fn(source: GLenum,
-                                                    gltype: GLenum,
-                                                    id: GLuint,
-                                                    severity: GLenum,
-                                                    length: GLsizei,
-                                                    message: *const GLchar,
-                                                    userParam: *mut super::__gl_imports::raw::c_void)>;
+pub type GLDEBUGPROC = extern "system" fn(source: GLenum,
+                                          gltype: GLenum,
+                                          id: GLuint,
+                                          severity: GLenum,
+                                          length: GLsizei,
+                                          message: *const GLchar,
+                                          userParam: *mut super::__gl_imports::raw::c_void);
+pub type GLDEBUGPROCARB = extern "system" fn(source: GLenum,
+                                             gltype: GLenum,
+                                             id: GLuint,
+                                             severity: GLenum,
+                                             length: GLsizei,
+                                             message: *const GLchar,
+                                             userParam: *mut super::__gl_imports::raw::c_void);
+pub type GLDEBUGPROCKHR = extern "system" fn(source: GLenum,
+                                             gltype: GLenum,
+                                             id: GLuint,
+                                             severity: GLenum,
+                                             length: GLsizei,
+                                             message: *const GLchar,
+                                             userParam: *mut super::__gl_imports::raw::c_void);
 
 // GLES 1 types
 // "pub type GLclampx = i32;",
 
 // GLES 1/2 types (tagged for GLES 1)
 // "pub type GLbyte = i8;",
 // "pub type GLubyte = u8;",
 // "pub type GLfloat = GLfloat;",
@@ -93,16 +93,16 @@ pub type GLDEBUGPROCKHR = Option<extern 
 // "pub type GLint64EXT = i64;",
 // "pub type GLuint64EXT = u64;",
 // "pub type GLintptr = intptr_t;",
 // "pub type GLsizeiptr = ssize_t;",
 
 // GLES 2 types (none currently)
 
 // Vendor extension types
-pub type GLDEBUGPROCAMD = Option<extern "system" fn(id: GLuint,
-                                                    category: GLenum,
-                                                    severity: GLenum,
-                                                    length: GLsizei,
-                                                    message: *const GLchar,
-                                                    userParam: *mut super::__gl_imports::raw::c_void)>;
+pub type GLDEBUGPROCAMD = extern "system" fn(id: GLuint,
+                                             category: GLenum,
+                                             severity: GLenum,
+                                             length: GLsizei,
+                                             message: *const GLchar,
+                                             userParam: *mut super::__gl_imports::raw::c_void);
 pub type GLhalfNV = super::__gl_imports::raw::c_ushort;
 pub type GLvdpauSurfaceNV = GLintptr;
--- a/third_party/rust/gl_generator/registry/parse.rs
+++ b/third_party/rust/gl_generator/registry/parse.rs
@@ -196,17 +196,17 @@ fn make_egl_enum(ident: String, ty: Opti
                 let value = working[i + 1..].to_string();
 
                 (Cow::Owned(ty), value, true)
             } else {
                 panic!("Unexpected value format: {}", value)
             }
         } else {
             match value.chars().next() {
-                Some('-') | Some('0'..='9') => (),
+                Some('-') | Some('0'...'9') => (),
                 _ => panic!("Unexpected value format: {}", value),
             }
 
             let ty = match ty {
                 Some(ref ty) if ty == "ull" => "EGLuint64KHR",
                 Some(ty) => panic!("Unhandled enum type: {}", ty),
                 None if value.starts_with('-') => "EGLint",
                 None if ident == "TRUE" || ident == "FALSE" => "EGLBoolean",
@@ -1036,17 +1036,16 @@ pub fn to_rust_ty<T: AsRef<str>>(ty: T) 
         "NativeWindowType" => "types::NativeWindowType",
         //"Bool"                      => "types::Bool",
         "EGLBoolean" => "types::EGLBoolean",
         "EGLenum" => "types::EGLenum",
         "EGLAttribKHR" => "types::EGLAttribKHR",
         "EGLAttrib" => "types::EGLAttrib",
         "EGLAttrib *" => "*mut types::EGLAttrib",
         "const EGLAttrib *" => "*const types::EGLAttrib",
-        "const EGLattrib *" => "*const types::EGLAttrib", // Due to a typo in khronos_api/api_angle/scripts/egl_angle_ext.xml - see brendanzab/gl-rs#491
         "EGLConfig" => "types::EGLConfig",
         "EGLConfig *" => "*mut types::EGLConfig",
         "EGLContext" => "types::EGLContext",
         "EGLDeviceEXT" => "types::EGLDeviceEXT",
         "EGLDisplay" => "types::EGLDisplay",
         "EGLSurface" => "types::EGLSurface",
         "EGLClientBuffer" => "types::EGLClientBuffer",
         "__eglMustCastToProperFunctionPointerType" => {
--- a/third_party/rust/gleam/.cargo-checksum.json
+++ b/third_party/rust/gleam/.cargo-checksum.json
@@ -1,1 +1,1 @@
-{"files":{"COPYING":"ec82b96487e9e778ee610c7ab245162464782cfa1f555c2299333f8dbe5c036a","Cargo.toml":"834f409ac81917f5b5730483c90611e3193a8fb7400c87d30e7988d866bc5740","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"62065228e42caebca7e7d7db1204cbb867033de5982ca4009928915e4095f3a3","README.md":"1acb12040be43a3582d5897f11870b3ffdcd7ce0f4f32de158175bb6b33ec0b7","build.rs":"b6b30972ee2be2e151af0ca93b30ccc3c8bce2cfeef4217244d6b413b6bd0c9d","rustfmt.toml":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","src/gl.rs":"e923f4ccfeae5112e6cea8f78ff279e8a26c041dcfb5cfb63d9713e733d249c3","src/gl_fns.rs":"67b5eac2a686f4a58201b8d51fc27db1aca6d597dfaa5c8ad4007170ffb18887","src/gles_fns.rs":"1c206adf96e6b9767d526aad54ddfb48e99aa0f5766d3cb72019470f4bdd88f9","src/lib.rs":"16610c19b45a3f26d56b379a3591aa2e4fc9477e7bd88f86b31c6ea32e834861"},"package":"332d1f4e6c6181ed07178f84a552b2387d43ecf6821a86c22cfb3883ea3fb1b9"}
\ No newline at end of file
+{"files":{"COPYING":"ec82b96487e9e778ee610c7ab245162464782cfa1f555c2299333f8dbe5c036a","Cargo.toml":"40dda1b03ff20d8a3b4b544683f37a8d2b2137cfbb4d545122167352690d6b16","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"62065228e42caebca7e7d7db1204cbb867033de5982ca4009928915e4095f3a3","README.md":"1acb12040be43a3582d5897f11870b3ffdcd7ce0f4f32de158175bb6b33ec0b7","build.rs":"2d3833a24fee9d1f669f4cd7347b4ca8444a138d473ab9188f4d65f6981c4191","rustfmt.toml":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","src/gl.rs":"b7791f77dbbea690a7a0d33e3c083337a6b04a233a192dc8c96d4fe481a4a7ed","src/gl_fns.rs":"f88cd940691e0fca169cabbe2a95418300d09392d91a020079cfbdd5bacd753b","src/gles_fns.rs":"3766f2b76aa4038774a4754ce89cdcbb50286ab5bcf07cb0bb6e88f0de31f96f","src/lib.rs":"16610c19b45a3f26d56b379a3591aa2e4fc9477e7bd88f86b31c6ea32e834861"},"package":"7f46fd8874e043ffac0d638ed1567a2584f7814f6d72b4db37ab1689004a26c4"}
\ No newline at end of file
--- a/third_party/rust/gleam/Cargo.toml
+++ b/third_party/rust/gleam/Cargo.toml
@@ -7,17 +7,17 @@
 #
 # If you believe there's an error in this file please file an
 # issue against the rust-lang/cargo repository. If you're
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
 [package]
 name = "gleam"
-version = "0.9.2"
+version = "0.6.17"
 authors = ["The Servo Project Developers"]
 build = "build.rs"
 description = "Generated OpenGL bindings and wrapper for Servo."
 documentation = "https://doc.servo.org/gleam/"
 license = "Apache-2.0/MIT"
 repository = "https://github.com/servo/gleam"
 [build-dependencies.gl_generator]
-version = "0.14"
+version = "0.11"
--- a/third_party/rust/gleam/build.rs
+++ b/third_party/rust/gleam/build.rs
@@ -12,17 +12,16 @@ fn main() {
     let mut file_gl = File::create(&Path::new(&dest).join("gl_bindings.rs")).unwrap();
     let mut file_gles = File::create(&Path::new(&dest).join("gles_bindings.rs")).unwrap();
 
     // OpenGL 3.3 bindings
     let gl_extensions = [
         "GL_APPLE_client_storage",
         "GL_APPLE_fence",
         "GL_APPLE_texture_range",
-        "GL_APPLE_vertex_array_object",
         "GL_ARB_blend_func_extended",
         "GL_ARB_copy_image",
         "GL_ARB_get_program_binary",
         "GL_ARB_invalidate_subdata",
         "GL_ARB_texture_rectangle",
         "GL_ARB_texture_storage",
         "GL_EXT_debug_marker",
         "GL_EXT_texture_filter_anisotropic",
@@ -50,18 +49,16 @@ fn main() {
         "GL_EXT_texture_filter_anisotropic",
         "GL_EXT_texture_format_BGRA8888",
         "GL_EXT_texture_storage",
         "GL_OES_EGL_image_external",
         "GL_OES_EGL_image",
         "GL_OES_texture_half_float",
         "GL_EXT_shader_pixel_local_storage",
         "GL_ANGLE_provoking_vertex",
-        "GL_ANGLE_texture_usage",
-        "GL_CHROMIUM_copy_texture",
         "GL_KHR_debug",
         "GL_KHR_blend_equation_advanced",
         "GL_KHR_blend_equation_advanced_coherent",
     ];
     let gles_reg = Registry::new(
         Api::Gles2,
         (3, 0),
         Profile::Core,
--- a/third_party/rust/gleam/src/gl.rs
+++ b/third_party/rust/gleam/src/gl.rs
@@ -18,17 +18,17 @@ use std::str;
 use std::time::{Duration, Instant};
 
 pub use ffi::types::*;
 pub use ffi::*;
 
 pub use ffi_gl::Gl as GlFfi;
 pub use ffi_gles::Gles2 as GlesFfi;
 
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+#[derive(Debug, Eq, PartialEq)]
 pub enum GlType {
     Gl,
     Gles,
 }
 
 impl Default for GlType {
     #[cfg(any(target_os = "android", target_os = "ios"))]
     fn default() -> GlType {
@@ -69,53 +69,42 @@ fn calculate_length(width: GLsizei, heig
 pub struct DebugMessage {
     pub message: String,
     pub source: GLenum,
     pub ty: GLenum,
     pub id: GLenum,
     pub severity: GLenum,
 }
 
-mod private {
-    // Private marker trait extended by the Gl public trait so that no one
-    // else outside this crate can implement Gl. Why? So that adding new methods
-    // to it don't lead to a breaking change.
-    pub trait Sealed {}
-}
-use self::private::Sealed;
-
 macro_rules! declare_gl_apis {
     // garbo is a hack to handle unsafe methods.
     ($($(unsafe $([$garbo:expr])*)* fn $name:ident(&self $(, $arg:ident: $t:ty)* $(,)*) $(-> $retty:ty)* ;)+) => {
-        pub trait Gl: Sealed {
+        pub trait Gl {
             $($(unsafe $($garbo)*)* fn $name(&self $(, $arg:$t)*) $(-> $retty)* ;)+
         }
 
-        impl Sealed for ErrorCheckingGl {}
         impl Gl for ErrorCheckingGl {
             $($(unsafe $($garbo)*)* fn $name(&self $(, $arg:$t)*) $(-> $retty)* {
                 let rv = self.gl.$name($($arg,)*);
                 assert_eq!(self.gl.get_error(), 0);
                 rv
             })+
         }
 
-        impl<F> Sealed for ErrorReactingGl<F> {}
-        impl<F: Fn(&dyn Gl, &str, GLenum)> Gl for ErrorReactingGl<F> {
+        impl<F: Fn(&Gl, &str, GLenum)> Gl for ErrorReactingGl<F> {
             $($(unsafe $($garbo)*)* fn $name(&self $(, $arg:$t)*) $(-> $retty)* {
                 let rv = self.gl.$name($($arg,)*);
                 let error = self.gl.get_error();
                 if error != 0 {
                     (self.callback)(&*self.gl, stringify!($name), error);
                 }
                 rv
             })+
         }
 
-        impl<F> Sealed for ProfilingGl<F> {}
         impl<F: Fn(&str, Duration)> Gl for ProfilingGl<F> {
             $($(unsafe $($garbo)*)* fn $name(&self $(, $arg:$t)*) $(-> $retty)* {
                 let start = Instant::now();
                 let rv = self.gl.$name($($arg,)*);
                 let duration = Instant::now() - start;
                 if duration > self.threshold {
                     (self.callback)(stringify!($name), duration);
                 }
@@ -175,28 +164,26 @@ declare_gl_apis! {
     fn sample_coverage(&self, value: GLclampf, invert: bool);
     fn polygon_offset(&self, factor: GLfloat, units: GLfloat);
     fn pixel_store_i(&self, name: GLenum, param: GLint);
     fn gen_buffers(&self, n: GLsizei) -> Vec<GLuint>;
     fn gen_renderbuffers(&self, n: GLsizei) -> Vec<GLuint>;
     fn gen_framebuffers(&self, n: GLsizei) -> Vec<GLuint>;
     fn gen_textures(&self, n: GLsizei) -> Vec<GLuint>;
     fn gen_vertex_arrays(&self, n: GLsizei) -> Vec<GLuint>;
-    fn gen_vertex_arrays_apple(&self, n: GLsizei) -> Vec<GLuint>;
     fn gen_queries(&self, n: GLsizei) -> Vec<GLuint>;
     fn begin_query(&self, target: GLenum, id: GLuint);
     fn end_query(&self, target: GLenum);
     fn query_counter(&self, id: GLuint, target: GLenum);
     fn get_query_object_iv(&self, id: GLuint, pname: GLenum) -> i32;
     fn get_query_object_uiv(&self, id: GLuint, pname: GLenum) -> u32;
     fn get_query_object_i64v(&self, id: GLuint, pname: GLenum) -> i64;
     fn get_query_object_ui64v(&self, id: GLuint, pname: GLenum) -> u64;
     fn delete_queries(&self, queries: &[GLuint]);
     fn delete_vertex_arrays(&self, vertex_arrays: &[GLuint]);
-    fn delete_vertex_arrays_apple(&self, vertex_arrays: &[GLuint]);
     fn delete_buffers(&self, buffers: &[GLuint]);
     fn delete_renderbuffers(&self, renderbuffers: &[GLuint]);
     fn delete_framebuffers(&self, framebuffers: &[GLuint]);
     fn delete_textures(&self, textures: &[GLuint]);
     fn framebuffer_renderbuffer(&self,
                                 target: GLenum,
                                 attachment: GLenum,
                                 renderbuffertarget: GLenum,
@@ -217,17 +204,16 @@ declare_gl_apis! {
     fn bind_buffer_base(&self, target: GLenum, index: GLuint, buffer: GLuint);
     fn bind_buffer_range(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr);
     fn uniform_block_binding(&self,
                                 program: GLuint,
                                 uniform_block_index: GLuint,
                                 uniform_block_binding: GLuint);
     fn bind_buffer(&self, target: GLenum, buffer: GLuint);
     fn bind_vertex_array(&self, vao: GLuint);
-    fn bind_vertex_array_apple(&self, vao: GLuint);
     fn bind_renderbuffer(&self, target: GLenum, renderbuffer: GLuint);
     fn bind_framebuffer(&self, target: GLenum, framebuffer: GLuint);
     fn bind_texture(&self, target: GLenum, texture: GLuint);
     fn draw_buffers(&self, bufs: &[GLenum]);
     fn tex_image_2d(&self,
                     target: GLenum,
                     level: GLint,
                     internal_format: GLint,
@@ -558,17 +544,16 @@ declare_gl_apis! {
     fn get_error(&self) -> GLenum;
     fn stencil_mask(&self, mask: GLuint);
     fn stencil_mask_separate(&self, face: GLenum, mask: GLuint);
     fn stencil_func(&self, func: GLenum, ref_: GLint, mask: GLuint);
     fn stencil_func_separate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint);
     fn stencil_op(&self, sfail: GLenum, dpfail: GLenum, dppass: GLenum);
     fn stencil_op_separate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum);
     fn egl_image_target_texture2d_oes(&self, target: GLenum, image: GLeglImageOES);
-    fn egl_image_target_renderbuffer_storage_oes(&self, target: GLenum, image: GLeglImageOES);
     fn generate_mipmap(&self, target: GLenum);
     fn insert_event_marker_ext(&self, message: &str);
     fn push_group_marker_ext(&self, message: &str);
     fn pop_group_marker_ext(&self);
     fn debug_message_insert_khr(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, message: &str);
     fn push_debug_group_khr(&self, source: GLenum, id: GLuint, message: &str);
     fn pop_debug_group_khr(&self);
     fn fence_sync(&self, condition: GLenum, flags: GLbitfield) -> GLsync;
@@ -598,91 +583,79 @@ declare_gl_apis! {
         &self,
         program: GLuint,
         name: &str,
     ) -> GLint;
 
     // GL_KHR_debug
     fn get_debug_messages(&self) -> Vec<DebugMessage>;
 
-    // GL_ANGLE_provoking_vertex
+    // GL_ANGLE_provoking_vertex.
     fn provoking_vertex_angle(&self, mode: GLenum);
-
-    // GL_CHROMIUM_copy_texture
-    fn copy_texture_chromium(&self,
-        source_id: GLuint, source_level: GLint,
-        dest_target: GLenum, dest_id: GLuint, dest_level: GLint,
-        internal_format: GLint, dest_type: GLenum,
-        unpack_flip_y: GLboolean, unpack_premultiply_alpha: GLboolean, unpack_unmultiply_alpha: GLboolean);
-    fn copy_sub_texture_chromium(&self,
-        source_id: GLuint, source_level: GLint,
-        dest_target: GLenum, dest_id: GLuint, dest_level: GLint,
-        x_offset: GLint, y_offset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei,
-        unpack_flip_y: GLboolean, unpack_premultiply_alpha: GLboolean, unpack_unmultiply_alpha: GLboolean);
 }
 
 //#[deprecated(since = "0.6.11", note = "use ErrorReactingGl instead")]
 pub struct ErrorCheckingGl {
-    gl: Rc<dyn Gl>,
+    gl: Rc<Gl>,
 }
 
 impl ErrorCheckingGl {
-    pub fn wrap(fns: Rc<dyn Gl>) -> Rc<dyn Gl> {
-        Rc::new(ErrorCheckingGl { gl: fns }) as Rc<dyn Gl>
+    pub fn wrap(fns: Rc<Gl>) -> Rc<Gl> {
+        Rc::new(ErrorCheckingGl { gl: fns }) as Rc<Gl>
     }
 }
 
 /// A wrapper around GL context that calls a specified callback on each GL error.
 pub struct ErrorReactingGl<F> {
-    gl: Rc<dyn Gl>,
+    gl: Rc<Gl>,
     callback: F,
 }
 
-impl<F: 'static + Fn(&dyn Gl, &str, GLenum)> ErrorReactingGl<F> {
-    pub fn wrap(fns: Rc<dyn Gl>, callback: F) -> Rc<dyn Gl> {
-        Rc::new(ErrorReactingGl { gl: fns, callback }) as Rc<dyn Gl>
+impl<F: 'static + Fn(&Gl, &str, GLenum)> ErrorReactingGl<F> {
+    pub fn wrap(fns: Rc<Gl>, callback: F) -> Rc<Gl> {
+        Rc::new(ErrorReactingGl { gl: fns, callback }) as Rc<Gl>
     }
 }
 
 /// A wrapper around GL context that times each call and invokes the callback
 /// if the call takes longer than the threshold.
 pub struct ProfilingGl<F> {
-    gl: Rc<dyn Gl>,
+    gl: Rc<Gl>,
     threshold: Duration,
     callback: F,
 }
 
 impl<F: 'static + Fn(&str, Duration)> ProfilingGl<F> {
-    pub fn wrap(fns: Rc<dyn Gl>, threshold: Duration, callback: F) -> Rc<dyn Gl> {
-        Rc::new(ProfilingGl { gl: fns, threshold, callback }) as Rc<dyn Gl>
+    pub fn wrap(fns: Rc<Gl>, threshold: Duration, callback: F) -> Rc<Gl> {
+        Rc::new(ProfilingGl { gl: fns, threshold, callback }) as Rc<Gl>
     }
 }
 
 #[inline]
-pub fn buffer_data<T>(gl_: &dyn Gl, target: GLenum, data: &[T], usage: GLenum) {
+pub fn buffer_data<T>(gl_: &Gl, target: GLenum, data: &[T], usage: GLenum) {
     gl_.buffer_data_untyped(
         target,
         (data.len() * size_of::<T>()) as GLsizeiptr,
         data.as_ptr() as *const GLvoid,
         usage,
     )
 }
 
 #[inline]
-pub fn buffer_data_raw<T>(gl_: &dyn Gl, target: GLenum, data: &T, usage: GLenum) {
+pub fn buffer_data_raw<T>(gl_: &Gl, target: GLenum, data: &T, usage: GLenum) {
     gl_.buffer_data_untyped(
         target,
         size_of::<T>() as GLsizeiptr,
         data as *const T as *const GLvoid,
         usage,
     )
 }
 
 #[inline]
-pub fn buffer_sub_data<T>(gl_: &dyn Gl, target: GLenum, offset: isize, data: &[T]) {
+pub fn buffer_sub_data<T>(gl_: &Gl, target: GLenum, offset: isize, data: &[T]) {
     gl_.buffer_sub_data_untyped(
         target,
         offset,
         (data.len() * size_of::<T>()) as GLsizeiptr,
         data.as_ptr() as *const GLvoid,
     );
 }
 
--- a/third_party/rust/gleam/src/gl_fns.rs
+++ b/third_party/rust/gleam/src/gl_fns.rs
@@ -7,26 +7,25 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
 pub struct GlFns {
     ffi_gl_: GlFfi,
 }
 
 impl GlFns {
-    pub unsafe fn load_with<'a, F>(loadfn: F) -> Rc<dyn Gl>
+    pub unsafe fn load_with<'a, F>(loadfn: F) -> Rc<Gl>
     where
         F: FnMut(&str) -> *const c_void,
     {
         let ffi_gl_ = GlFfi::load_with(loadfn);
-        Rc::new(GlFns { ffi_gl_: ffi_gl_ }) as Rc<dyn Gl>
+        Rc::new(GlFns { ffi_gl_: ffi_gl_ }) as Rc<Gl>
     }
 }
 
-impl Sealed for GlFns {}
 impl Gl for GlFns {
     fn get_type(&self) -> GlType {
         GlType::Gl
     }
 
     fn buffer_data_untyped(
         &self,
         target: GLenum,
@@ -217,25 +216,17 @@ impl Gl for GlFns {
             self.ffi_gl_.GenTextures(n, result.as_mut_ptr());
         }
         result
     }
 
     fn gen_vertex_arrays(&self, n: GLsizei) -> Vec<GLuint> {
         let mut result = vec![0 as GLuint; n as usize];
         unsafe {
-            self.ffi_gl_.GenVertexArrays(n, result.as_mut_ptr())
-        }
-        result
-    }
-
-    fn gen_vertex_arrays_apple(&self, n: GLsizei) -> Vec<GLuint> {
-        let mut result = vec![0 as GLuint; n as usize];
-        unsafe {
-            self.ffi_gl_.GenVertexArraysAPPLE(n, result.as_mut_ptr())
+            self.ffi_gl_.GenVertexArrays(n, result.as_mut_ptr());
         }
         result
     }
 
     fn gen_queries(&self, n: GLsizei) -> Vec<GLuint> {
         let mut result = vec![0 as GLuint; n as usize];
         unsafe {
             self.ffi_gl_.GenQueries(n, result.as_mut_ptr());
@@ -302,23 +293,16 @@ impl Gl for GlFns {
 
     fn delete_vertex_arrays(&self, vertex_arrays: &[GLuint]) {
         unsafe {
             self.ffi_gl_
                 .DeleteVertexArrays(vertex_arrays.len() as GLsizei, vertex_arrays.as_ptr());
         }
     }
 
-    fn delete_vertex_arrays_apple(&self, vertex_arrays: &[GLuint]) {
-        unsafe {
-            self.ffi_gl_
-                .DeleteVertexArraysAPPLE(vertex_arrays.len() as GLsizei, vertex_arrays.as_ptr());
-        }
-    }
-
     fn delete_buffers(&self, buffers: &[GLuint]) {
         unsafe {
             self.ffi_gl_
                 .DeleteBuffers(buffers.len() as GLsizei, buffers.as_ptr());
         }
     }
 
     fn delete_renderbuffers(&self, renderbuffers: &[GLuint]) {
@@ -475,22 +459,16 @@ impl Gl for GlFns {
     }
 
     fn bind_vertex_array(&self, vao: GLuint) {
         unsafe {
             self.ffi_gl_.BindVertexArray(vao);
         }
     }
 
-    fn bind_vertex_array_apple(&self, vao: GLuint) {
-        unsafe {
-            self.ffi_gl_.BindVertexArrayAPPLE(vao)
-        }
-    }
-
     fn bind_renderbuffer(&self, target: GLenum, renderbuffer: GLuint) {
         unsafe {
             self.ffi_gl_.BindRenderbuffer(target, renderbuffer);
         }
     }
 
     fn bind_framebuffer(&self, target: GLenum, framebuffer: GLuint) {
         unsafe {
@@ -1933,21 +1911,16 @@ impl Gl for GlFns {
         unsafe { self.ffi_gl_.StencilOpSeparate(face, sfail, dpfail, dppass) }
     }
 
     #[allow(unused_variables)]
     fn egl_image_target_texture2d_oes(&self, target: GLenum, image: GLeglImageOES) {
         panic!("not supported")
     }
 
-    #[allow(unused_variables)]
-    fn egl_image_target_renderbuffer_storage_oes(&self, target: GLenum, image: GLeglImageOES) {
-        panic!("not supported")
-    }
-
     fn generate_mipmap(&self, target: GLenum) {
         unsafe { self.ffi_gl_.GenerateMipmap(target) }
     }
 
     fn insert_event_marker_ext(&self, message: &str) {
         if self.ffi_gl_.InsertEventMarkerEXT.is_loaded() {
             unsafe {
                 self.ffi_gl_
@@ -2175,27 +2148,9 @@ impl Gl for GlFns {
     // GL_KHR_blend_equation_advanced
     fn blend_barrier_khr(&self) {
         if self.ffi_gl_.BlendBarrierKHR.is_loaded() {
             unsafe {
                 self.ffi_gl_.BlendBarrierKHR();
             }
         }
     }
-
-    // GL_CHROMIUM_copy_texture
-    fn copy_texture_chromium(&self,
-        _source_id: GLuint, _source_level: GLint,
-        _dest_target: GLenum, _dest_id: GLuint, _dest_level: GLint,
-        _internal_format: GLint, _dest_type: GLenum,
-        _unpack_flip_y: GLboolean, _unpack_premultiply_alpha: GLboolean, _unpack_unmultiply_alpha: GLboolean)
-    {
-        unimplemented!("This extension is GLES only");
-    }
-    fn copy_sub_texture_chromium(&self,
-        _source_id: GLuint, _source_level: GLint,
-        _dest_target: GLenum, _dest_id: GLuint, _dest_level: GLint,
-        _x_offset: GLint, _y_offset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei,
-        _unpack_flip_y: GLboolean, _unpack_premultiply_alpha: GLboolean, _unpack_unmultiply_alpha: GLboolean)
-    {
-        unimplemented!("This extension is GLES only");
-    }
 }
--- a/third_party/rust/gleam/src/gles_fns.rs
+++ b/third_party/rust/gleam/src/gles_fns.rs
@@ -7,26 +7,25 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
 pub struct GlesFns {
     ffi_gl_: GlesFfi,
 }
 
 impl GlesFns {
-    pub unsafe fn load_with<'a, F>(loadfn: F) -> Rc<dyn Gl>
+    pub unsafe fn load_with<'a, F>(loadfn: F) -> Rc<Gl>
     where
         F: FnMut(&str) -> *const c_void,
     {
         let ffi_gl_ = GlesFfi::load_with(loadfn);
-        Rc::new(GlesFns { ffi_gl_: ffi_gl_ }) as Rc<dyn Gl>
+        Rc::new(GlesFns { ffi_gl_: ffi_gl_ }) as Rc<Gl>
     }
 }
 
-impl Sealed for GlesFns {}
 impl Gl for GlesFns {
     fn get_type(&self) -> GlType {
         GlType::Gles
     }
 
     fn buffer_data_untyped(
         &self,
         target: GLenum,
@@ -217,20 +216,16 @@ impl Gl for GlesFns {
     fn gen_vertex_arrays(&self, n: GLsizei) -> Vec<GLuint> {
         let mut result = vec![0 as GLuint; n as usize];
         unsafe {
             self.ffi_gl_.GenVertexArrays(n, result.as_mut_ptr());
         }
         result
     }
 
-    fn gen_vertex_arrays_apple(&self, _n: GLsizei) -> Vec<GLuint> {
-        panic!("not supported")
-    }
-
     fn gen_queries(&self, n: GLsizei) -> Vec<GLuint> {
         if !self.ffi_gl_.GenQueriesEXT.is_loaded() {
             return Vec::new();
         }
         let mut result = vec![0 as GLuint; n as usize];
         unsafe {
             self.ffi_gl_.GenQueriesEXT(n, result.as_mut_ptr());
         }
@@ -320,20 +315,16 @@ impl Gl for GlesFns {
 
     fn delete_vertex_arrays(&self, vertex_arrays: &[GLuint]) {
         unsafe {
             self.ffi_gl_
                 .DeleteVertexArrays(vertex_arrays.len() as GLsizei, vertex_arrays.as_ptr());
         }
     }
 
-    fn delete_vertex_arrays_apple(&self, _vertex_arrays: &[GLuint]) {
-        panic!("not supported")
-    }
-
     fn delete_buffers(&self, buffers: &[GLuint]) {
         unsafe {
             self.ffi_gl_
                 .DeleteBuffers(buffers.len() as GLsizei, buffers.as_ptr());
         }
     }
 
     fn delete_renderbuffers(&self, renderbuffers: &[GLuint]) {
@@ -490,20 +481,16 @@ impl Gl for GlesFns {
     }
 
     fn bind_vertex_array(&self, vao: GLuint) {
         unsafe {
             self.ffi_gl_.BindVertexArray(vao);
         }
     }
 
-    fn bind_vertex_array_apple(&self, _vao: GLuint) {
-        panic!("not supported")
-    }
-
     fn bind_renderbuffer(&self, target: GLenum, renderbuffer: GLuint) {
         unsafe {
             self.ffi_gl_.BindRenderbuffer(target, renderbuffer);
         }
     }
 
     fn bind_framebuffer(&self, target: GLenum, framebuffer: GLuint) {
         unsafe {
@@ -1930,22 +1917,16 @@ impl Gl for GlesFns {
     }
 
     fn egl_image_target_texture2d_oes(&self, target: GLenum, image: GLeglImageOES) {
         unsafe {
             self.ffi_gl_.EGLImageTargetTexture2DOES(target, image);
         }
     }
 
-    fn egl_image_target_renderbuffer_storage_oes(&self, target: GLenum, image: GLeglImageOES) {
-        unsafe {
-            self.ffi_gl_.EGLImageTargetRenderbufferStorageOES(target, image);
-        }
-    }
-
     fn generate_mipmap(&self, target: GLenum) {
         unsafe { self.ffi_gl_.GenerateMipmap(target) }
     }
 
     fn insert_event_marker_ext(&self, message: &str) {
         if self.ffi_gl_.InsertEventMarkerEXT.is_loaded() {
             unsafe {
                 self.ffi_gl_
@@ -2134,37 +2115,9 @@ impl Gl for GlesFns {
     // GL_KHR_blend_equation_advanced
     fn blend_barrier_khr(&self) {
         if self.ffi_gl_.BlendBarrierKHR.is_loaded() {
             unsafe {
                 self.ffi_gl_.BlendBarrierKHR();
             }
         }
     }
-
-    // GL_CHROMIUM_copy_texture
-    fn copy_texture_chromium(&self,
-        source_id: GLuint, source_level: GLint,
-        dest_target: GLenum, dest_id: GLuint, dest_level: GLint,
-        internal_format: GLint, dest_type: GLenum,
-        unpack_flip_y: GLboolean, unpack_premultiply_alpha: GLboolean, unpack_unmultiply_alpha: GLboolean)
-    {
-        unsafe {
-            self.ffi_gl_.CopyTextureCHROMIUM(source_id, source_level, dest_target, dest_id, dest_level,
-                internal_format, dest_type,
-                unpack_flip_y, unpack_premultiply_alpha, unpack_unmultiply_alpha,
-            );
-        }
-    }
-    fn copy_sub_texture_chromium(&self,
-        source_id: GLuint, source_level: GLint,
-        dest_target: GLenum, dest_id: GLuint, dest_level: GLint,
-        x_offset: GLint, y_offset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei,
-        unpack_flip_y: GLboolean, unpack_premultiply_alpha: GLboolean, unpack_unmultiply_alpha: GLboolean)
-    {
-        unsafe {
-            self.ffi_gl_.CopySubTextureCHROMIUM(source_id, source_level, dest_target, dest_id, dest_level,
-                x_offset, y_offset, x, y, width, height,
-                unpack_flip_y, unpack_premultiply_alpha, unpack_unmultiply_alpha,
-            );
-        }
-    }
 }