From 5fff0a9846c6a48d15befea7f9f572d19fbbe45a Mon Sep 17 00:00:00 2001
From: Harald Reingruber
 <74898239+haraldreingruber-dedalus@users.noreply.github.com>
Date: Sat, 28 Jan 2023 23:50:47 +0100
Subject: [PATCH] Add WebGL extension type for 16-bit normalized formats
 (EXT_texture_norm16) (#3266)

---
 crates/web-sys/Cargo.toml                     |  1 +
 .../src/features/gen_ExtTextureNorm16.rs      | 48 +++++++++++++++++++
 crates/web-sys/src/features/mod.rs            |  6 +++
 .../enabled/WebGL2RenderingContext.webidl     | 13 +++++
 4 files changed, 68 insertions(+)
 create mode 100644 crates/web-sys/src/features/gen_ExtTextureNorm16.rs

diff --git a/crates/web-sys/Cargo.toml b/crates/web-sys/Cargo.toml
index 76850432ee8..6663b222d93 100644
--- a/crates/web-sys/Cargo.toml
+++ b/crates/web-sys/Cargo.toml
@@ -361,6 +361,7 @@ ExtFragDepth = []
 ExtSRgb = []
 ExtShaderTextureLod = []
 ExtTextureFilterAnisotropic = []
+ExtTextureNorm16 = []
 ExtendableEvent = ["Event"]
 ExtendableEventInit = []
 ExtendableMessageEvent = ["Event", "ExtendableEvent"]
diff --git a/crates/web-sys/src/features/gen_ExtTextureNorm16.rs b/crates/web-sys/src/features/gen_ExtTextureNorm16.rs
new file mode 100644
index 00000000000..d4ab27eaf75
--- /dev/null
+++ b/crates/web-sys/src/features/gen_ExtTextureNorm16.rs
@@ -0,0 +1,48 @@
+#![allow(unused_imports)]
+use super::*;
+use wasm_bindgen::prelude::*;
+#[wasm_bindgen]
+extern "C" {
+    # [wasm_bindgen (is_type_of = | _ | false , extends = :: js_sys :: Object , js_name = EXT_texture_norm16 , typescript_type = "EXT_texture_norm16")]
+    #[derive(Debug, Clone, PartialEq, Eq)]
+    #[doc = "The `ExtTextureNorm16` class."]
+    #[doc = ""]
+    #[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/EXT_texture_norm16)"]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub type ExtTextureNorm16;
+}
+impl ExtTextureNorm16 {
+    #[doc = "The `EXT_texture_norm16.R16_EXT` const."]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub const R16_EXT: u32 = 33322u64 as u32;
+    #[doc = "The `EXT_texture_norm16.RG16_EXT` const."]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub const RG16_EXT: u32 = 33324u64 as u32;
+    #[doc = "The `EXT_texture_norm16.RGB16_EXT` const."]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub const RGB16_EXT: u32 = 32852u64 as u32;
+    #[doc = "The `EXT_texture_norm16.RGBA16_EXT` const."]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub const RGBA16_EXT: u32 = 32859u64 as u32;
+    #[doc = "The `EXT_texture_norm16.R16_SNORM_EXT` const."]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub const R16_SNORM_EXT: u32 = 36760u64 as u32;
+    #[doc = "The `EXT_texture_norm16.RG16_SNORM_EXT` const."]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub const RG16_SNORM_EXT: u32 = 36761u64 as u32;
+    #[doc = "The `EXT_texture_norm16.RGB16_SNORM_EXT` const."]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub const RGB16_SNORM_EXT: u32 = 36762u64 as u32;
+    #[doc = "The `EXT_texture_norm16.RGBA16_SNORM_EXT` const."]
+    #[doc = ""]
+    #[doc = "*This API requires the following crate features to be activated: `ExtTextureNorm16`*"]
+    pub const RGBA16_SNORM_EXT: u32 = 36763u64 as u32;
+}
diff --git a/crates/web-sys/src/features/mod.rs b/crates/web-sys/src/features/mod.rs
index 6ee7c1fa0f0..a83613cea17 100644
--- a/crates/web-sys/src/features/mod.rs
+++ b/crates/web-sys/src/features/mod.rs
@@ -1972,6 +1972,12 @@ mod gen_ExtTextureFilterAnisotropic;
 #[cfg(feature = "ExtTextureFilterAnisotropic")]
 pub use gen_ExtTextureFilterAnisotropic::*;
 
+#[cfg(feature = "ExtTextureNorm16")]
+#[allow(non_snake_case)]
+mod gen_ExtTextureNorm16;
+#[cfg(feature = "ExtTextureNorm16")]
+pub use gen_ExtTextureNorm16::*;
+
 #[cfg(feature = "ExtendableEvent")]
 #[allow(non_snake_case)]
 mod gen_ExtendableEvent;
diff --git a/crates/web-sys/webidls/enabled/WebGL2RenderingContext.webidl b/crates/web-sys/webidls/enabled/WebGL2RenderingContext.webidl
index 730ae2790d5..2b6efb550b5 100644
--- a/crates/web-sys/webidls/enabled/WebGL2RenderingContext.webidl
+++ b/crates/web-sys/webidls/enabled/WebGL2RenderingContext.webidl
@@ -722,3 +722,16 @@ WebGL2RenderingContext includes WebGL2RenderingContextBase;
 [NoInterfaceObject]
 interface EXT_color_buffer_float {
 };
+
+[NoInterfaceObject]
+interface EXT_texture_norm16
+{
+      const GLenum R16_EXT          = 0x822A;
+      const GLenum RG16_EXT         = 0x822C;
+      const GLenum RGB16_EXT        = 0x8054;
+      const GLenum RGBA16_EXT       = 0x805B;
+      const GLenum R16_SNORM_EXT    = 0x8F98;
+      const GLenum RG16_SNORM_EXT   = 0x8F99;
+      const GLenum RGB16_SNORM_EXT  = 0x8F9A;
+      const GLenum RGBA16_SNORM_EXT = 0x8F9B;
+};