-
Notifications
You must be signed in to change notification settings - Fork 104
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
graphics/PlatformProbe: Implement a more principled GraphicBufferAllocator
selector
#3402
Conversation
This implements an actual selection process for the GraphicBufferAllocator: * First, find the `RenderingPlatform`(s) with *fewest* displays they *can't* drive, then * Select the `RenderingPlatform` with the highest number of displays probed 'best' for In the case of ties, the algorithm picks the first `RenderingPlatform` in the list; due to the selections elsewhere, that will be the first platform in alphabetical order.
This needs further testing on hardware I have (laptop, RPi4) before merging. |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3402 +/- ##
==========================================
- Coverage 77.52% 77.31% -0.22%
==========================================
Files 1065 1075 +10
Lines 67901 68494 +593
==========================================
+ Hits 52639 52953 +314
- Misses 15262 15541 +279 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks sensible, and obviously does what is described.
But could there be tests?
Yes, there could (and should!) be tests! |
Ok! glmark on the Pi is noisy, but this does not appear to have a significant performance effect there (and it still renders correctly 😉). It works on my laptop - rendering is correct, both from i915 and amdgpu, and performance is better when rendering on i915. Performance seems to be a lot worse on amdgpu. Here we run into “how useful a benchmark is glmark?”. I'm not sure, and I'm still investigating exactly where the difference is. |
OK. So, the difference between trunk and this:
So this is not a performance regression vs 2.16.2 on AMD on my Intel/AMD hybrid laptop, and renders correctly. It might be interesting in future to see how rendering to the optimal buffer layout, and then going through the bounce-buffer to be sampleable from the Intel GPU, but that's definitely future work. This should be good to go. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, that looks better
This implements an actual selection process for the GraphicBufferAllocator:
RenderingPlatform
(s) with fewest displays they can't drive, thenRenderingPlatform
with the highest number of displays probed 'best' forIn the case of ties, the algorithm picks the first
RenderingPlatform
in the list;due to the selections elsewhere, that will be the first platform in alphabetical order
Fixes: #3400