aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2018-09-10 12:10:27 -0400
committerAnthony Ramine <n.oxyde@gmail.com>2018-11-05 14:13:46 +0100
commite31462c37c2305a8e88e5d27901299ff76d7a853 (patch)
treec2b653ca3a72e5ef8f215d54e3e6f2b873714848 /components/script/dom/webglrenderingcontext.rs
parent176d984b3badba7265f3e7442159adcb54d8b90e (diff)
downloadservo-e31462c37c2305a8e88e5d27901299ff76d7a853.tar.gz
servo-e31462c37c2305a8e88e5d27901299ff76d7a853.zip
Implement WEBGL_color_buffer_float and EXT_color_buffer_half_float (fixes #22113)
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r--components/script/dom/webglrenderingcontext.rs23
1 files changed, 11 insertions, 12 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 123e3e490be..786e3f71c33 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -808,7 +808,7 @@ impl WebGLRenderingContext {
width as i32,
height as i32,
format,
- data_type,
+ self.extension_manager.effective_type(data_type),
receiver,
));
sender.send(&pixels).unwrap();
@@ -1180,6 +1180,10 @@ impl WebGLRenderingContext {
pub fn bound_framebuffer(&self) -> Option<DomRoot<WebGLFramebuffer>> {
self.bound_framebuffer.get()
}
+
+ pub fn extension_manager(&self) -> &WebGLExtensions {
+ &self.extension_manager
+ }
}
#[cfg(not(feature = "webgl_backtrace"))]
@@ -4059,18 +4063,13 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
return self.webgl_error(InvalidValue);
}
- match self.bound_renderbuffer.get() {
- Some(rb) => {
- handle_potential_webgl_error!(self, rb.storage(internal_format, width, height));
- if let Some(fb) = self.bound_framebuffer.get() {
- fb.invalidate_renderbuffer(&*rb);
- }
- },
- None => self.webgl_error(InvalidOperation),
- };
+ let rb = handle_potential_webgl_error!(self, self.bound_renderbuffer.get().ok_or(InvalidOperation), return);
+ handle_potential_webgl_error!(self, rb.storage(internal_format, width, height));
+ if let Some(fb) = self.bound_framebuffer.get() {
+ fb.invalidate_renderbuffer(&*rb);
+ }
- // FIXME: We need to clear the renderbuffer before it can be
- // accessed. See https://github.com/servo/servo/issues/13710
+ // FIXME: https://github.com/servo/servo/issues/13710
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6