    "./loggerd": 70.0,
    "./camerad": 41.0,
    "./locationd": 9.1,
    "selfdrive.controls.plannerd": 11.7,
    "./_ui": 33.0,
    "selfdrive.locationd.paramsd": 9.0,
    "./_sensord": 6.17,
    "selfdrive.controls.radard": 4.5,
    "./_modeld": 4.48,
    "./boardd": 3.63,
 
</s> remove   int latest_texture_id = -1;
 </s> add   VisionBuf *latest_frame = nullptr; </s> remove   std::unique_ptr<QOpenGLContext> ctx;
  std::unique_ptr<QOffscreenSurface> surface;
  std::unique_ptr<QOpenGLBuffer> gl_buffer;

  ctx = std::make_unique<QOpenGLContext>();
  ctx->setFormat(context()->format());
  ctx->setShareContext(context());
  ctx->create();
  assert(ctx->isValid());

  surface = std::make_unique<QOffscreenSurface>();
  surface->setFormat(ctx->format());
  surface->create();
  ctx->makeCurrent(surface.get());
  assert(QOpenGLContext::currentContext() == ctx.get());
  initializeOpenGLFunctions();

 </s> add  </s> remove   latest_texture_id = -1;
 </s> add   latest_frame = nullptr;
  "./_ui": 18.4,
    "./loggerd": 70.0,
    "./camerad": 41.0,
    "./locationd": 9.1,
    "selfdrive.controls.plannerd": 11.7,
  "./_ui": 18.4,
    "selfdrive.locationd.paramsd": 9.0,
    "./_sensord": 6.17,
    "selfdrive.controls.radard": 4.5,
    "./_modeld": 4.48,
    "./boardd": 3.63,
keep keep keep keep replace keep keep keep keep keep
 UI: remove memcpy on frame receive (#24318)

* UI: remove frame memcpy

* fix freezing

* fix onroad test 
selfdrive/test/test_onroad.py