mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Add support for WebGL2 FramebufferTextureLayer
Adds support for `FramebufferTextureLayer` WebGL2 call. See: https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.4
This commit is contained in:
parent
61cf25c98a
commit
8389189d94
9 changed files with 145 additions and 39 deletions
|
@ -3581,6 +3581,36 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
|
|||
height,
|
||||
))
|
||||
}
|
||||
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.4
|
||||
fn FramebufferTextureLayer(
|
||||
&self,
|
||||
target: u32,
|
||||
attachment: u32,
|
||||
texture: Option<&WebGLTexture>,
|
||||
level: i32,
|
||||
layer: i32,
|
||||
) {
|
||||
if let Some(tex) = texture {
|
||||
handle_potential_webgl_error!(self.base, self.base.validate_ownership(tex), return);
|
||||
}
|
||||
|
||||
let fb_slot = match target {
|
||||
constants::FRAMEBUFFER | constants::DRAW_FRAMEBUFFER => {
|
||||
self.base.get_draw_framebuffer_slot()
|
||||
},
|
||||
constants::READ_FRAMEBUFFER => self.base.get_read_framebuffer_slot(),
|
||||
_ => return self.base.webgl_error(InvalidEnum),
|
||||
};
|
||||
|
||||
match fb_slot.get() {
|
||||
Some(fb) => handle_potential_webgl_error!(
|
||||
self.base,
|
||||
fb.texture_layer(attachment, texture, level, layer)
|
||||
),
|
||||
None => self.base.webgl_error(InvalidOperation),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl LayoutCanvasWebGLRenderingContextHelpers for LayoutDom<WebGL2RenderingContext> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue