aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2018-08-01 15:40:53 -0400
committerJosh Matthews <josh@joshmatthews.net>2018-08-02 02:05:53 -0400
commit03eb7e4dd2c36265319440db38100ba9aa92e182 (patch)
tree00bf6288bdebd3e64b4ca93f439b588dc2e490ef /components/script/dom/webglrenderingcontext.rs
parent3334e477c184bba409a280b104e60cc7107a5a15 (diff)
downloadservo-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.rs19
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