diff options
author | Josh Matthews <josh@joshmatthews.net> | 2018-08-01 15:40:53 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2018-08-02 02:05:53 -0400 |
commit | 03eb7e4dd2c36265319440db38100ba9aa92e182 (patch) | |
tree | 00bf6288bdebd3e64b4ca93f439b588dc2e490ef /components/script/dom/webglrenderingcontext.rs | |
parent | 3334e477c184bba409a280b104e60cc7107a5a15 (diff) | |
download | servo-03eb7e4dd2c36265319440db38100ba9aa92e182.tar.gz servo-03eb7e4dd2c36265319440db38100ba9aa92e182.zip |
webgl: Emulate some renderbuffer formats in non-GLES.
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index ec0d5238555..fbb4929a809 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -70,6 +70,12 @@ use std::cmp; use std::ptr::{self, NonNull}; use webrender_api; +pub fn is_gles() -> bool { + // TODO: align this with the actual kind of graphics context in use, rather than + // making assumptions based on platform + cfg!(any(target_os = "android", target_os = "ios")) +} + type ImagePixelResult = Result<(Vec<u8>, Size2D<i32>, bool), ()>; pub const MAX_UNIFORM_AND_ATTRIBUTE_LEN: usize = 256; @@ -2673,10 +2679,17 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { return NullValue(); } - let (sender, receiver) = webgl_channel().unwrap(); - self.send_command(WebGLCommand::GetRenderbufferParameter(target, pname, sender)); + let result = if pname == constants::RENDERBUFFER_INTERNAL_FORMAT { + let rb = self.bound_renderbuffer.get().unwrap(); + rb.internal_format() as i32 + } else { + let (sender, receiver) = webgl_channel().unwrap(); + self.send_command(WebGLCommand::GetRenderbufferParameter(target, pname, sender)); + receiver.recv().unwrap() + }; - Int32Value(receiver.recv().unwrap()) + + Int32Value(result) } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 |