3 Replies Latest reply on Feb 14, 2017 5:51 PM by mirh

    Enduro: Force application to power saving mode/integrated GPU.




      I am looking for a way to force my application to use the integrated GPU on hybrid GPU laptops. I was able to accomplish this on Nvidia Optimus systems by creating an application profile in a launcher process through NVAPI and adding a custom app profile for the driver, I have not found similar options in the ADL SDK yet.


      I did find powerxpress.h and appprofiles.h in the documentation of the SDK, but from my understanding, neither would allow me to configure the driver specifically to use the integrated GPU on my executable only. Or can I use "ADL2_Display_PowerXpressActiveGPU_Set" to switch to the integrated GPU at runtime, without affecting the behavior of other applications?


      The reason I have for this (possibly odd) inquiry is, that the Microsoft Media Foundation video decoders appear to be failing when my application is running on the dedicated GPU. Using the integrated GPU for my application is otherwise acceptable, only forcing my users to perform this configuration step manually is currently an issue.




        • Re: Enduro: Force application to power saving mode/integrated GPU.

          Putting aside that I think it should be possible for you to create a user-specific profile, similarly to nvidia, by tinkering/playing/figuring out the meanings of PXSwitchSafe/PXGPUAffinity/PowerSavGPUAffinity/HighPerfState/DisableHighPerfState blb proprieties I'm not sure you really should make these kinds of broad assumptions (also, I thought once it was just about declaring AmdPowerXpressRequestHighPerformance?)


          You want to avoid whatever problems in WMF?

          Then find whatever it's the minimum common denominator to them, and just then starts to think to a solution.

          It's nuts to make it always run in "always disregard dedicated card" mode, when 9999 years in the future.. whatever will happen


          I'm doubtful it's just the fact of not-being an IGP..

          And it seems strange for Windows not to already prefer integrated for video decoding (if required bits are available of course)

            • Re: Enduro: Force application to power saving mode/integrated GPU.

              Well it doesn't seem possible with the ADL SDK, so apparently I have to do something else. "PXSwitchSafe/PXGPUAffinity/PowerSavGPUAffinity/HighPerfState/DisableHighPerfStat" are nowhere to be found there. Googling them brings literally a dozen results each, I'm not sure how you expected me to know about them. So apparently there are XML files and I have to run some AMD utility to register a profile? That's entirely different from NVidia.




              "AmdPowerXpressRequestHighPerformance"? No. As the name implies, this is for the dGPU. I need the iGPU. Setting it to 0 instead of 1 is also ignored which is defined in the specs.


              This solution is the lowest common denominator. Using other APIs like Dx9, Dx11 or OpenGL on the very same HWND works perfectly fine with the dGPU. Using Microsofts official MF player example does not. I don't have time to question weird MF bugs. Some of my users complain how UVD usage bugs out their clock rates - that's also a (very well known) bug completely out of my control which just exists on some hardware and probably won't ever be fixed.

                • Re: Enduro: Force application to power saving mode/integrated GPU.

                  Well, and once you realize the same UVD blocks (thus bugs) can also be shared by some APUs.. your idea of just brutally assuming integrated=>safe shatters.

                  Anyway, I get the idea that code-wise there's no "force low". That already being the default, I'd guess un-enforcing should be equal to that.


                  On another note, iirc you are free to choose whatever hw decoder available on your system in LAV filters, so you may want to check their code.