From 2d9c4026140c720152c8beced8ccdaa8898b4c9a Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 17 May 2026 02:08:39 -0700 Subject: [PATCH 1/3] bump msgq --- cereal/messaging/__init__.py | 10 +++++----- msgq_repo | 2 +- selfdrive/modeld/dmonitoringmodeld.py | 3 ++- selfdrive/modeld/modeld.py | 2 +- selfdrive/ui/mici/onroad/cameraview.py | 4 ++-- selfdrive/ui/onroad/cameraview.py | 4 ++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/cereal/messaging/__init__.py b/cereal/messaging/__init__.py index 47d109453a5732..158e3329e73f45 100644 --- a/cereal/messaging/__init__.py +++ b/cereal/messaging/__init__.py @@ -263,11 +263,11 @@ def send(self, s: str, dat: Union[bytes, capnp.lib.capnp._DynamicStructBuilder]) self.sock[s].send(dat) def wait_for_readers_to_update(self, s: str, timeout: int, dt: float = 0.05) -> bool: - for _ in range(int(timeout*(1./dt))): - if self.sock[s].all_readers_updated(): - return True - time.sleep(dt) - return False + try: + self.sock[s].wait_for_readers(timeout=timeout, interval=dt) + return True + except TimeoutError: + return False def all_readers_updated(self, s: str) -> bool: return self.sock[s].all_readers_updated() # type: ignore diff --git a/msgq_repo b/msgq_repo index 6e9dbd57681365..6189f41e8c7225 160000 --- a/msgq_repo +++ b/msgq_repo @@ -1 +1 @@ -Subproject commit 6e9dbd57681365e272e5fb3d2af20d0d9af7e76f +Subproject commit 6189f41e8c72256277c75299104a102632163d6a diff --git a/selfdrive/modeld/dmonitoringmodeld.py b/selfdrive/modeld/dmonitoringmodeld.py index 7b0a26f4acbd7b..755d7495dd1ddd 100755 --- a/selfdrive/modeld/dmonitoringmodeld.py +++ b/selfdrive/modeld/dmonitoringmodeld.py @@ -22,6 +22,7 @@ MODEL_PKL_PATH = MODELS_DIR / 'dmonitoring_model_tinygrad.pkl' METADATA_PATH = MODELS_DIR / 'dmonitoring_model_metadata.pkl' + class ModelState: inputs: dict[str, np.ndarray] output: np.ndarray @@ -51,7 +52,7 @@ def run(self, buf: VisionBuf, calib: np.ndarray, transform: np.ndarray) -> tuple t1 = time.perf_counter() - ptr = buf.data.ctypes.data + ptr = np.frombuffer(buf.data, dtype=np.uint8).ctypes.data # There is a ringbuffer of imgs, just cache tensors pointing to all of them if ptr not in self._blob_cache: self._blob_cache[ptr] = Tensor.from_blob(ptr, (self.frame_buf_params[3],), dtype='uint8', device=self.DEV) diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index 6aa94be4955bdf..956e63ce754de4 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -105,7 +105,7 @@ def slice_outputs(self, model_outputs: np.ndarray, output_slices: dict[str, slic def run(self, bufs: dict[str, VisionBuf], transforms: dict[str, np.ndarray], inputs: dict[str, np.ndarray], prepare_only: bool) -> dict[str, np.ndarray] | None: for key in bufs.keys(): - ptr = bufs[key].data.ctypes.data + ptr = np.frombuffer(bufs[key].data, dtype=np.uint8).ctypes.data yuv_size = self.frame_buf_params[key][3] # There is a ringbuffer of imgs, just cache tensors pointing to all of them cache_key = (key, ptr) diff --git a/selfdrive/ui/mici/onroad/cameraview.py b/selfdrive/ui/mici/onroad/cameraview.py index 57a8a2d5cea363..dfae1bd62ed8df 100644 --- a/selfdrive/ui/mici/onroad/cameraview.py +++ b/selfdrive/ui/mici/onroad/cameraview.py @@ -308,8 +308,8 @@ def _render_textures(self, src_rect: rl.Rectangle, dst_rect: rl.Rectangle) -> No y_data = self.frame.data[: self.frame.uv_offset] uv_data = self.frame.data[self.frame.uv_offset:] - rl.update_texture(self.texture_y, rl.ffi.cast("void *", y_data.ctypes.data)) - rl.update_texture(self.texture_uv, rl.ffi.cast("void *", uv_data.ctypes.data)) + rl.update_texture(self.texture_y, rl.ffi.from_buffer(y_data)) + rl.update_texture(self.texture_uv, rl.ffi.from_buffer(uv_data)) self._texture_needs_update = False # Render with shader diff --git a/selfdrive/ui/onroad/cameraview.py b/selfdrive/ui/onroad/cameraview.py index 544394846595de..3daf8143d55e4c 100644 --- a/selfdrive/ui/onroad/cameraview.py +++ b/selfdrive/ui/onroad/cameraview.py @@ -267,8 +267,8 @@ def _render_textures(self, src_rect: rl.Rectangle, dst_rect: rl.Rectangle) -> No y_data = self.frame.data[: self.frame.uv_offset] uv_data = self.frame.data[self.frame.uv_offset:] - rl.update_texture(self.texture_y, rl.ffi.cast("void *", y_data.ctypes.data)) - rl.update_texture(self.texture_uv, rl.ffi.cast("void *", uv_data.ctypes.data)) + rl.update_texture(self.texture_y, rl.ffi.from_buffer(y_data)) + rl.update_texture(self.texture_uv, rl.ffi.from_buffer(uv_data)) self._texture_needs_update = False # Render with shader From 8fe363bb05f7222291cc08ed228e5e55771ce1df Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 21 May 2026 14:47:30 -0700 Subject: [PATCH 2/3] bump msgq --- msgq_repo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msgq_repo b/msgq_repo index 6189f41e8c7225..9beb84af67527f 160000 --- a/msgq_repo +++ b/msgq_repo @@ -1 +1 @@ -Subproject commit 6189f41e8c72256277c75299104a102632163d6a +Subproject commit 9beb84af67527f7b6bfee349dcbe3dbb8d4f4789 From e5b82b23dd9acae765c8ba61875f706cc488d641 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 21 May 2026 14:49:15 -0700 Subject: [PATCH 3/3] fix ui --- selfdrive/ui/mici/onroad/cameraview.py | 4 ++-- selfdrive/ui/onroad/cameraview.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/selfdrive/ui/mici/onroad/cameraview.py b/selfdrive/ui/mici/onroad/cameraview.py index dfae1bd62ed8df..86dd95f46659e7 100644 --- a/selfdrive/ui/mici/onroad/cameraview.py +++ b/selfdrive/ui/mici/onroad/cameraview.py @@ -308,8 +308,8 @@ def _render_textures(self, src_rect: rl.Rectangle, dst_rect: rl.Rectangle) -> No y_data = self.frame.data[: self.frame.uv_offset] uv_data = self.frame.data[self.frame.uv_offset:] - rl.update_texture(self.texture_y, rl.ffi.from_buffer(y_data)) - rl.update_texture(self.texture_uv, rl.ffi.from_buffer(uv_data)) + rl.update_texture(self.texture_y, rl.ffi.cast("void *", rl.ffi.from_buffer(y_data))) + rl.update_texture(self.texture_uv, rl.ffi.cast("void *", rl.ffi.from_buffer(uv_data))) self._texture_needs_update = False # Render with shader diff --git a/selfdrive/ui/onroad/cameraview.py b/selfdrive/ui/onroad/cameraview.py index 3daf8143d55e4c..53c2ff8b0b699a 100644 --- a/selfdrive/ui/onroad/cameraview.py +++ b/selfdrive/ui/onroad/cameraview.py @@ -267,8 +267,8 @@ def _render_textures(self, src_rect: rl.Rectangle, dst_rect: rl.Rectangle) -> No y_data = self.frame.data[: self.frame.uv_offset] uv_data = self.frame.data[self.frame.uv_offset:] - rl.update_texture(self.texture_y, rl.ffi.from_buffer(y_data)) - rl.update_texture(self.texture_uv, rl.ffi.from_buffer(uv_data)) + rl.update_texture(self.texture_y, rl.ffi.cast("void *", rl.ffi.from_buffer(y_data))) + rl.update_texture(self.texture_uv, rl.ffi.cast("void *", rl.ffi.from_buffer(uv_data))) self._texture_needs_update = False # Render with shader