diff options
Diffstat (limited to 'components/webgl')
-rw-r--r-- | components/webgl/Cargo.toml | 1 | ||||
-rw-r--r-- | components/webgl/webgl_thread.rs | 23 |
2 files changed, 6 insertions, 18 deletions
diff --git a/components/webgl/Cargo.toml b/components/webgl/Cargo.toml index b0c1c0ceb29..542a3cb4fae 100644 --- a/components/webgl/Cargo.toml +++ b/components/webgl/Cargo.toml @@ -26,6 +26,7 @@ fnv = { workspace = true } glow = { workspace = true } half = "2" ipc-channel = { workspace = true } +itertools = { workspace = true } log = { workspace = true } pixels = { path = "../pixels" } snapshot = { workspace = true } diff --git a/components/webgl/webgl_thread.rs b/components/webgl/webgl_thread.rs index b1ac2b2d3c4..9562c4cb4e0 100644 --- a/components/webgl/webgl_thread.rs +++ b/components/webgl/webgl_thread.rs @@ -32,6 +32,7 @@ use glow::{ }; use half::f16; use ipc_channel::ipc::IpcSharedMemory; +use itertools::Itertools; use log::{debug, error, trace, warn}; use pixels::{self, PixelFormat, unmultiply_inplace}; use surfman::chains::{PreserveBuffer, SwapChains, SwapChainsAPI}; @@ -2570,24 +2571,10 @@ impl WebGLImpl { chan.send((range_min, range_max, precision)).unwrap(); } - fn get_extensions(gl: &Gl, chan: &WebGLSender<String>) { - let mut ext_count = [0]; - unsafe { - gl.get_parameter_i32_slice(gl::NUM_EXTENSIONS, &mut ext_count); - } - // Fall back to the depricated extensions API if that fails - if unsafe { gl.get_error() } != gl::NO_ERROR { - chan.send(unsafe { gl.get_parameter_string(gl::EXTENSIONS) }) - .unwrap(); - return; - } - let ext_count = ext_count[0] as usize; - let mut extensions = Vec::with_capacity(ext_count); - for idx in 0..ext_count { - extensions.push(unsafe { gl.get_parameter_indexed_string(gl::EXTENSIONS, idx as u32) }) - } - let extensions = extensions.join(" "); - chan.send(extensions).unwrap(); + /// This is an implementation of `getSupportedExtensions()` from + /// <https://registry.khronos.org/webgl/specs/latest/1.0/#5.14> + fn get_extensions(gl: &Gl, result_sender: &WebGLSender<String>) { + let _ = result_sender.send(gl.supported_extensions().iter().join(" ")); } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6 |