webgl: Add an interface for getting the size of renderbuffers.

We need this for framebuffer status checking.
This commit is contained in:
Eric Anholt 2016-10-30 17:19:04 -07:00
parent f7875dad1a
commit 08938499a0

View file

@ -20,6 +20,7 @@ pub struct WebGLRenderbuffer {
id: WebGLRenderbufferId, id: WebGLRenderbufferId,
ever_bound: Cell<bool>, ever_bound: Cell<bool>,
is_deleted: Cell<bool>, is_deleted: Cell<bool>,
size: Cell<Option<(i32, i32)>>,
internal_format: Cell<Option<u32>>, internal_format: Cell<Option<u32>>,
#[ignore_heap_size_of = "Defined in ipc-channel"] #[ignore_heap_size_of = "Defined in ipc-channel"]
renderer: IpcSender<CanvasMsg>, renderer: IpcSender<CanvasMsg>,
@ -36,6 +37,7 @@ impl WebGLRenderbuffer {
is_deleted: Cell::new(false), is_deleted: Cell::new(false),
renderer: renderer, renderer: renderer,
internal_format: Cell::new(None), internal_format: Cell::new(None),
size: Cell::new(None),
} }
} }
@ -64,6 +66,10 @@ impl WebGLRenderbuffer {
self.id self.id
} }
pub fn size(&self) -> Option<(i32, i32)> {
self.size.get()
}
pub fn bind(&self, target: u32) { pub fn bind(&self, target: u32) {
self.ever_bound.set(true); self.ever_bound.set(true);
let msg = CanvasMsg::WebGL(WebGLCommand::BindRenderbuffer(target, Some(self.id))); let msg = CanvasMsg::WebGL(WebGLCommand::BindRenderbuffer(target, Some(self.id)));
@ -106,6 +112,8 @@ impl WebGLRenderbuffer {
internal_format, width, height)); internal_format, width, height));
self.renderer.send(msg).unwrap(); self.renderer.send(msg).unwrap();
self.size.set(Some((width, height)));
Ok(()) Ok(())
} }
} }