diff options
author | Jeroen Bakker <jeroen@blender.org> | 2022-05-03 09:16:04 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2022-05-03 09:21:08 +0300 |
commit | e4e5d7781e9946cd39d44d846b7435406a6e9229 (patch) | |
tree | 6882474f2f7f9abb9f7a20aed2d8ddc9d3be002e /source/blender/windowmanager | |
parent | 4ee8dfa8b30fbbb2d700e961f8c686199af39fe6 (diff) |
Fix T97547: Stereo rendering crash.
Viewports weren't drawn as they couldn't get a lock. Resulted in compositing
uninitialized viewports. Fixed by checking that both views were drawn.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_draw.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 242c96903d3..02da798495b 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -702,6 +702,7 @@ static void wm_draw_window_offscreen(bContext *C, wmWindow *win, bool stereo) if (stereo && wm_draw_region_stereo_set(bmain, area, region, STEREO_LEFT_ID)) { wm_draw_region_buffer_create(region, true, use_viewport); + bool views_valid = true; for (int view = 0; view < 2; view++) { eStereoViews sview; @@ -717,8 +718,11 @@ static void wm_draw_window_offscreen(bContext *C, wmWindow *win, bool stereo) ED_region_do_draw(C, region); wm_draw_region_unbind(region); } + else { + views_valid = false; + } } - if (use_viewport) { + if (use_viewport && views_valid) { GPUViewport *viewport = region->draw_buffer->viewport; GPU_viewport_stereo_composite(viewport, win->stereo3d_format); } |