From 191a8efae6a4e647f864407ce36b42c1acc62bce Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sun, 31 Oct 2021 20:00:01 -0700 Subject: [PATCH] gles: Fix rendering to cubemap faces (#2139) --- wgpu-hal/src/gles/queue.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/wgpu-hal/src/gles/queue.rs b/wgpu-hal/src/gles/queue.rs index 99ba003360..c79f47b9e9 100644 --- a/wgpu-hal/src/gles/queue.rs +++ b/wgpu-hal/src/gles/queue.rs @@ -20,9 +20,12 @@ fn extract_marker<'a>(data: &'a [u8], range: &std::ops::Range) -> &'a str { std::str::from_utf8(&data[range.start as usize..range.end as usize]).unwrap() } -fn is_3d_target(target: super::BindTarget) -> bool { +fn is_layered_target(target: super::BindTarget) -> bool { match target { - glow::TEXTURE_2D_ARRAY | glow::TEXTURE_3D => true, + glow::TEXTURE_2D_ARRAY + | glow::TEXTURE_3D + | glow::TEXTURE_CUBE_MAP + | glow::TEXTURE_CUBE_MAP_ARRAY => true, _ => false, } } @@ -83,7 +86,7 @@ impl super::Queue { gl.framebuffer_renderbuffer(fbo_target, attachment, glow::RENDERBUFFER, Some(raw)); } super::TextureInner::Texture { raw, target } => { - if is_3d_target(target) { + if is_layered_target(target) { gl.framebuffer_texture_layer( fbo_target, attachment, @@ -293,10 +296,9 @@ impl super::Queue { dst_target, ref copy, } => { - //TODO: cubemaps //TODO: handle 3D copies gl.bind_framebuffer(glow::READ_FRAMEBUFFER, Some(self.copy_fbo)); - if is_3d_target(src_target) { + if is_layered_target(src_target) { //TODO: handle GLES without framebuffer_texture_3d gl.framebuffer_texture_layer( glow::READ_FRAMEBUFFER, @@ -316,7 +318,7 @@ impl super::Queue { } gl.bind_texture(dst_target, Some(dst)); - if is_3d_target(dst_target) { + if is_layered_target(dst_target) { gl.copy_tex_sub_image_3d( dst_target, copy.dst_base.mip_level as i32, @@ -544,7 +546,7 @@ impl super::Queue { }); gl.bind_framebuffer(glow::READ_FRAMEBUFFER, Some(self.copy_fbo)); - if is_3d_target(src_target) { + if is_layered_target(src_target) { //TODO: handle GLES without framebuffer_texture_3d gl.framebuffer_texture_layer( glow::READ_FRAMEBUFFER,