Skip to content

Commit 5d63351

Browse files
committed
Add warnings when GPU metrics are unsupported, and disable the display (instead of showing empty bars / zero values)
1 parent f26413f commit 5d63351

File tree

1 file changed

+76
-56
lines changed

1 file changed

+76
-56
lines changed

library/stats.py

Lines changed: 76 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -181,66 +181,86 @@ def temperature():
181181

182182
def display_gpu_stats(load, memory_percentage, memory_used, temperature):
183183
if THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("SHOW", False):
184-
# logger.debug(f"GPU Load: {load}")
185-
display.lcd.DisplayProgressBar(
186-
x=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("X", 0),
187-
y=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("Y", 0),
188-
width=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("WIDTH", 0),
189-
height=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("HEIGHT", 0),
190-
value=int(load) if not math.isnan(load) else 0,
191-
min_value=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("MIN_VALUE", 0),
192-
max_value=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("MAX_VALUE", 100),
193-
bar_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BAR_COLOR", (0, 0, 0)),
194-
bar_outline=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BAR_OUTLINE", False),
195-
background_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BACKGROUND_COLOR", (255, 255, 255)),
196-
background_image=get_full_path(THEME_DATA['PATH'],
197-
THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BACKGROUND_IMAGE",
198-
None))
199-
)
184+
if math.isnan(load):
185+
logger.warning("Your GPU load is not supported yet")
186+
THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH']['SHOW'] = False
187+
else:
188+
# logger.debug(f"GPU Load: {load}")
189+
display.lcd.DisplayProgressBar(
190+
x=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("X", 0),
191+
y=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("Y", 0),
192+
width=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("WIDTH", 0),
193+
height=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("HEIGHT", 0),
194+
value=int(load),
195+
min_value=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("MIN_VALUE", 0),
196+
max_value=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("MAX_VALUE", 100),
197+
bar_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BAR_COLOR", (0, 0, 0)),
198+
bar_outline=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BAR_OUTLINE", False),
199+
background_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BACKGROUND_COLOR",
200+
(255, 255, 255)),
201+
background_image=get_full_path(THEME_DATA['PATH'],
202+
THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BACKGROUND_IMAGE",
203+
None))
204+
)
200205

201206
if THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("SHOW", False):
202-
display.lcd.DisplayText(
203-
text=f"{int(load):>3}%" if not math.isnan(load) else f"{int(0):>3}%",
204-
x=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("X", 0),
205-
y=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("Y", 0),
206-
font=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
207-
font_size=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("FONT_SIZE", 10),
208-
font_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("FONT_COLOR", (0, 0, 0)),
209-
background_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)),
210-
background_image=get_full_path(THEME_DATA['PATH'],
211-
THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("BACKGROUND_IMAGE",
212-
None))
213-
)
207+
if math.isnan(load):
208+
logger.warning("Your GPU load is not supported yet")
209+
THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT']['SHOW'] = False
210+
else:
211+
display.lcd.DisplayText(
212+
text=f"{int(load):>3}%",
213+
x=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("X", 0),
214+
y=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("Y", 0),
215+
font=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
216+
font_size=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("FONT_SIZE", 10),
217+
font_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("FONT_COLOR", (0, 0, 0)),
218+
background_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("BACKGROUND_COLOR",
219+
(255, 255, 255)),
220+
background_image=get_full_path(THEME_DATA['PATH'],
221+
THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("BACKGROUND_IMAGE",
222+
None))
223+
)
214224

215225
if THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("SHOW", False):
216-
# logger.debug(f"GPU Load: {load}")
217-
display.lcd.DisplayProgressBar(
218-
x=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("X", 0),
219-
y=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("Y", 0),
220-
width=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("WIDTH", 0),
221-
height=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("HEIGHT", 0),
222-
value=int(memory_percentage),
223-
min_value=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("MIN_VALUE", 0),
224-
max_value=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("MAX_VALUE", 100),
225-
bar_color=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BAR_COLOR", (0, 0, 0)),
226-
bar_outline=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BAR_OUTLINE", False),
227-
background_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BACKGROUND_COLOR", (255, 255, 255)),
228-
background_image=get_full_path(THEME_DATA['PATH'],
229-
THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BACKGROUND_IMAGE", None))
230-
)
226+
if math.isnan(memory_percentage):
227+
logger.warning("Your GPU memory relative usage (%) is not supported yet")
228+
THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH']['SHOW'] = False
229+
else:
230+
display.lcd.DisplayProgressBar(
231+
x=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("X", 0),
232+
y=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("Y", 0),
233+
width=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("WIDTH", 0),
234+
height=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("HEIGHT", 0),
235+
value=int(memory_percentage),
236+
min_value=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("MIN_VALUE", 0),
237+
max_value=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("MAX_VALUE", 100),
238+
bar_color=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BAR_COLOR", (0, 0, 0)),
239+
bar_outline=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BAR_OUTLINE", False),
240+
background_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BACKGROUND_COLOR",
241+
(255, 255, 255)),
242+
background_image=get_full_path(THEME_DATA['PATH'],
243+
THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BACKGROUND_IMAGE",
244+
None))
245+
)
231246

232247
if THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("SHOW", False):
233-
display.lcd.DisplayText(
234-
text=f"{int(memory_used / 1000000):>5} M",
235-
x=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("X", 0),
236-
y=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("Y", 0),
237-
font=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
238-
font_size=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("FONT_SIZE", 10),
239-
font_color=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("FONT_COLOR", (0, 0, 0)),
240-
background_color=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)),
241-
background_image=get_full_path(THEME_DATA['PATH'],
242-
THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("BACKGROUND_IMAGE", None))
243-
)
248+
if math.isnan(memory_percentage):
249+
logger.warning("Your GPU memory absolute usage (M) is not supported yet")
250+
THEME_DATA['STATS']['GPU']['MEMORY']['TEXT']['SHOW'] = False
251+
else:
252+
display.lcd.DisplayText(
253+
text=f"{int(memory_used / 1000000):>5} M",
254+
x=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("X", 0),
255+
y=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("Y", 0),
256+
font=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
257+
font_size=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("FONT_SIZE", 10),
258+
font_color=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("FONT_COLOR", (0, 0, 0)),
259+
background_color=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)),
260+
background_image=get_full_path(THEME_DATA['PATH'],
261+
THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("BACKGROUND_IMAGE",
262+
None))
263+
)
244264

245265
if THEME_DATA['STATS']['GPU']['TEMPERATURE']['TEXT'].get("SHOW", False):
246266
display.lcd.DisplayText(
@@ -320,8 +340,8 @@ def stats():
320340
temperature_all = [item.getCurrentTemperature() for item in amd_gpus]
321341
temperature = sum(temperature_all) / len(temperature_all)
322342

323-
# Memory usage not supported by pyadl
324-
display_gpu_stats(load, -1, -1, temperature)
343+
# Memory absolute (M) and relative (%) usage not supported by pyadl
344+
display_gpu_stats(load, math.nan, math.nan, temperature)
325345

326346
@staticmethod
327347
def is_available():

0 commit comments

Comments
 (0)