We have some discussion on this thread, but have different thinking about this topic.
So I am wondering if RX400's UVD status(Or all AMD card's from past) is something different from what I think it is.
A 4k video requires more resources so this would be expected behaviour.
Thanks for the replying. Sorry for not saying clear enough.
The behavior of 4k is ok and I see.
I want to ask is, while playing videos the GPU/memory clock down to 214/300(H.264 720P/1080P which not use too much resource for nowadays new video hardware) , is this the right UVD status(H/W acceleration status) behavior or not. While it looks like an GPU idle clock.
In fact I think this is correct behavior(I use DXVA checker and see the player is running DXVA). Just want to make sure.
Because of the discussion at this thread:
It seems there is another thinking,which says that 214/300(or 300/300 depends different cards) is idle clock and not a normal DXVA/UVD clock behavior while playing videos. Although he did not say which video source he used.
I wish to know if I am wrong or not.
My question in the other thread before vonchen start flooding it with "solutions" was to ask if anyone had a similar behavior with the card going active with the GPU and Memory entering what seem to be the UVD P state when I play a movie and I explicitly turned UVD/DXVA acceleration off in the player I'm using. However, when I do enable the UVD/DXVA acceleration in these player the card stay in the idle P state (on my card it's 300/300Mhz). That is assuming the RX 480 has the same or similar behavior as the older generations AMD card, and goes into an UVD P state when a media player ask for the GPU hardware acceleration.
Here is what happens when I explicitly disable DXVA acceleration in MPC-HC and play a H264 movie. (the same thing happens with all the other video players I've tried)
As you can see the GPU is working as if it was decoding the movie when it should stay in the idle P state with the occasional/usual hick up as I asked the player to not use the card HW acceleration. That's how it worked with my previous cards.
Now, this is what happens if I enable HW acceleration and play a movie. The GPU stays in idle P (state 0 300/300 on my card)
Correct me if I'm wrong, but the opposite should happen. The card should stay on idle P state with the occasional/usual hick up when I explicitly disable the GPU HW acceleration in a media player, and enter another P state (or maybe not with the rx480? I doubt.) when I activate the GPU HW acceleration in the media player I use to play a movie.
This'll be slightly long. Sorry.
I reported a similar issue on this (clocks going down during any DXVA/UVD decoding; along with CPU usage while using UVD going -up- compared to unaccelerated), but after extensive testing today, it looks like engaging UVD on RX 400 series chips is nearly equivalent to selecting "power efficiency" in the crimson panel.
It doesn't actively prevent clocks from going up, but you need to be maxing out the entire GPU for it to go above 600mhz or so. This is very different from the non-efficiency settings.
So just to be clear, using UVD drops clocks (for me) to the 300-600mhz range, even while doing other things simultaneously (such as gaming). If I turn UVD off, clocks shoot up to 1303mhz (stock OC on my card). If I tick power efficiency, it also hovers into the 300-600mhz range. The only difference is that power efficiency, if you set all states to the same, it'll generally stay at that, whereas UVD will still poke down to 300mhz (both on memory and core) periodically.
This causes severe stuttering and low performance on games using DXVA for cutscenes, or if (like many people) you do video decode on a second monitor, or picture-in-picture.
If I absolutely max the GPU, it all goes up to 1303mhz in all three cases.
With such low GPU clocks, the video decoding CPU % (at 4.1ghz fixed frequency) can go from 2% all the way up to 8% (representing maxing out a single core, and usually starting to drop frames as well).
I figured out a way to force max clock all the time (even at idle), and UVD can't force the clocks down any longer, so it decodes everything fine, and CPU usage is less than 2% generally.
TLDR: Accelerated video decoding shouldn't be forcing power efficiency on RX 400 cards (especially RX 480), as it interferes with normal GPU operations, including the video decoding itself.
It's a driver problem that should be fixed. AMD removed the UVD clock state from "newer" cards, so it shouldn't be forcing clocks low in 99% of situations, since it's not tied to a particular clock speed, and it can harm its own CPU efficiency.
I wasn't going to include registry entries, but if I change KMD_EnableContextBasedPowerManagement and Cm_EnableContextBasedPowerManagement to 0 and reboot, core clock is forced high, and memory won't hit 300mhz repeatedly if things are using the GPU.
This forces clocks high, even at idle, so I wouldn't recommend it, but it's the only way I've found to temporarily work around this issue (while gaming). However, it also lowers CPU usage while decoding video, since at 300-600mhz, the CPU's spending all of its time waiting on the GPU. Again, this needs to be fixed in the drivers, but it's clear that UVD isn't using reasonable clock states, and is doing something akin to forcing "power efficiency" on.
The problem isn't that UVD might not (itself) place a high demand, but that it's forcing power efficiency to the GPU, even in circumstances where it's clearly unwarranted.
I haven't personally been able to find a situation in which, at such forced-low clocks, it actually saves CPU usage compared to completely unaccelerated CPU video decoding.
Thanks for the replying.
I have different testing result from yours on my case. Below is what I used to test:
1.MPC-HC+LAV 0.68.1+DXVA2 native mode on or off
2.jellyfish-35-mbps-hd-h264.mkv which can be downed from Jellyfish Bitrate Test Files
4.Crimson's Power efficiency option is disabled.
You can see I have very low CPU usage even the GPU's clock is at 218/300 at first and second image.
My CPU is Intel E3-1230v2 and CPU power saving is on, still have very low usage while DXVA is enabled.
This is MPC-HC CPU usage:
This is whole PC CPU usage, only 3% :
Here is DXVA off and I have 11%~16% cpu usage:
So I also have the UVD behavior that while DXVA is enabled, Core/Memory down(to 214/300 on my case),but at the sametime I got low CPU usage.
Also if I play 4k videos(jellyfish-120-mbps-4k-uhd-h264.mkv) , GPU/Memory clock will starting to go up and I still have low CPU usage.
It seems AMD 400's card have two different scenario(This is RX460's case):
1.Normal GPU working, which can make it have higher clock with Power efficiency option disabled.
2.UVD working, which starting from 300/300 for 1080P or lower format video and 760/1750 for 4k or higher format video.(this is my opinion)
The point is, if 300/300 is GPU power saving idle clock or it is UVD clock while using DXVA.
I do not know why you have higher CPU usage result while at 300/300. Maybe different cards or hardware or video format.
If possible can you test jellyfish-35-mbps-hd-h264.mkv?
I re-tested on forcing clock to max secnario and still have similar cpu usage behavior.
1 of 1 people found this helpful
The expected behavior for a GPU when HW/GPU assisted decoding is disabled is to stay idle with idle clocks, with occasional hick up of course. What don't you understand in the RX 480 raising clock and keeping them raised when the card is not being used to decode the video stream is not normal?
Where in hell did I ever mention 4K decoding? I'm talking about playing small sized h264 video. Again, the GPU raising clock when it is not being used to decode the a small h264 video is not a normal behavior. Older AMD gen card don't display this behavior.
If it was a normal behavior, the card would have been flagged as being the most wasteful and inefficient AMD card ever by all review sites.
Sorry for misreading your post. Now I see the point. I tested it again and find the same behavior on my RX460.
What I think is if power effeciency option is enabled , the card should stay at idle clock just like older AMD cards, and I did not test this option carefully. So I can not see the point of your post at early time.
The new tested result is,
If I enable Power Efficiency option , GPU core clock will down to idle clock 214Mhz but memory still raising up to 1750MHz instead of 300Mhz while playing video and DXVA disabled. It should stay at 214/300 while Power Efficiency option is enabled, but it did not , it is 214/1750.
In fact it is not only while playing videos, it also happens on all 2D/Desktop works.
So I think this issue is bind to all 2D work while Power Efficiency option did not keeps the memory clock at power saving status.
You are right.
But anyway, I wonder we still need info from official one to make sure this is a bug or normal behaviors. Maybe there is some reason for this.
AMD is blocking me from replying with stats, so keeping it short.
Not sure why it'd be different. For reference, I have a 5820K with CPU frequency locked to 4100mhz (for various reasons), and primary GPU to test with is an RX 480 Gaming X which defaults to higher clocks/power than reference. All on Windows 10 1607, "power" option set to High Performance, and mostly testing single monitor.
The main concern is more that UVD is effectively forcing driver "power efficiency" on (at least for me with every driver version from 16.7.3 to 16.10.1), which is lowering GPU clocks to the minimum, even while normally the demand would make clocks go high. The high CPU usage on accelerated decoding is a direct side effect of that.
I tested with both H264 and H265, no observable differences in behavior.
All behavior I've observed and tested, ever since I got the card the day it came out, is the same, on all players/browsers capable of DXVA acceleration, including MPC-HC, MPC-BE, VLC, Media Player Dot Net, Firefox, Chrome, Vivaldi.
I just realized the other day that the behavior wasn't because it was "locking" clocks low, but turning "power efficiency" toggle on, in effect.
I haven't extensively tested clock blocker, but it doesn't work well for me in general. Only changing the registry settings gets UVD to not be able to affect clocks negatively.
Either way, different (system) behavior on extremely low GPU core+memory clocks isn't unheard of since it drastically lowers throughput and increases latency for anything touching the GPU.
Regardless of CPU usage, UVD forcing "power efficiency" on regardless of preference (at least on desktops) should be treated as a bug. If they really wanted to, they could make it a toggle under video (as power efficiency is a general toggle) so there's a better solution to this for people who need it than wasting 30-40W at idle.
I could understand this behavior on a laptop, but on a desktop it makes no sense.