From b9c14c92a7603e2be08cb519cedfb19e563caeb9 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 27 Nov 2020 14:25:52 -0800 Subject: [PATCH] no gl inside nvg frame --- selfdrive/ui/paint.cc | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/selfdrive/ui/paint.cc b/selfdrive/ui/paint.cc index 72dae8134..944b3c917 100644 --- a/selfdrive/ui/paint.cc +++ b/selfdrive/ui/paint.cc @@ -234,7 +234,7 @@ static void ui_draw_vision_lane_lines(UIState *s) { NVGcolor color = nvgRGBAf(1.0, 1.0, 1.0, scene->lane_line_probs[ll_idx]); ui_draw_line(s, (pvd_ll + ll_idx)->v, (pvd_ll + ll_idx)->cnt, &color, nullptr); } - + // paint road edges line_vertices_data *pvd_re = &s->road_edge_vertices[0]; for (int re_idx = 0; re_idx < 2; re_idx++) { @@ -244,7 +244,7 @@ static void ui_draw_vision_lane_lines(UIState *s) { NVGcolor color = nvgRGBAf(1.0, 0.0, 0.0, std::clamp(1.0-scene->road_edge_stds[re_idx], 0.0, 1.0)); ui_draw_line(s, (pvd_re + re_idx)->v, (pvd_re + re_idx)->cnt, &color, nullptr); } - + // paint path if(s->sm->updated("modelV2")) { update_track_data(s, scene->model.getPosition(), &s->track_vertices); @@ -486,7 +486,7 @@ void ui_draw_vision_alert(UIState *s, cereal::ControlsState::AlertSize va_size, } } -static void ui_draw_vision(UIState *s) { +static void ui_draw_vision_frame(UIState *s) { const UIScene *scene = &s->scene; const Rect &viz_rect = scene->viz_rect; @@ -498,6 +498,10 @@ static void ui_draw_vision(UIState *s) { glDisable(GL_SCISSOR_TEST); glViewport(0, 0, s->fb_w, s->fb_h); +} + +static void ui_draw_vision(UIState *s) { + const UIScene *scene = &s->scene; // Draw augmented elements if (!scene->frontview && scene->world_objects_visible) { @@ -533,14 +537,22 @@ void ui_draw(UIState *s) { s->scene.ui_viz_ro = -(sbr_w - 6 * bdr_s); } + const bool draw_vision = s->started && s->active_app == cereal::UiLayoutState::App::NONE && + s->status != STATUS_OFFROAD && s->vision_connected; + + // GL drawing functions ui_draw_background(s); + if (draw_vision) { + ui_draw_vision_frame(s); + } glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glViewport(0, 0, s->fb_w, s->fb_h); + + // NVG drawing functions - should be no GL inside NVG frame nvgBeginFrame(s->vg, s->fb_w, s->fb_h, 1.0f); ui_draw_sidebar(s); - if (s->started && s->active_app == cereal::UiLayoutState::App::NONE && - s->status != STATUS_OFFROAD && s->vision_connected) { + if (draw_vision) { ui_draw_vision(s); } nvgEndFrame(s->vg);