diff --git a/wgpu-hal/src/gles/command.rs b/wgpu-hal/src/gles/command.rs index 6c46c55991..3a4403d8b4 100644 --- a/wgpu-hal/src/gles/command.rs +++ b/wgpu-hal/src/gles/command.rs @@ -523,6 +523,8 @@ impl crate::CommandEncoder for super::CommandEncoder { .any(|at| match at.target.view.inner { #[cfg(webgl)] super::TextureInner::ExternalFramebuffer { .. } => true, + #[cfg(native)] + super::TextureInner::ExternalGlFrameBuffer { .. } => true, _ => false, }); diff --git a/wgpu-hal/src/gles/device.rs b/wgpu-hal/src/gles/device.rs index c5539eae35..73e9a4d3c8 100644 --- a/wgpu-hal/src/gles/device.rs +++ b/wgpu-hal/src/gles/device.rs @@ -969,6 +969,8 @@ impl crate::Device for super::Device { } #[cfg(webgl)] super::TextureInner::ExternalFramebuffer { .. } => {} + #[cfg(native)] + super::TextureInner::ExternalGlFrameBuffer { .. } => {} } } diff --git a/wgpu-hal/src/gles/mod.rs b/wgpu-hal/src/gles/mod.rs index c09fc21d24..7bd3bd5ec7 100644 --- a/wgpu-hal/src/gles/mod.rs +++ b/wgpu-hal/src/gles/mod.rs @@ -369,6 +369,10 @@ pub enum TextureInner { ExternalFramebuffer { inner: web_sys::WebGlFramebuffer, }, + #[cfg(native)] + ExternalGlFrameBuffer { + inner: glow::NativeFramebuffer, + }, } #[cfg(send_sync)] @@ -385,6 +389,8 @@ impl TextureInner { Self::Texture { raw, target } => (raw, target), #[cfg(webgl)] Self::ExternalFramebuffer { .. } => panic!("Unexpected external framebuffer"), + #[cfg(native)] + Self::ExternalGlFrameBuffer { .. } => panic!("unexpected external framebuffer"), } } } diff --git a/wgpu-hal/src/gles/queue.rs b/wgpu-hal/src/gles/queue.rs index 57cf07d38e..adcc11518f 100644 --- a/wgpu-hal/src/gles/queue.rs +++ b/wgpu-hal/src/gles/queue.rs @@ -158,6 +158,10 @@ impl super::Queue { super::TextureInner::ExternalFramebuffer { ref inner } => unsafe { gl.bind_external_framebuffer(glow::FRAMEBUFFER, inner); }, + #[cfg(native)] + super::TextureInner::ExternalGlFrameBuffer { ref inner } => unsafe { + gl.bind_framebuffer(glow::FRAMEBUFFER, Some(*inner)); + }, } }