* fix: skip integrated GPU in IGCL enumeration to prevent duplicate hardware entries
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>
* feat: add IGCL-based telemetry sensors for Intel integrated GPUs
Use Intel Graphics Control Library (IGCL) to expose temperature, clock
frequency, and voltage sensors for the integrated GPU via the safe
user-mode ctlPowerTelemetryGet API. Each sensor is only activated if
the driver reports it as supported, so this degrades gracefully on
hardware/drivers that don't expose specific telemetry items.
This mirrors the approach already used by IntelDiscreteGpu, bringing
parity between discrete and integrated Intel GPU monitoring.
Depends on: fix/intel-igpu-deduplication
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* Try and migrate the old GigabyteController stuff with PawnIO
* Bring back WinRing0 era GigabyteController stuff
* ISABridge use the PawnIO module with its built-in logic
* Ecio uses LpcIO directly (not sure about the initialization logic in TryCreate() to make this work)
* Code-review
* Fix inverted logic
* Remove IsaBridgeEc field init
* Format document
* Combine logic
* Gigabyte Implementation best attempt
* Update IsaBridgeGigabyteController.cs
* Cleanup and fix enablind logic for Isa version
* Add debug logs
* Update IsaBridgeGigabyteController.cs
* Code review
* Unmap + restore the mmio state is done through the closing of the module.
* Fix boolean logic
* Restore the fan control byte instead
* Fallback to ECIO if FanControl enable byte is 0xFF
+ add logs to ECIO
* Port back to validation logic
* Allow for one or the other MMIO to be 0
* Wrap enter/exit mmio logic + enter/exit each time
* Keep state of EcioPort enable
* Missing dispose + close order fix
* Update IsaBridgeGigabyteController.cs
* Remove empty line before TryCreate method
* Code review
* Remove try/finally for SW
* Cleanup debug log methods
* Add DEBUG_LOG define conditional
* Misc
* Misc
---------
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.
* Add ARM64 platform support to build and projects
Added ARM64 as a supported platform in project files and solution configuration. Updated GitHub Actions workflows to build and publish ARM64 libraries. This enables building and distributing ARM64 binaries alongside x64 and x86.
* Add ARM64 support to NuGet packaging
Updated main.nuget.target to include ARM64 DLL and XML files in the NuGet package, enabling multi-platform support for win-arm64 in addition to x64 and x86.
* Fix ARM64 configuration mappings in solution file
Corrects the Debug and Release configuration mappings for ARM64 targets in LibreHardwareMonitor.sln, ensuring ARM64 builds use the proper platform instead of x64.
Adjust the glob pattern to select only one .nupkg
file.
In #1928 nuget generation changed so that
there's one main nupkg to publish and platform
library artifacts have their own platform specific
ones.
Changes from before:
* Add x86 to build process.
- Use recommended structure for multi-platform nuget.
- Separate build and pack to allow x64 and x86 builds.
- Use matrix in Github Actions to reduce repetition.
* Properly implement multi-platform nuget build.
- Split build pipeline to setting version, building and packing.
- Build AnyCPU only as reference assemblies.
- Add ref folder to nuget.
* Restructure project and pipeline.
Based on PR review discussion.
- Restore default x64,x86 build process.
- Build generates platform specific nupkg.
- Remove AnyCPU platform to prevent confusion.
- Add custom property for building reference libraries.
- AnyCPU is only set by the property.
- Move nuget changes to separate target file.
- Imported only when custom property is set.
- Clear separation from the default build.
- Merge frameworks in published library artifacts.
- Re-simplify pipelines; no matrix or separate jobs.
* Add x86 to build process.
- Use recommended structure for multi-platform nuget.
- Separate build and pack to allow x64 and x86 builds.
- Use matrix in Github Actions to reduce repetition.
* Properly implement multi-platform nuget build.
- Split build pipeline to setting version, building and packing.
- Build AnyCPU only as reference assemblies.
- Add ref folder to nuget.
* Restructure project and pipeline.
Based on PR review discussion.
- Restore default x64,x86 build process.
- Build generates platform specific nupkg.
- Remove AnyCPU platform to prevent confusion.
- Add custom property for building reference libraries.
- AnyCPU is only set by the property.
- Move nuget changes to separate target file.
- Imported only when custom property is set.
- Clear separation from the default build.
- Merge frameworks in published library artifacts.
- Re-simplify pipelines; no matrix or separate jobs.