Description
Any third-party mod that calls vanilla RenderTarget.copyDepthFrom(mainTarget) fails every frame on Mesa drivers with:
GL_INVALID_OPERATION in glBlitFramebuffer(depth attachment format mismatch)
With Veil installed, the main target's depth attachment ends up as GL_DEPTH32F_STENCIL8. Mods that create plain vanilla TextureTargets get the unsized GL_DEPTH_COMPONENT default. glBlitFramebuffer requires depth formats to match exactly, and Mesa enforces that, so the depth copy silently fails and the other mod's depth-based effects break. In my case the caller is Creature Feature (its CFGameRendererMixin does copyDepthFrom(main) once per frame per target). Intrablitting on Veil works, it's just interblitting when the game expects vanilla buffers that breaks.
I'm reporting it here because Veil is the one that decides the main target's format, and because PerformanceRenderTargetMixin already intercepts copyDepthFrom, which seems like the natural place to catch the mismatch and fall back to a shader-based copy or do literally anything but explode my log files.
To Reproduce
- Install Veil plus Creature Feature 1.2.3.2
- Use a machine with a Mesa driver (Linux, Intel/AMD)
- Join any world
- Watch the log fill with
GL_INVALID_OPERATION in glBlitFramebuffer(depth attachment format mismatch) every frame
Expected Behavior
The depth copy either works or openly fails once instead of flooding my log every frame
Screenshots
N/A
System Information
- Veil Version: 4.3.2 (bundled inside Sable 2.0.5)
- Minecraft Version: 1.21.1
- Loader & Loader Version: NeoForge 21.1.248
- Operating System: NixOS 26.11 (Linux), Mesa 26.2.0
- CPU: Intel Core i5-6300U
- GPU: Intel HD Graphics 520 (SKL GT2)
- RAM: 16GB
Additional Context
Twin of #189?
Update: Dinky little mod that reaches in, scans for, and changes all broken fbo depth attachments to match the correct format every so often works as a workaround for me right now. This might also affect vanilla glowing outlines on Mesa?
Description
Any third-party mod that calls vanilla
RenderTarget.copyDepthFrom(mainTarget)fails every frame on Mesa drivers with:With Veil installed, the main target's depth attachment ends up as
GL_DEPTH32F_STENCIL8. Mods that create plain vanillaTextureTargets get the unsizedGL_DEPTH_COMPONENTdefault.glBlitFramebufferrequires depth formats to match exactly, and Mesa enforces that, so the depth copy silently fails and the other mod's depth-based effects break. In my case the caller is Creature Feature (itsCFGameRendererMixindoescopyDepthFrom(main)once per frame per target). Intrablitting on Veil works, it's just interblitting when the game expects vanilla buffers that breaks.I'm reporting it here because Veil is the one that decides the main target's format, and because
PerformanceRenderTargetMixinalready interceptscopyDepthFrom, which seems like the natural place to catch the mismatch and fall back to a shader-based copy or do literally anything but explode my log files.To Reproduce
GL_INVALID_OPERATION in glBlitFramebuffer(depth attachment format mismatch)every frameExpected Behavior
The depth copy either works or openly fails once instead of flooding my log every frame
Screenshots
N/A
System Information
Additional Context
Twin of #189?
Update: Dinky little mod that reaches in, scans for, and changes all broken fbo depth attachments to match the correct format every so often works as a workaround for me right now. This might also affect vanilla glowing outlines on Mesa?