Performance issues with AMD Radeon drivers and hardware encoding with constant framerate
The problem I'm going to describe was tested on "Windows 10 Home Insider Preview" operating system so it is
possible it's operating system fault. In the attachment is dxdiag log from that machine.
If I launch application which puts a lot of stress on GPU after a while driver decides turn
gear up and switches to higher clock rate and thanks to that it is possible to do do harware
encoding of rendered frames at constant framerate of 60 fps if application is able to render at that rate.
The problem exists if application does not stress GPU enough then clockrate does not change
and if you render just random blank colors at 60 fps it is not possible to do harware encoding
at constant framerate of 60 fps.
If I manually overclock clock rate of first GPU state through api it works.
I did this through Overdrive API but not all AMD drivers allow you to do that.
On some drivers Overdrive API returns information that first GPU state is not editable.
Because you are allowed to change state clock rate but you are not allowed to switch state manually
to make it work I need to run other application in backround which will stress GPU enough to make
it swich to higher GPU state and clock rate.
I tried to record compiled vkQuake gameplay at 60 fps dirrectly using AMF api and OBS
and it didn't work. It works with ReLive. However ReLive does something which
switches state up and it forces GPU to use higher clock rate.
I think there should be option to set in AMF encoder which signals GPU it should
switch gear up when encoder is feeded at 60 fps otherwise encoding simple 3D application with constant framerate is not
possible.