Page MenuHome

Draw manager: Validate the draw state matches framebuffer.
Needs ReviewPublic

Authored by Jeroen Bakker (jbakker) on Sep 2 2022, 4:39 PM.

Details

Summary

When draw state uses depth, check if the framebuffer has a depth attachment.
This test is failing for overlay_image background images which seems to be the cause for T100034: Glitches with new AMD drivers (Adrenalin 22.7.1 or 22.8.2) when overlay has transparent images.
This patch makes sure that this invalid state is shown to developers.

libsystem_kernel.dylib!__pthread_kill (Unknown Source:0)
libsystem_pthread.dylib!pthread_kill (Unknown Source:0)
libsystem_c.dylib!abort (Unknown Source:0)
Blender!_BLI_assert_abort (/Users/jeroen/blender-git/blender/source/blender/blenlib/intern/BLI_assert.c:46)
Blender!drw_validate_state (/Users/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager_exec.c:969)
Blender!draw_shgroup (/Users/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager_exec.c:1015)
Blender!drw_draw_pass_ex (/Users/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager_exec.c:1216)
Blender!DRW_draw_pass (/Users/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager_exec.c:1256)
Blender!OVERLAY_image_background_draw (/Users/jeroen/blender-git/blender/source/blender/draw/engines/overlay/overlay_image.c:469)
Blender!OVERLAY_draw_scene (/Users/jeroen/blender-git/blender/source/blender/draw/engines/overlay/overlay_engine.c:572)
Blender!drw_engines_draw_scene (/Users/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager.c:1083)
Blender!DRW_draw_render_loop_ex (/Users/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager.c:1726)
Blender!DRW_draw_view (/Users/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager.c:1606)
Blender!view3d_draw_view (/Users/jeroen/blender-git/blender/source/blender/editors/space_view3d/view3d_draw.c:1540)
Blender!view3d_main_region_draw (/Users/jeroen/blender-git/blender/source/blender/editors/space_view3d/view3d_draw.c:1562)
Blender!ED_region_do_draw (/Users/jeroen/blender-git/blender/source/blender/editors/screen/area.c:546)
Blender!wm_draw_window_offscreen (/Users/jeroen/blender-git/blender/source/blender/windowmanager/intern/wm_draw.c:944)
Blender!wm_draw_window (/Users/jeroen/blender-git/blender/source/blender/windowmanager/intern/wm_draw.c:1111)
Blender!wm_draw_update (/Users/jeroen/blender-git/blender/source/blender/windowmanager/intern/wm_draw.c:1371)
Blender!WM_main (/Users/jeroen/blender-git/blender/source/blender/windowmanager/intern/wm.c:646)

I didn't add it into the GPU module as I couldn't locate a nice entry point. In the
draw manager this is isolated.

Should also be added to the new draw manager.

Diff Detail

Repository
rB Blender
Branch
temp-draw-manager-depth-validation (branched from master)
Build Status
Buildable 23599
Build 23599: arc lint + arc unit