Skip to content

Commit 1da7cd4

Browse files
External gles framebuffer (#7671)
1 parent 70b06b1 commit 1da7cd4

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

wgpu-hal/src/gles/command.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,8 @@ impl crate::CommandEncoder for super::CommandEncoder {
523523
.any(|at| match at.target.view.inner {
524524
#[cfg(webgl)]
525525
super::TextureInner::ExternalFramebuffer { .. } => true,
526+
#[cfg(native)]
527+
super::TextureInner::ExternalNativeFramebuffer { .. } => true,
526528
_ => false,
527529
});
528530

wgpu-hal/src/gles/device.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -969,6 +969,8 @@ impl crate::Device for super::Device {
969969
}
970970
#[cfg(webgl)]
971971
super::TextureInner::ExternalFramebuffer { .. } => {}
972+
#[cfg(native)]
973+
super::TextureInner::ExternalNativeFramebuffer { .. } => {}
972974
}
973975
}
974976

wgpu-hal/src/gles/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,9 +366,21 @@ pub enum TextureInner {
366366
target: BindTarget,
367367
},
368368
#[cfg(webgl)]
369+
/// Render to a `WebGLFramebuffer`
370+
///
371+
/// This is a web feature
369372
ExternalFramebuffer {
370373
inner: web_sys::WebGlFramebuffer,
371374
},
375+
#[cfg(native)]
376+
/// Render to a `glow::NativeFramebuffer`
377+
/// Useful when the framebuffer to draw to
378+
/// has a non-zero framebuffer ID
379+
///
380+
/// This is a native feature
381+
ExternalNativeFramebuffer {
382+
inner: glow::NativeFramebuffer,
383+
},
372384
}
373385

374386
#[cfg(send_sync)]
@@ -385,6 +397,8 @@ impl TextureInner {
385397
Self::Texture { raw, target } => (raw, target),
386398
#[cfg(webgl)]
387399
Self::ExternalFramebuffer { .. } => panic!("Unexpected external framebuffer"),
400+
#[cfg(native)]
401+
Self::ExternalNativeFramebuffer { .. } => panic!("unexpected external framebuffer"),
388402
}
389403
}
390404
}

wgpu-hal/src/gles/queue.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ impl super::Queue {
158158
super::TextureInner::ExternalFramebuffer { ref inner } => unsafe {
159159
gl.bind_external_framebuffer(glow::FRAMEBUFFER, inner);
160160
},
161+
#[cfg(native)]
162+
super::TextureInner::ExternalNativeFramebuffer { ref inner } => unsafe {
163+
gl.bind_framebuffer(glow::FRAMEBUFFER, Some(*inner));
164+
},
161165
}
162166
}
163167

0 commit comments

Comments
 (0)