aboutsummaryrefslogtreecommitdiffstats
path: root/components/webgl
diff options
context:
space:
mode:
Diffstat (limited to 'components/webgl')
-rw-r--r--components/webgl/Cargo.toml1
-rw-r--r--components/webgl/webgl_thread.rs23
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