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.
This commit is contained in:
Jeroen Bakker
2022-05-03 08:16:04 +02:00
parent 4ee8dfa8b3
commit e4e5d7781e

View File

@@ -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);
}