Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package amdgpu_top for openSUSE:Factory checked in at 2026-05-21 18:28:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/amdgpu_top (Old) and /work/SRC/openSUSE:Factory/.amdgpu_top.new.2084 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "amdgpu_top" Thu May 21 18:28:02 2026 rev:12 rq:1354282 version:0.11.5 Changes: -------- --- /work/SRC/openSUSE:Factory/amdgpu_top/amdgpu_top.changes 2026-05-04 17:34:24.291253004 +0200 +++ /work/SRC/openSUSE:Factory/.amdgpu_top.new.2084/amdgpu_top.changes 2026-05-21 18:30:08.349466609 +0200 @@ -1,0 +2,11 @@ +Tue May 19 11:21:27 UTC 2026 - ecsos <[email protected]> + +- Update to version 0.11.5: + * v0.11.5 + * lib: fix fd leak + * update libdrm_amdgpu_sys + * tui: change the background color in dark mode + * json: fix average_dram_writes + * update metainfo + +------------------------------------------------------------------- Old: ---- amdgpu_top-0.11.4.obscpio New: ---- amdgpu_top-0.11.5.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ amdgpu_top.spec ++++++ --- /var/tmp/diff_new_pack.oc6l7K/_old 2026-05-21 18:30:17.421840078 +0200 +++ /var/tmp/diff_new_pack.oc6l7K/_new 2026-05-21 18:30:17.425840243 +0200 @@ -17,7 +17,7 @@ Name: amdgpu_top -Version: 0.11.4 +Version: 0.11.5 Release: 0 Summary: Tool that displays AMD GPU utilization License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.oc6l7K/_old 2026-05-21 18:30:17.461841725 +0200 +++ /var/tmp/diff_new_pack.oc6l7K/_new 2026-05-21 18:30:17.465841890 +0200 @@ -6,7 +6,7 @@ <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v([\.\d]+)</param> <param name="versionrewrite-replacement">\1</param> - <param name="revision">v0.11.4</param> + <param name="revision">v0.11.5</param> <param name="changesgenerate">enable</param> </service> <service name="tar" mode="buildtime"/> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.oc6l7K/_old 2026-05-21 18:30:17.489842878 +0200 +++ /var/tmp/diff_new_pack.oc6l7K/_new 2026-05-21 18:30:17.493843042 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/Umio-Yasuno/amdgpu_top.git</param> - <param name="changesrevision">42571ae2a5339d62140668f3fcb84a47715bd02d</param></service></servicedata> + <param name="changesrevision">2dd52abf79c2bf3e0720b116228deafa94ace8a3</param></service></servicedata> (No newline at EOF) ++++++ amdgpu_top-0.11.4.obscpio -> amdgpu_top-0.11.5.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/Cargo.lock new/amdgpu_top-0.11.5/Cargo.lock --- old/amdgpu_top-0.11.4/Cargo.lock 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/Cargo.lock 2026-05-18 17:25:15.000000000 +0200 @@ -65,7 +65,7 @@ [[package]] name = "amdgpu_top" -version = "0.11.4" +version = "0.11.5" dependencies = [ "amdgpu_top_gui", "amdgpu_top_json", @@ -77,7 +77,7 @@ [[package]] name = "amdgpu_top_gui" -version = "0.11.4" +version = "0.11.5" dependencies = [ "eframe", "egui_plot", @@ -91,7 +91,7 @@ [[package]] name = "amdgpu_top_json" -version = "0.11.4" +version = "0.11.5" dependencies = [ "libamdgpu_top", "serde_json", @@ -99,7 +99,7 @@ [[package]] name = "amdgpu_top_tui" -version = "0.11.4" +version = "0.11.5" dependencies = [ "cursive", "libamdgpu_top", @@ -2868,7 +2868,7 @@ [[package]] name = "libamdgpu_top" -version = "0.11.4" +version = "0.11.5" dependencies = [ "libdrm_amdgpu_sys", "nix", @@ -2883,8 +2883,8 @@ [[package]] name = "libdrm_amdgpu_sys" -version = "0.8.13" -source = "git+https://github.com/Umio-Yasuno/libdrm-amdgpu-sys-rs?rev=7714cb3f810342d22c56154cf8501d072759709a#7714cb3f810342d22c56154cf8501d072759709a" +version = "0.8.14" +source = "git+https://github.com/Umio-Yasuno/libdrm-amdgpu-sys-rs?rev=c87eff736523054247f1192796a5f47560cd35db#c87eff736523054247f1192796a5f47560cd35db" dependencies = [ "libc", "libloading", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/Cargo.toml new/amdgpu_top-0.11.5/Cargo.toml --- old/amdgpu_top-0.11.4/Cargo.toml 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/Cargo.toml 2026-05-18 17:25:15.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "amdgpu_top" -version = "0.11.4" +version = "0.11.5" edition = "2024" license = "MIT" repository = "https://github.com/Umio-Yasuno/amdgpu_top" @@ -42,20 +42,20 @@ ] [workspace.package] -version = "0.11.4" +version = "0.11.5" edition = "2024" authors = ["Umio Yasuno <[email protected]>"] repository = "https://github.com/Umio-Yasuno/amdgpu_top" [workspace.dependencies] -libamdgpu_top = { path = "crates/libamdgpu_top", version = "0.11.4", default-features = false } +libamdgpu_top = { path = "crates/libamdgpu_top", version = "0.11.5", default-features = false } num_enum = "0.7.5" [dependencies] libamdgpu_top = { workspace = true } -amdgpu_top_tui = { path = "crates/amdgpu_top_tui/", version = "0.11.4", optional = true, default-features = false } -amdgpu_top_gui = { path = "crates/amdgpu_top_gui/", version = "0.11.4", optional = true, default-features = false } -amdgpu_top_json = { path = "crates/amdgpu_top_json/", version = "0.11.4", optional = true, default-features = false } +amdgpu_top_tui = { path = "crates/amdgpu_top_tui/", version = "0.11.5", optional = true, default-features = false } +amdgpu_top_gui = { path = "crates/amdgpu_top_gui/", version = "0.11.5", optional = true, default-features = false } +amdgpu_top_json = { path = "crates/amdgpu_top_json/", version = "0.11.5", optional = true, default-features = false } libc = { version = "0.2", optional = true } [build-dependencies] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/assets/io.github.umio_yasuno.amdgpu_top.metainfo.xml new/amdgpu_top-0.11.5/assets/io.github.umio_yasuno.amdgpu_top.metainfo.xml --- old/amdgpu_top-0.11.4/assets/io.github.umio_yasuno.amdgpu_top.metainfo.xml 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/assets/io.github.umio_yasuno.amdgpu_top.metainfo.xml 2026-05-18 17:25:15.000000000 +0200 @@ -29,8 +29,12 @@ <image>https://github.com/Umio-Yasuno/amdgpu_top/assets/53935716/66c3fb7e-cb23-4a19-ab10-2bb9919a1a8a</image> </screenshot> <screenshot type="default"> - <caption>amdgpu_top TUI mode</caption> - <image>https://github.com/Umio-Yasuno/amdgpu_top/assets/53935716/859010d8-07b3-411c-b079-c4a837855d41</image> + <caption>amdgpu_top TUI light mode</caption> + <image>https://github.com/user-attachments/assets/006769be-cfdf-493e-bb0e-5e4389058a0a</image> + </screenshot> + <screenshot type="default"> + <caption>amdgpu_top TUI dark mode</caption> + <image>https://github.com/user-attachments/assets/2e9afa33-12cc-48fd-981e-8c3c40af541b</image> </screenshot> <screenshot type="default"> <caption>amdgpu_top GUI mode</caption> @@ -39,6 +43,49 @@ </screenshots> <releases> + <release version="0.11.5" date="2026-05-19"> + <description> + <p>Changelog</p> + <ul> + <li>lib: update libdrm_amdgpu_sys</li> + <li>lib: fix fd leak #163</li> + </ul> + <ul> + <li>tui: change the background color in dark mode</li> + </ul> + <ul> + <li>json: fix average_dram_writes #161</li> + </ul> + </description> + <url>https://github.com/Umio-Yasuno/amdgpu_top/releases/tag/v0.11.5</url> + </release> + <release version="0.11.4" date="2026-04-23"> + <description> + <p>Changelog</p> + <ul> + <li>update screenshots</li> + <li>update dependencies</li> + </ul> + <ul> + <li>lib: Fix compared values for fdinfo sorting</li> + <li>lib: remove duplicate read for power_cap</li> + <li>lib, xdna: rename pid_map to pre_proc_usage_map, rename get_all_proc_usage to update_proc_usage</li> + <li>lib: improve FdInfoStat::{get_cpu_time,get_proc_usage}</li> + <li>lib: do not push to list if ids_count equals 0</li> + <li>lib: remove pre proc usage from hashmap when ids_count is 0</li> + <li>lib, xdna: remove pre proc usage from the hashmap if the process has already exited</li> + <li>lib, xdna: fix memory leak of pre_proc_usage_map</li> + </ul> + <ul> + <li>tui: fix the case of selected device is suspended</li> + <li>tui: use GTT sort when VRAM sort type is selected on APU</li> + </ul> + <ul> + <li>gui: update plot data in data thread</li> + </ul> + </description> + <url>https://github.com/Umio-Yasuno/amdgpu_top/releases/tag/v0.11.4</url> + </release> <release version="0.11.3" date="2026-03-30"> <description> <p>Changelog</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/crates/amdgpu_top_json/src/output_json.rs new/amdgpu_top-0.11.5/crates/amdgpu_top_json/src/output_json.rs --- old/amdgpu_top-0.11.4/crates/amdgpu_top_json/src/output_json.rs 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/crates/amdgpu_top_json/src/output_json.rs 2026-05-18 17:25:15.000000000 +0200 @@ -364,7 +364,7 @@ ("average_soc_current", self.get_average_soc_current()), ("average_gfx_current", self.get_average_gfx_current()), ("average_dram_reads", self.get_average_dram_reads()), - ("average_dram_writes", self.get_average_dram_reads()), + ("average_dram_writes", self.get_average_dram_writes()), ("average_ipu_reads", self.get_average_ipu_reads()), ("average_ipu_writes", self.get_average_ipu_reads()), ("stapm_power_limit", self.get_stapm_power_limit()), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/crates/amdgpu_top_tui/src/lib.rs new/amdgpu_top-0.11.5/crates/amdgpu_top_tui/src/lib.rs --- old/amdgpu_top-0.11.4/crates/amdgpu_top_tui/src/lib.rs 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/crates/amdgpu_top_tui/src/lib.rs 2026-05-18 17:25:15.000000000 +0200 @@ -339,7 +339,7 @@ use cursive::theme::PaletteColor::*; use cursive::style::Color::Rgb; - palette[Background] = Rgb(0x7F, 0x8C, 0x8C); + palette[Background] = Rgb(0x35, 0x36, 0x37); palette[View] = Rgb(0x25, 0x26, 0x27); palette[Primary] = Rgb(0xFD, 0xFD, 0xFD); palette[TitlePrimary] = Rgb(0x15, 0xA0, 0x85); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/crates/libamdgpu_top/Cargo.toml new/amdgpu_top-0.11.5/crates/libamdgpu_top/Cargo.toml --- old/amdgpu_top-0.11.4/crates/libamdgpu_top/Cargo.toml 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/crates/libamdgpu_top/Cargo.toml 2026-05-18 17:25:15.000000000 +0200 @@ -15,6 +15,6 @@ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -libdrm_amdgpu_sys = { version = "0.8.13", git = "https://github.com/Umio-Yasuno/libdrm-amdgpu-sys-rs", default-features = false, rev = "7714cb3f810342d22c56154cf8501d072759709a" } +libdrm_amdgpu_sys = { version = "0.8.14", git = "https://github.com/Umio-Yasuno/libdrm-amdgpu-sys-rs", default-features = false, rev = "c87eff736523054247f1192796a5f47560cd35db" } nix = { version = "0", default-features = false, features = [ "ioctl" ] } num_enum = { workspace = true } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/crates/libamdgpu_top/src/device_path.rs new/amdgpu_top-0.11.5/crates/libamdgpu_top/src/device_path.rs --- old/amdgpu_top-0.11.4/crates/libamdgpu_top/src/device_path.rs 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/crates/libamdgpu_top/src/device_path.rs 2026-05-18 17:25:15.000000000 +0200 @@ -9,10 +9,11 @@ }; use crate::stat::ProcInfo; use std::path::PathBuf; -use std::{fs, io}; +use std::fs; use std::fmt; -use std::sync::{Arc, Mutex}; +use std::sync::{Arc, Mutex, OnceLock}; use std::os::unix::io::RawFd; +use std::os::fd::OwnedFd; #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum DeviceType { @@ -34,6 +35,7 @@ pub arc_proc_index: Arc<Mutex<Vec<ProcInfo>>>, pub config_pm: bool, pub device_type: DeviceType, + pub(crate) fd: OnceLock<Arc<OwnedFd>>, } impl DevicePath { @@ -42,11 +44,7 @@ let libdrm_amdgpu = self.libdrm_amdgpu .as_ref() .expect("Error loading libdrm.so and libdrm_amdgpu.so"); - let fd = self.get_fd().unwrap_or_else(|err| { - eprintln!("{err:#}"); - eprintln!("{:#X?}", self); - panic!(); - }); + let fd = self.get_fd(); libdrm_amdgpu.init_device_handle(fd)? }; @@ -54,22 +52,31 @@ Ok(amdgpu_dev) } - pub fn get_fd(&self) -> io::Result<RawFd> { - use std::os::unix::io::IntoRawFd; + pub fn get_fd(&self) -> RawFd { + use std::os::unix::io::AsRawFd; - let device = if self.is_amdgpu() { - &self.render - } else { - &self.accel - }; + let owned_fd = self.fd.get_or_init(|| { + let device = if self.is_amdgpu() { + &self.render + } else { + &self.accel + }; + + // need write option for GUI context + // https://gitlab.freedesktop.org/mesa/mesa/-/issues/2424 + fs::OpenOptions::new() + .read(true) + .write(true) + .open(device) + .map(|f| Arc::new(OwnedFd::from(f))) + .unwrap_or_else(|err| { + eprintln!("{err:#}"); + eprintln!("{:#X?}", self); + panic!(); + }) + }); - // need write option for GUI context - // https://gitlab.freedesktop.org/mesa/mesa/-/issues/2424 - fs::OpenOptions::new() - .read(true) - .write(true) - .open(device) - .map(|f| f.into_raw_fd()) + owned_fd.as_raw_fd() } pub fn get_device_path_list() -> Vec<Self> { @@ -187,6 +194,7 @@ arc_proc_index, config_pm, device_type: DeviceType::AMDGPU, + fd: OnceLock::new(), }) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/crates/libamdgpu_top/src/drm_mode.rs new/amdgpu_top-0.11.5/crates/libamdgpu_top/src/drm_mode.rs --- old/amdgpu_top-0.11.4/crates/libamdgpu_top/src/drm_mode.rs 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/crates/libamdgpu_top/src/drm_mode.rs 2026-05-18 17:25:15.000000000 +0200 @@ -58,16 +58,13 @@ } pub fn connector_info(device_path: &DevicePath) -> Vec<ConnectorInfo> { + use std::os::fd::AsRawFd; + let Some(libdrm) = device_path.libdrm_amdgpu.clone().map(LibDrm::from) else { return Vec::new(); }; - let fd = { - use std::os::fd::IntoRawFd; - - let Some(f) = File::open(&device_path.card).ok() else { return Vec::new() }; - - f.into_raw_fd() - }; + let Some(f) = File::open(&device_path.card).ok() else { return Vec::new() }; + let fd = f.as_raw_fd(); libdrm.set_all_client_caps(fd); let Some(drm_mode_res) = libdrm.get_drm_mode_resources(fd) else { return Vec::new() }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/crates/libamdgpu_top/src/xdna/xdna_device_path.rs new/amdgpu_top-0.11.5/crates/libamdgpu_top/src/xdna/xdna_device_path.rs --- old/amdgpu_top-0.11.4/crates/libamdgpu_top/src/xdna/xdna_device_path.rs 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/crates/libamdgpu_top/src/xdna/xdna_device_path.rs 2026-05-18 17:25:15.000000000 +0200 @@ -2,7 +2,7 @@ // ref: https://github.com/amd/xdna-driver/blob/main/src/driver/amdxdna/amdxdna_pci_drv.c use std::{fs, io}; -use std::sync::{Arc, Mutex}; +use std::sync::{Arc, Mutex, OnceLock}; use std::path::PathBuf; use crate::{DeviceType, DevicePath, PCI}; @@ -34,6 +34,7 @@ arc_proc_index, config_pm, device_type: DeviceType::AMDXDNA, + fd: OnceLock::new(), }) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amdgpu_top-0.11.4/src/dump_xdna_device.rs new/amdgpu_top-0.11.5/src/dump_xdna_device.rs --- old/amdgpu_top-0.11.4/src/dump_xdna_device.rs 2026-04-23 08:52:57.000000000 +0200 +++ new/amdgpu_top-0.11.5/src/dump_xdna_device.rs 2026-05-18 17:25:15.000000000 +0200 @@ -17,7 +17,7 @@ } // for fdinfo test - let fd = xdna_device.get_fd().unwrap(); + let fd = xdna_device.get_fd(); let mut xdna_proc_index = xdna_device.arc_proc_index.lock().unwrap(); stat::update_index_by_all_proc( ++++++ amdgpu_top.obsinfo ++++++ --- /var/tmp/diff_new_pack.oc6l7K/_old 2026-05-21 18:30:17.909860167 +0200 +++ /var/tmp/diff_new_pack.oc6l7K/_new 2026-05-21 18:30:17.917860497 +0200 @@ -1,5 +1,5 @@ name: amdgpu_top -version: 0.11.4 -mtime: 1776927177 -commit: 42571ae2a5339d62140668f3fcb84a47715bd02d +version: 0.11.5 +mtime: 1779117915 +commit: 2dd52abf79c2bf3e0720b116228deafa94ace8a3 ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/amdgpu_top/vendor.tar.zst /work/SRC/openSUSE:Factory/.amdgpu_top.new.2084/vendor.tar.zst differ: char 7, line 1
