From 6ca397b84062d7b64aa0a81e5b88360d5320ffcd Mon Sep 17 00:00:00 2001 From: firestarsdog <229254897+firestarsdog@users.noreply.github.com> Date: Sat, 30 May 2026 03:24:04 -0400 Subject: [PATCH] BigUI WIP: Optimizations --- .../ui/layouts/settings/starpilot/maps.py | 9 +++++-- selfdrive/ui/onroad/model_renderer.py | 25 ++++++++++--------- selfdrive/ui/ui_state.py | 10 +++++--- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/selfdrive/ui/layouts/settings/starpilot/maps.py b/selfdrive/ui/layouts/settings/starpilot/maps.py index 5d72152b9..e4699650b 100644 --- a/selfdrive/ui/layouts/settings/starpilot/maps.py +++ b/selfdrive/ui/layouts/settings/starpilot/maps.py @@ -535,6 +535,7 @@ class StarPilotMapsLayout(StarPilotPanel): self._active_state_group_key = "whole_us" self._full_us_mode = True self._whole_us_context_initialized = False + self._cached_selected_tokens: set[str] = set() self._download_button = self._child( AetherButton( @@ -585,6 +586,9 @@ class StarPilotMapsLayout(StarPilotPanel): def _update_state(self): super()._update_state() + self._cached_selected_tokens = _selected_token_set( + self._params.get("MapsSelected", encoding="utf-8") or "" + ) self._sync_download_state() if self._pending_storage_state is not None: generation, storage_text, has_downloaded_data = self._pending_storage_state @@ -692,7 +696,7 @@ class StarPilotMapsLayout(StarPilotPanel): return _format_mb(total_size), has_files def _selected_tokens(self) -> set[str]: - return _selected_token_set(self._params.get("MapsSelected", encoding="utf-8") or "") + return self._cached_selected_tokens def _selected_count(self) -> int: return len(self._selected_tokens()) @@ -903,7 +907,7 @@ class StarPilotMapsLayout(StarPilotPanel): return token in self._selected_tokens() def _set_map_state(self, token: str, state: bool): - selected = self._selected_tokens() + selected = set(self._cached_selected_tokens) if state: if token == US_COUNTRY_TOKEN: selected = {item for item in selected if not item.startswith(STATE_PREFIX)} @@ -921,6 +925,7 @@ class StarPilotMapsLayout(StarPilotPanel): if self._active_state_group_key == "whole_us": self._active_state_group_key = STATES_SECTION["groups"][0]["key"] self._params.put("MapsSelected", sanitize_selected_locations_csv(sorted(selected))) + self._cached_selected_tokens = selected def _network_type(self): return ui_state.sm["deviceState"].networkType if ui_state.sm.valid.get("deviceState", False) else NetworkType.none diff --git a/selfdrive/ui/onroad/model_renderer.py b/selfdrive/ui/onroad/model_renderer.py index 582f082e4..d7b423eb1 100644 --- a/selfdrive/ui/onroad/model_renderer.py +++ b/selfdrive/ui/onroad/model_renderer.py @@ -125,7 +125,11 @@ class ModelRenderer(Widget): # StarPilot lead indicator visibility conditions hide_lead_marker = self._params.get_bool("HideLeadMarker") - lead_info_enabled = self._params.get_bool("LeadInfo") + self._lead_info_enabled = self._params.get_bool("LeadInfo") + self._use_rainbow = self._params.get_bool('RainbowPath', default=False) + self._use_accel_path = self._params.get_bool('AccelerationPath', default=True) + self._is_metric = self._params.get_bool('IsMetric') + lead_info_enabled = self._lead_info_enabled render_lead_indicator = (self._longitudinal_control or lead_info_enabled) and radar_state is not None and not hide_lead_marker # Update model data when needed @@ -261,13 +265,12 @@ class ModelRenderer(Widget): def _update_experimental_gradient(self): """Pre-calculate experimental mode gradient colors""" - use_rainbow = self._params.get_bool('RainbowPath', default=False) - if use_rainbow: + if self._use_rainbow: gradient_bottom, gradient_top = self._get_visible_gradient_bounds() self._exp_gradient = self._build_rainbow_gradient(gradient_bottom, gradient_top) return - if not self._experimental_mode or not self._params.get_bool('AccelerationPath', default=True): + if not self._experimental_mode or not self._use_accel_path: return max_len = min(len(self._path.projected_points) // 2, len(self._acceleration_x)) @@ -399,8 +402,8 @@ class ModelRenderer(Widget): allow_throttle = sm['longitudinalPlan'].allowThrottle or not self._longitudinal_control self._blend_filter.update(int(allow_throttle)) - use_rainbow = self._params.get_bool('RainbowPath', default=False) - use_accel_path = not use_rainbow and self._params.get_bool('AccelerationPath', default=True) + use_rainbow = self._use_rainbow + use_accel_path = not use_rainbow and self._use_accel_path if use_rainbow: if len(self._exp_gradient.colors) > 1: draw_polygon(self._rect, self._path.projected_points, gradient=self._exp_gradient) @@ -466,8 +469,7 @@ class ModelRenderer(Widget): rl.draw_triangle_fan(lead.chevron, len(lead.chevron), with_alpha(color, lead.fill_alpha)) # Draw metrics if enabled - lead_info_enabled = self._params.get_bool("LeadInfo") - if lead_info_enabled and i < len(leads) and leads[i] and leads[i].status: + if self._lead_info_enabled and i < len(leads) and leads[i] and leads[i].status: self._draw_lead_metrics(False, lead.chevron, leads[i]) def _update_adjacent_leads(self, starpilot_radar_state, path_x_array): @@ -511,8 +513,7 @@ class ModelRenderer(Widget): rl.draw_triangle_fan(lead.chevron, len(lead.chevron), with_alpha(color, lead.fill_alpha)) # Draw metrics if enabled - lead_info_enabled = self._params.get_bool("LeadInfo") - if lead_info_enabled: + if self._lead_info_enabled: self._draw_lead_metrics(True, lead.chevron, lead_data) def _draw_lead_metrics(self, adjacent, chevron, lead_data): @@ -894,14 +895,14 @@ class ModelRenderer(Widget): def _small_distance_to_half_m(self, value: float) -> float: if value <= 0: return 0.0 - if self._params.get_bool("IsMetric"): + if self._is_metric: return value / 200.0 return value * (CV.INCH_TO_CM / 100.0) / 2.0 def _path_width_to_half_m(self, value: float) -> float: if value <= 0: return 0.0 - if self._params.get_bool("IsMetric"): + if self._is_metric: return value / 2.0 return value * CV.FOOT_TO_METER / 2.0 diff --git a/selfdrive/ui/ui_state.py b/selfdrive/ui/ui_state.py index 220515bc0..6acde4e72 100644 --- a/selfdrive/ui/ui_state.py +++ b/selfdrive/ui/ui_state.py @@ -164,9 +164,11 @@ class UIState: self.light_sensor = -1 # Trust hardwared's filtered started state; raw ignition can flap on Toyota. + force_onroad = self.params.get_bool("ForceOnroad") + force_offroad = self.params.get_bool("ForceOffroad") started = self.sm["deviceState"].started - started |= self.params.get_bool("ForceOnroad") - started &= not self.params.get_bool("ForceOffroad") + started |= force_onroad + started &= not force_offroad self.started = started # Update recording audio state @@ -197,8 +199,8 @@ class UIState: except Exception as e: cloudlog.warning(f"Error parsing starpilot_toggles: {e}") - self.starpilot_toggles["force_offroad"] = self.params.get_bool("ForceOffroad") - self.starpilot_toggles["force_onroad"] = self.params.get_bool("ForceOnroad") + self.starpilot_toggles["force_offroad"] = force_offroad + self.starpilot_toggles["force_onroad"] = force_onroad def _update_status(self) -> None: if self.started and self.sm.updated["selfdriveState"]: