Page MenuHome

GPU: work around crash with Intel HD 4000 and macOS 10.15.7
ClosedPublic

Authored by Brecht Van Lommel (brecht) on Nov 19 2021, 11:48 PM.

Details

Summary

A recent security update to macOS 10.15.7 causes crashes when using Eevee and
various other 3D viewport features. It appears that glGenerateMipmap is
broken, causing a crash whenever its commands are flushed/submitted to the GPU.

Ideally this would be fixed in a driver update, however it's unlikely this will
happen. Earlier macOS versions have been receiving security updates for 2 years,
and that window has just passed for 10.15. Further, computers with these GPUs
can't upgrade to a newer macOS version.

As a workaround, disable mipmaps on these GPUs, by setting the mipmap max level
to 0 and not calling glGenerateMipmaps. Effects like depth of field also use
mipmaps, but fill in the mip levels by other means. In those cases we keep the
mipmap level.

Diff Detail

Repository
rB Blender
Branch
arcpatch-D13295 (branched from master)
Build Status
Buildable 18833
Build 18833: arc lint + arc unit

Event Timeline

Brecht Van Lommel (brecht) requested review of this revision.Nov 19 2021, 11:48 PM
Brecht Van Lommel (brecht) planned changes to this revision.
Brecht Van Lommel (brecht) created this revision.

More isolated solution.

Brecht Van Lommel (brecht) retitled this revision from macOS: attempt to work around crash with Intel HD 4000 and macOS 10.15.7 to GPU: work around crash with Intel HD 4000 and macOS 10.15.7.Nov 20 2021, 4:09 PM
Brecht Van Lommel (brecht) edited the summary of this revision. (Show Details)
source/blender/gpu/opengl/gl_texture.cc
318

We could actually never call glGenerateMipmap when !has_pixels_ because there is nothing to be done then. I'm not entirely sure what the driver ends up doing in such cases.

But for this fix I made it so behavior is only changed for this specific GPU, which should make it safe to include in 3.0.

Clément Foucault (fclem) added inline comments.
source/blender/gpu/opengl/gl_texture.cc
318

You are right. We could avoid it in this case.

This revision is now accepted and ready to land.Nov 20 2021, 5:32 PM