Feature/multi gpu load support#456
Open
ThatDeltaGuy wants to merge 14 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added support for multiple GPU's, in the GPU Load Sensor, including integrated graphics.
Summary
The GPU Load sensor previously summed every detected GPU's utilization into a single number, with no way to pick a specific GPU. This adds a GPU selector (pick one, or "All" to average) and fixes the underlying aggregation, which on systems with both an iGPU and a dGPU could silently exceed 100% or report the wrong adapter entirely.
The problem
How it works now
note: There's no fully reliable way to identify a remaining unlabeled adapter type. DXGI's SOFTWARE flag filter handles the common case, but isn't a guarantee against every possible phantom adapter type. DXGI_ADAPTER_FLAG_REMOTE are not filtered, since they can represent a real GPU accessed over a Remote Desktop session.
Testing
No unit test infrastructure existed in the repo, so this adds three new NUnit projects (HASS.Agent.UnitTests, HASS.Agent.Shared.UnitTests, HASS.Agent.Satellite.Service.UnitTests), wired into the solution. 36 tests total, covering:
AI Usage
For full disclosure, I have used AI, but only to build out most of the unit tests, and also update the translations into other languages (and edit this description to make it clearer), As well as using the AI-ish intelli-sense to write the comments before editing them. I have however, gone through and read everything it has written to make sure its understandable and testing the right things. I have to assume on the translations.