Skip to content

Commit 919290d

Browse files
committed
feat(gpu-info): display GPU fan speed alongside temperature
Add support for reading and printing GPU fan speed (RPM) every 10 seconds together with temperature.
1 parent fd38b33 commit 919290d

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

main.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,20 @@ type ADLTemperature struct {
77
Temperature int32
88
}
99

10+
type ADLFanSpeedValue struct {
11+
Size int32
12+
SpeedType int32
13+
FanSpeed int32
14+
Flags int32
15+
}
16+
1017
var (
1118
dll = w.NewLazySystemDLL("atiadlxx.dll")
1219
ADL_Main_Control_Create = dll.NewProc("ADL_Main_Control_Create").Call
1320
ADL_Main_Control_Destroy = dll.NewProc("ADL_Main_Control_Destroy").Call
1421
ADL_Adapter_NumberOfAdapters_Get = dll.NewProc("ADL_Adapter_NumberOfAdapters_Get").Call
1522
ADL_Overdrive5_Temperature_Get = dll.NewProc("ADL_Overdrive5_Temperature_Get").Call
23+
ADL_Overdrive5_FanSpeed_Get = dll.NewProc("ADL_Overdrive5_FanSpeed_Get").Call
1624
)
1725

1826
func main() {
@@ -29,13 +37,14 @@ func main() {
2937
fmt.Println("Adapters found:", adapters)
3038

3139
temp := ADLTemperature{Size: int32(unsafe.Sizeof(ADLTemperature{}))}
40+
fan := ADLFanSpeedValue{Size: int32(unsafe.Sizeof(ADLFanSpeedValue{}))}
41+
3242
for {
33-
r, _, _ := ADL_Overdrive5_Temperature_Get(0, 0, uintptr(unsafe.Pointer(&temp)))
34-
if r == 0 {
35-
fmt.Printf("GPU Temperature: %d°C\n", temp.Temperature/1000)
36-
} else {
37-
fmt.Println("Temperature read failed")
38-
}
43+
ADL_Overdrive5_Temperature_Get(0, 0, uintptr(unsafe.Pointer(&temp)))
44+
fmt.Printf("GPU Temperature: %d °C\n", temp.Temperature/1000)
45+
46+
ADL_Overdrive5_FanSpeed_Get(0, 0, uintptr(unsafe.Pointer(&fan)))
47+
fmt.Printf("GPU Fan: %d RPM\n", fan.FanSpeed)
3948

4049
time.Sleep(10 * time.Second)
4150
}

0 commit comments

Comments
 (0)