aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/webgl_paint_task.rs
diff options
context:
space:
mode:
authorecoal95 <ecoal95@gmail.com>2015-06-15 00:22:15 +0200
committerecoal95 <ecoal95@gmail.com>2015-07-06 19:54:06 +0200
commit42bd43a696939c3259284a01b8ef64aa13a9939c (patch)
tree254952a1f89c690b12667f2a101f970c3a29551c /components/canvas/webgl_paint_task.rs
parentb1765c68821d12a21cd304f7dffaa3bdc8f101e4 (diff)
downloadservo-42bd43a696939c3259284a01b8ef64aa13a9939c.tar.gz
servo-42bd43a696939c3259284a01b8ef64aa13a9939c.zip
webgl: Make bind* calls more spec-compliant
Diffstat (limited to 'components/canvas/webgl_paint_task.rs')
-rw-r--r--components/canvas/webgl_paint_task.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/components/canvas/webgl_paint_task.rs b/components/canvas/webgl_paint_task.rs
index 4f6e0605dd8..6aecf0eba33 100644
--- a/components/canvas/webgl_paint_task.rs
+++ b/components/canvas/webgl_paint_task.rs
@@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-use canvas_traits::{CanvasMsg, CanvasWebGLMsg, CanvasCommonMsg};
+use canvas_traits::{CanvasMsg, CanvasWebGLMsg, CanvasCommonMsg, WebGLShaderParameter, WebGLFramebufferBindingRequest};
use euclid::size::Size2D;
use core::nonzero::NonZero;
use gleam::gl;
@@ -109,8 +109,8 @@ impl WebGLPaintTask {
self.delete_shader(id),
CanvasWebGLMsg::BindBuffer(target, id) =>
self.bind_buffer(target, id),
- CanvasWebGLMsg::BindFramebuffer(target, id) =>
- self.bind_framebuffer(target, id),
+ CanvasWebGLMsg::BindFramebuffer(target, request) =>
+ self.bind_framebuffer(target, request),
CanvasWebGLMsg::BindRenderbuffer(target, id) =>
self.bind_renderbuffer(target, id),
CanvasWebGLMsg::BindTexture(target, id) =>
@@ -329,7 +329,13 @@ impl WebGLPaintTask {
}
#[inline]
- fn bind_framebuffer(&self, target: u32, id: u32) {
+ fn bind_framebuffer(&self, target: u32, request: WebGLFramebufferBindingRequest) {
+ let id = match request {
+ WebGLFramebufferBindingRequest::Explicit(id) => id,
+ WebGLFramebufferBindingRequest::Default =>
+ self.gl_context.borrow_draw_buffer().unwrap().get_framebuffer(),
+ };
+
gl::bind_framebuffer(target, id);
}