aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2026-01-18 17:51:59 +0100
committerAndre Weissflog <floooh@gmail.com>2026-01-18 17:51:59 +0100
commitd76e1f1d25d5dfb800b5f30dd76076ef50310af3 (patch)
tree9c72821ca4d243a5fcb0d262bb02125d0fa16144
parent79847279e42a3b2ffbeb0700927ec57aafaf388e (diff)
parent9989bacc7dd05e149806b8ee188ebcb25944edc2 (diff)
Merge branch 'luigi-rosso-fix_fbo_depth_attachment_switching'
-rw-r--r--CHANGELOG.md9
-rw-r--r--sokol_gfx.h8
2 files changed, 17 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8dff9e78..3e9043c0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
## Updates
+### 18-Jan-2026
+
+Happy New Year!
+
+- sokol_gfx.h gl: merged PR https://github.com/floooh/sokol/pull/1412 which fixes
+ a GL error on some drivers when switching between `GL_DEPTH_ATTACHMENT` and
+ `GL_DEPTH_STENCIL_ATTACHMENT`. Many thanks to @luigi-rosso for identifying
+ the issue and providing a fix!
+
### 13-Dec-2025
A WebGPU backend code cleanup round:
diff --git a/sokol_gfx.h b/sokol_gfx.h
index aaadb456..887f08a0 100644
--- a/sokol_gfx.h
+++ b/sokol_gfx.h
@@ -11365,6 +11365,14 @@ _SOKOL_PRIVATE void _sg_gl_begin_pass(const sg_pass* pass, const _sg_attachments
glFramebufferTexture2D(GL_FRAMEBUFFER, gl_att_type, GL_TEXTURE_2D, 0, 0);
}
if (atts->ds_view) {
+ // When switching between depth-only and depth-stencil attachments,
+ // explicitly detach BOTH attachment types first. Some GL drivers
+ // fail with GL_FRAMEBUFFER_UNSUPPORTED if both attachment types
+ // are bound to the same FBO.
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, 0, 0);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, 0, 0);
const _sg_view_t* view = atts->ds_view;
const _sg_image_t* img = _sg_image_ref_ptr(&view->cmn.img.ref);
const GLenum gl_att_type = _sg_gl_depth_stencil_attachment_type(img);