aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/webgl_thread.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2018-08-15 14:38:28 -0400
committerJosh Matthews <josh@joshmatthews.net>2018-09-10 15:56:16 -0400
commit15e2af0fea20a8141ea2eec4774607c434af0929 (patch)
tree549d56415b02f5f77ca8a7c964b330e5a2a858ba /components/canvas/webgl_thread.rs
parentd179435eabbcb2038a8c1c33f86465c10334eebc (diff)
downloadservo-15e2af0fea20a8141ea2eec4774607c434af0929.tar.gz
servo-15e2af0fea20a8141ea2eec4774607c434af0929.zip
webgl: Support DEPTH_STENCIL_ATTACHMENT on osmesa.
Diffstat (limited to 'components/canvas/webgl_thread.rs')
-rw-r--r--components/canvas/webgl_thread.rs31
1 files changed, 25 insertions, 6 deletions
diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs
index efbb4ca71c5..baa7abe2362 100644
--- a/components/canvas/webgl_thread.rs
+++ b/components/canvas/webgl_thread.rs
@@ -693,12 +693,31 @@ impl WebGLImpl {
ctx.gl().disable(cap),
WebGLCommand::Enable(cap) =>
ctx.gl().enable(cap),
- WebGLCommand::FramebufferRenderbuffer(target, attachment, renderbuffertarget, rb) =>
- ctx.gl().framebuffer_renderbuffer(target, attachment, renderbuffertarget,
- rb.map_or(0, WebGLRenderbufferId::get)),
- WebGLCommand::FramebufferTexture2D(target, attachment, textarget, texture, level) =>
- ctx.gl().framebuffer_texture_2d(target, attachment, textarget,
- texture.map_or(0, WebGLTextureId::get), level),
+ WebGLCommand::FramebufferRenderbuffer(target, attachment, renderbuffertarget, rb) => {
+ let attach = |attachment| {
+ ctx.gl().framebuffer_renderbuffer(target, attachment,
+ renderbuffertarget,
+ rb.map_or(0, WebGLRenderbufferId::get))
+ };
+ if attachment == gl::DEPTH_STENCIL_ATTACHMENT {
+ attach(gl::DEPTH_ATTACHMENT);
+ attach(gl::STENCIL_ATTACHMENT);
+ } else {
+ attach(attachment);
+ }
+ }
+ WebGLCommand::FramebufferTexture2D(target, attachment, textarget, texture, level) => {
+ let attach = |attachment| {
+ ctx.gl().framebuffer_texture_2d(target, attachment, textarget,
+ texture.map_or(0, WebGLTextureId::get), level)
+ };
+ if attachment == gl::DEPTH_STENCIL_ATTACHMENT {
+ attach(gl::DEPTH_ATTACHMENT);
+ attach(gl::STENCIL_ATTACHMENT);
+ } else {
+ attach(attachment)
+ }
+ }
WebGLCommand::FrontFace(mode) =>
ctx.gl().front_face(mode),
WebGLCommand::DisableVertexAttribArray(attrib_id) =>