IGCL's ctlEnumerateDevices returns all Intel graphics devices including
the integrated GPU, but IntelDiscreteGpu was created for every device
without filtering. This caused the iGPU to appear twice: once from the
IGCL path (as IntelDiscreteGpu) and once from the D3D path (as
IntelIntegratedGpu), with overlapping sensors.
Check the CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED flag on each device's
graphics_adapter_properties and skip integrated adapters, since they are
already handled by IntelIntegratedGpu via D3D enumeration.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Implement Fan control for TG WVP2.
Calculate approximate fan speed.
Catch two exceptions.
Remove leftover close in ReadConfig.
* Support for multi device detection
* Add more data to report
* Add group for power monitors and remove from GenericGpu.
* Move files.
Add option for Power Monitor in Computer + UI.
* Add support for Thermal Grizzly WireView Pro 2.
* Process PR comments.
* PR comments.
* Add private keyword.
* PR comments.
* Replace WMI with SetupAPI.
Some first updates according to Thermal Grizzly code.
* Add report.
* Further improve implementation according to code of Thermal Grizzly (thanks !).
* No connection check for welcome message.
* Rename class + change SerialPort to SharedSerialPort for guard - fixing mutex issues.
* PR comments.
* Remove SP_DEVINFO_DATA from NativeMethods.txt
* Update WireViewPro2.cs
* Rename hasMutex to _hasMutex for consistency
* Formatting
* Fix build
---------
Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
* Replace Storage implementation with CrystalDiskInfo based implementation.
* Formatting.
* Code review.
* Code review.
* Increase space for attribute name in report.
* Implement dynamic disk handling for usage sensor.
Disable unused warnings.
* Further cleanup in NativeMethods.txt and referenced.
* Use PawnIO driver directly.
- Implemented PawnIO library in C#
- Builds in AnyCPU, x64 and x86
- Fixes#1895
* Implement review changes for PawnIO.
- Use existing Kernel32.CreateFile import.
- Move new DeviceIOControl to Kernel32.
- Replace Lazy Version loading with static property.
- Remove bin resource cache.
- Add constant for function name length.
* More review changes for PawnIO.
- Replace redundant internal checks with IsLoaded.
- Convert Win32 error code to HRESULT before returning it in
ExecuteHR()
* Drop KernelDriver
---------
Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
* Add DIMM Temperature to LHM.
* Remove RAMSPDToolkit as submodule and use nuget package instead.
Upgrade System.Management assembly (required for nuget package).
Implement retry mechanism for RAM detection due to possible issue at system boot.
* Change to static field.
* Driver now back in LHM.
Ring0 replaced with OLS implementation.
* Update package version.
* Undo most of changes.
Implement IDriver interface.
* Change package to new one.
* Review changes.
Explicitly set UseWMI (current default is also false).
* PR comments:
Now having one DimmMemory instance per RAM stick.
Separated memory sensors into two new classes.
* PR feedback
---------
Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
* Check whether battery values are available
* Rename _degradationPercentage to _degradationLevel
* Add support for temperature monitoring
* Include the battery device name and tag in the hardware identifier
* Set sensor index value properly
* Fix temperature conversion
The returned temperature value must be divided, not multiplied.
* Disable sensors that have a "null" value
* Fix random symbols in battery device name and manufacturer
ADL finds multiple logical gpus, this commit avoids multiple
unneeded initializations of AmdGpu class. The main control is moved to
AmdGpuGroup and the ADL_* calls are updated to ADL2_*, using the
context. Adapters using PMlog should be initialized only if sensors are
detected, adapters that pmlog is not enabled or doesn't work, should
fallback previous logic.
* Refactor ADL sensors update
- Check support for each sensor, on OD8 and new PMLog.
- Exclude cards before Vega10 from using PMLog
- Better validation for individual sensor support (for now asic-power/board-power)
- Validate pmlog struct using the lastUpdate, there are situations the
sensors values are corrupted, maybe because something blocking the pointer access to
the struct, but this needs to be verified.
* Update AmdGpu.cs
---------
Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
* Add ADL pmlog support, fix metrics on newer gpus
Newer GPUs needs this to show performance metrics properly. Sample rate
is hard coded (1000ms).
* Clean up
---------
Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
There is no entry for `CopyMemory` exported from kernel32.dll as it is
omitted from the following output:
```
dumpbin /exports C:\Windows\System32\kernel32.dll
```
The name we're looking for is `RtlCopyMemory`. This does not affect
traditional .NET framework users as `CopyMemory` was special cased prior
to .NET core
([source](https://github.com/dotnet/runtime/issues/12496#issuecomment-483442084))
The incorrect entry point will cause an `EntryPointNotFoundException`
for NET core users (ref:
https://github.com/nickbabcock/OhmGraphite/issues/214)
There were a couple other entries in kernel32 that are missing:
- CreateFile
- LoadLibrary
Both functions appear to have a `CreateFileA` and `LoadLibraryA`
variant, but I do not know if those are appropriate.