View Full Version : MPC-HC tester builds for internal renderer fixes
Dark Eiri
11th January 2015, 06:45
Thank you for reporting. That pixel shader is part of the down-sizing resizers. I edited the files and I've just updated the four items linked in my earlier post.
Thank you! Flawlessly working now :D
The Catmull-Rom resizer is so great, I wonder why MPC-HC doesn't have it on the main branch.
ryrynz
11th January 2015, 07:55
Thank you! Flawlessly working now :D
The Catmull-Rom resizer is so great, I wonder why MPC-HC doesn't have it on the main branch.
Wouldn't the extra resizers be the easiest thing to take across to HC?
Dark Eiri
11th January 2015, 08:04
Wouldn't the extra resizers be the easiest thing to take across to HC?
They're already on BE, btw. Also the overlay top right "close" button on BE is something I would love to see on HC as well, but I don't think it will be ported =/
v0lt
11th January 2015, 10:49
@JanWillem32
Windows XP, VMR-9 Renderless (it's not my system)
http://i.imgur.com/lGJ5BaN.png
JanWillem32
11th January 2015, 12:22
That's odd. I thought D3DCompiler_46.dll was the last compatible with Windows XP. Did anyone else using XP had this issue with any of the last 6 builds?
Anyway, I updated the files I linked to earlier again. Those that are still using XP and were having this problem can download the files and try again.
Hera
11th January 2015, 20:07
Welcome back!
You can try this version again. I added some better compatibility with several types. Note that results with EVR and VMR-9 may differ. If this one still outputs black screens, we can try to debug this issue with DXVAchecker and such.
I think, in the LAV thread, I was told that it was NVIDIA driver bug... I will test soon.
EDIT: Can't reproduce with newer drivers... so..
Aleksoid1978
12th January 2015, 07:19
Hi JanWillem32.
Can you help implement FilpEx mode support for MPC-HC/MPC-BE EVR Custom ??
My knowledge are zero :)
JanWillem32
12th January 2015, 08:27
Hera, nice to hear from you again and thank you for reporting back with the good news.
Aleksoid1978, also nice to hear from you again. When it comes to renderer stuff I'm very fussy. I despised working on the original renderer. I would classify it as the second-worst renderer I've ever worked on (with the worst one being the subtitle renderer).
When I decided to dump the renderer, I imported a new renderer I wrote earlier. During that phase the program didn't compile for over a week. It took a lot of work to get the renderer at the quality level it is now.
I'm not even going to try porting back any features to the old renderer. I will take no less than the full replacement of the VideoRenderers sub-project, the SubPic sub-project, the OSD renderer, and of course minor changes to the parts of the code that uses the interfaces and lists of user settings I altered. Naturally, for any patches on these parts implemented by others I should evaluate porting them back if they're useful.
This will come at the cost of the DirectX 7 renderers, as I could not be bothered to update these. EVR Sync is also disabled in my version of the video renderer section, but I don't mind porting the synchronization parts back from the original (properly working version) Ar-Jar wrote if anyone can convince me that that synchronization/scheduler mode is useful. Note that I implemented two frame-time schedulers already. However, I don't think adding another one based on the old Present() call delay would be useful at all.
When it comes to Discard, Flip and FilpEx presentation modes the original renderer is totally incompatible, by the way. These require IDirect3DDevice9Ex::ResetEx() and full renew mechanisms for the renderer, and proper resource management for that to work. Even worse, the original renderer hardly used any IDirect3DDevice9Ex functionality at all. That makes DWM scheduling for Windows Vista in windowed mode with Aero enabled, FlipEx mode scheduling for Windows 7 and newer in windowed mode with Aero enabled, and Discard or Flip mode scheduling for Windows Vista and newer in fullscreen exclusive mode near impossible. (Note that the constant frame interpolator I wrote also uses these advanced features for its scheduling.)
v0lt
12th January 2015, 09:38
That's odd. I thought D3DCompiler_46.dll was the last compatible with Windows XP. Did anyone else using XP had this issue with any of the last 6 builds?
Anyway, I updated the files I linked to earlier again. Those that are still using XP and were having this problem can download the files and try again.Thanks. Now works on XP.
JanWillem32
13th January 2015, 12:56
The subtitle resizer pass integration went easier than I thought it would go. Note that the resizing shaders only activate in the renderer's quality mode with any of the standard resizer shaders activated, and with the subtitles set to "Screen" size in the subtitle options menu. In other modes the renderer reverts to the regular bilinear scaling.
Hera
17th January 2015, 23:29
Welcome back!
I think, in the LAV thread, I was told that it was NVIDIA driver bug... I will test soon.
EDIT: Can't reproduce with newer drivers... so..
OI, Upgraded GPU to GTX 970 EVGA and drivers to 347.09,
When opening, player snaps to smallest size possible (video hidden entirely) and I have to resize it to get the video to show up (something reporting video size as 0 x 0 maybe?)
* Video Black and not playing if P010 output is enabled
* If P010 disabled in LAV, plays
* MPDN works though with P010 checked
EDIT: Also newer version (not sure which one) now shows subtitles for one file that didn't have them before for some reason. Cool.
EDIT2: Granted subtitle shadow looks uneven, not centered on the letter itself..
EDIT3: Anyone got a black screen when watching video full screen (alt-enter) with dfr7370rrrri?
JanWillem32
18th January 2015, 10:40
I updated the builds in my previous post. These mostly feature updated down-scaling resizers.
Hera, I think I've solved the window resizing bugs this time. The windowed fullscreen implementation is still terrible, though.
P010 video doesn't work because the video driver seems to accept it, but fails to render on it. The renderer does not get an error from the mixer in such a case. (It's the same thing as with the Intel driver that doesn't allow mixer output on 16- or 32-bit floating-point surfaces when using the EVR mixer.) I can't fix this issue. I can disable P010 video input entirely (I've done so with AYUV before for another reason), but that really doesn't solve a driver bug.
Do you have a sample or images of the uneven subtitle shadows? I haven't encountered this bug before. (I also hardly changed the subtitle renderer, so I don't really know what to fix in this case.)
JanWillem32
22nd January 2015, 04:39
I updated the builds again my earlier post. A driver bug in the AMD drivers can cause crashes in when the renderer is using its library.
About the P010 video input, does any driver actually work with it? I can disable P010 input completely if it's inconvenient, but if any driver actually adds functional P010 input for the EVR mixer, we will have no way of knowing that.
XRyche
22nd January 2015, 05:14
With the latest tester subresize exp build I'm getting a "compiling final pass pixel shader failed" unspecified error on all modes except 8 bit integer with the x64 build on the latest AMD drivers. I'll let you know about P10 input once we get past this. Let me know if you need the .dmp .
Hera
22nd January 2015, 05:54
Binge watched a series. Resolution is detected well. Alt-Enter sometimes causes black screen.
JanWillem32
22nd January 2015, 06:04
I replaced the builds again. There was a minor bug that happened when selecting some of the random dithering levels for the final pass stage that gave the compiling error.
The windowed fullscreen mode is terrible at best. The renderer can't always compensate for the problems that the invading toolbar at the bottom causes. I can try some more dirty fixes.
For now, this is what happens when the renderer's dirty fixes are disabled:
-
XRyche
22nd January 2015, 06:31
I'm still getting the "compiling final pass pixel shader failed" unspecified error on all modes except 8 bit integer. I tried different dithering settings as well. Even set to rounding it still displays the "final pass" error.
ts1
22nd January 2015, 12:33
Seek/controls bar constantly flickers on Vista
link to test video http://www.filedropper.com/test_120
Edit: If i resize player with playing video to smallest possible size I'm getting error "compiling primary resizer pixel shader failed" (default settings).
Edit2: also the same error if I just stop the video.
Edit3: Crash on old Intel GPU (ASUS eee pc, win 7, default settings). Black screen on previous build. Last known working build is from post made on 20th February 2014.
Edit4: Crash dump http://s000.tinyupload.com/index.php?file_id=17510320218749115911
JanWillem32
22nd January 2015, 20:05
I replaced the builds again. The final pass has been edited. I hope that it solves the compiling issue.
ts1, It has been a while since I last used the Vista compatibility mode. I changed some things that might solve the flickering toolbar and black screen output when using the windowed fullscreen mode.
I edited the resizer shaders to be compatible with even 1×1 pixel output sizes.
The crash report is currently awaiting approval, which can take a while. Most users of this forum upload their files externally for that reason. I'll look at it when it's approved.
JanWillem32
22nd January 2015, 20:39
ts1, I took a look at the .dmp file, but I can't do much analysis on it with a regular build. I compiled two debug builds without D3D debug (as that requires a large debug runtime download to install). These will probably give more information about these crashes. Before running these builds, add the correct (x86 or x64) D3DCompiler_47.dll (or D3DCompiler_43.dll for Windows XP) version next to them in the folder and run DebugView to get a log from the debug builds. DebugView is only small and doesn't need to be installed to run: https://technet.microsoft.com/en-us/sysinternals/bb896647.aspx .
-
Just to be sure that people don't just download these: these debug builds are unsuitable for regular usage. They are slow and very large so that they can do debugging tasks.
XRyche
22nd January 2015, 21:33
The latest resizer build did the trick. I tried 32 bit and and lvl 31 dithering initially. I'll try the other modes in a few hours. Two questions; Has the Horizontal/Vertical sharpen complex, deband and denoise for LMS rendering on floating-point surfaces shader scripts gone through any changes in the past 4 months? Has the renderer gone through any changes to make the scripts unusable?
JanWillem32
22nd January 2015, 21:45
Since I standardized LMS as a basis rendering every color model (Y'CbCr, R'G'B', RGB, XYZ, LMS, L'M'S and onward transforms) in the renderer has been the same. The pixel shaders from then until now are just the same.
I did optimize some stages in the renderer and added functionality, such as resizers for bitmapped subtitles.
ts1
22nd January 2015, 22:19
seems log doesn't contain any useful information but player showed 3 errors and then starts to play the video normally using another video renderer. Errors are:
assert failed
0 at line 22821 of ...\dx9allocatorpresenter.cpp
assert failed
0 at line 7456 of ...\dx9allocatorpresenter.cpp
D3DERR_OUTOFVIDEOMEMORY
CreateDeviceEx() failed initialization
log http://s000.tinyupload.com/index.php?file_id=07188663516191686993
JanWillem32
22nd January 2015, 22:56
I'm sorry but the biggest thing I really cannot fix is are out of memory errors. I can merely program error messages for those.
You can reduce the video memory footprint though:
-Under "Options", "Playback", "Output", set 4 mixer buffers (the minimum) and set the resizer to bilinear
-Under "Options", "Subtitles", set the buffer to 0
Under the regular renderer settings you probably want to use only 8-bit integer textures. The 16-bit options are probably too demanding in memory footprint.
Don't forget to also close other applications that could use video memory and you can try the D3D fullscreen option, as it takes less fullscreen buffers than the windowed presentation chain.
ts1
22nd January 2015, 23:21
With D3DFullscreen it actually does work. Didn't know that this netbooks is so low on video memory.
XRyche
23rd January 2015, 00:16
Since I standardized LMS as a basis rendering every color model (Y'CbCr, R'G'B', RGB, XYZ, LMS, L'M'S and onward transforms) in the renderer has been the same. The pixel shaders from then until now are just the same.
I did optimize some stages in the renderer and added functionality, such as resizers for bitmapped subtitles.
Okay, I understand.
I don't know if you remember or not, but on Vista 32 bit I was having issues with DVD playback with certain DVD's. That's completely solved itself since I did a clean update to 8.1 64 bit. I guess it was something messed up with Vista or more likely, something messed up with my setup specifically.
Also, just something to point out, your subtitle renderer is the only one that displays vobsubs on that certain DVD correctly.
I also forgot how pristine your resizers look :) . Especially since I can now use the chroma resizers now.
One last thing. P10 doesn't crash the player for me but setting LAV video to only output P10 (using a 10 bit encoded file) causes LAV Video to drop out and be replaced by Microsoft's decoder.
Hera
25th January 2015, 06:28
When paused MPC:HC takes up 40% CPU time? Anyone experience this?
XRyche
25th January 2015, 06:44
Yes Hera, I get the same thing. My total cpu usage hovers around 32% regardless of what the cpu usage was when the file was playing.
Hera
25th January 2015, 07:04
Yes Hera, I get the same thing. My total cpu usage hovers around 32% regardless of what the cpu usage was when the file was playing.
And I thought why were my fans spinning when idle. :p
ts1
25th January 2015, 14:46
"compiling primary resizer pixel shader failed" when trying to open the video in 800x600 resolution.
Also seek bar in d3d fullscreen mod is not refreshing.
Edit: Found the reason of crushes on asus eee pc. I don't know why, but option Alternative VSync was enabled. Without VSync it's just a black screen. In d3d fullscreen as I already said video plays normally.
foxyshadis
25th January 2015, 23:22
I updated the builds again my earlier post. A driver bug in the AMD drivers can cause crashes in when the renderer is using its library.
About the P010 video input, does any driver actually work with it? I can disable P010 input completely if it's inconvenient, but if any driver actually adds functional P010 input for the EVR mixer, we will have no way of knowing that.
The new GTX 960 is supposed to have full fixed-function 10-bit hardware decode, with P010 in and out. I'd hope that applies to EVR, but nevcairiel is the only one who has one at this point.
XRyche
26th January 2015, 01:43
The new GTX 960 is supposed to have full fixed-function 10-bit hardware decode, with P010 in and out. I'd hope that applies to EVR, but nevcairiel is the only one who has one at this point.
That's kind of surprising coming from Nvidia considering what the majority of 10 bit encodes are now. I do suppose it is forward thinking though,
Asmodian
26th January 2015, 02:07
That's kind of surprising coming from Nvidia considering what the majority of 10 bit encodes are now. I do suppose it is forward thinking though,
UHD bluray will use 10-bit HEVC so they need a hardware solution soon. This is not for the current 10-bit encodes. :)
nevcairiel
26th January 2015, 16:26
The new GTX 960 is supposed to have full fixed-function 10-bit hardware decode, with P010 in and out. I'd hope that applies to EVR, but nevcairiel is the only one who has one at this point.
I believe EVRs DirectShow front-end is just broken with 10-bit YUV formats. It doesn't do buffer and image size calculations correctly anymore once you try.
Maybe it works through DXVA, i didnt manage to test that yet, but its certainly broke for "normal" image buffers in memory.
ts1
26th January 2015, 19:00
So this crushes and black screen on a netbook is not netbook related. Turn off the Aero - black screen, then enable Alternative VSync - crush.
JanWillem32
27th January 2015, 02:24
I replaced the builds again. I've reduced the processor time requirements for the constant frame interpolator and alternative scheduler modes. However, I can't really improve much for the old Alternative VSync mode in this regard.
When the renderer starts up from paused mode it may take a part of a second to recover from slow-cycling mode though. (That's why the renderer used to be running so fast in paused mode to begin with.)
ts1, do you have more information about that error in 800×600 mode? Is it the desktop compatibility mode/remote desktop mode? Does it matter what kind of video you are opening?
I tried debugging in 800×600 mode, and it seemed mostly fine. It's just really inconvienient given the amount of screen space the debugger/compiler needs on screen to reasonably operate. Any more details on the error would be very welcome, as I can't replicate the issue.
I managed to fix the errors related to Alternative VSync modes. It required quite a lot of changes. If anything still seems wrong, please tell me. (Though I advise using the constant frame interpolator and alternative scheduler modes when possible with Desktop Composition enabled in windowed mode, as these schedulers are more modern.)
About 10-bit mixing, AYUV support and such, EVR isn't ideal. EVR features a broken, and really slow AYUV to R'G'B' converter, which always assumes 8-bit output. I suppose for the 10-bit stuff the problem is similar. I'm not sure how much the video driver contributes to the problems, though. The driver mixing functions are exported through DXVA2.dll (and are routed through the EVR mixer in EVR.dll). These can be viewed with DXVA Checker on the "Processor Device" tab. Each device will have a set of supported in- and output types. When types are not listed (and can't be emulated by the AYUV to R'G'B' converter in EVR.dll), they are not supported.
Hera
27th January 2015, 02:32
I replaced the builds again. I've reduced the processor time requirements for the constant frame interpolator and alternative scheduler modes. However, I can't really improve much for the old Alternative VSync mode in this regard.
When the renderer starts up from paused mode it may take a part of a second to recover from slow-cycling mode though. (That's why the renderer used to be running so fast in paused mode to begin with.)
ts1, do you have more information about that error in 800×600 mode? Is it the desktop compatibility mode/remote desktop mode? Does it matter what kind of video you are opening?
I tried debugging in 800×600 mode, and it seemed mostly fine. It's just really inconvienient given the amount of screen space the debugger/compiler needs on screen to reasonably operate. Any more details on the error would be very welcome, as I can't replicate the issue.
I managed to fix the errors related to Alternative VSync modes. It required quite a lot of changes. If anything still seems wrong, please tell me. (Though I advise using the constant frame interpolator and alternative scheduler modes when possible with Desktop Composition enabled in windowed mode, as these schedulers are more modern.)
About 10-bit mixing, AYUV support and such, EVR isn't ideal. EVR features a broken, and really slow AYUV to R'G'B' converter, which always assumes 8-bit output. I suppose for the 10-bit stuff the problem is similar. I'm not sure how much the video driver contributes to the problems, though. The driver mixing functions are exported through DXVA2.dll (and are routed through the EVR mixer in EVR.dll). These can be viewed with DXVA Checker on the "Processor Device" tab. Each device will have a set of supported in- and output types. When types are not listed (and can't be emulated by the AYUV to R'G'B' converter in EVR.dll), they are not supported.
I am confused, this link http://www.mediafire.com/download/vccddr4vc69wlbk/mpc-hc64+tester+dfr7370rrrri+subresize+exp.7z
?
JanWillem32
27th January 2015, 03:19
Or one of the other two. I should probably get rid of the experimental tag. The subtitle resizers seem to work fine.
Hera
27th January 2015, 03:55
Or one of the other two. I should probably get rid of the experimental tag. The subtitle resizers seem to work fine.
Well I still get ~40% CPU when paused.
XRyche
27th January 2015, 04:44
I'm now getting 5-7% CPU usage when paused. I am also using the Alternative scheduler and Frame Intrapolation - Motion Adaptive, High Motion and everything works without issue and as expected.
Yes, the subtitle resizers are working fine for me as well. No issues at all.
ts1
27th January 2015, 08:21
I'm sorry I meant video with 800x600 resolution. Just google "800x600 clip download".
Seek bar in d3d fullscreen mode still not refreshing.
And yes when paused mpc-hc takes ~25% of 4 core CPU without Alternative scheduler.
Video playing fine without Aero now. Alternative VSync works too, but I never used it, it was an accident.
But now at the beginning and when toggling to/from fullscreen black screen for ~5 seconds (with or without Aero). In d3d fullscreen mode it works fine.
Edit: Black screen on SSE build.
JanWillem32
28th January 2015, 02:00
Hera, are you sure that you are using the constant frame interpolator or alternative scheduler mode? The constant frame interpolator pretty much only works properly in D3D fullscreen mode and the alternative scheduler mode works both in windowed mode with desktop composition enabled or D3D fullscreen mode. The alternative scheduler mode is only available for EVR on Windows Vista and newer.
XRyche, the constant frame interpolator options override the other scheduling modes, as you can only have one active at a time.
ts1, I just tested an 800×600 video. All modes from 50% size windowed to D3D fullscreen in stretched mode work fine. Let's try new debug builds. Maybe the log can tell us more about what the shader compiler is having trouble with.
About the seek bar in d3d fullscreen mode that isn't refreshing, it's not a bug. The OSD renderer is really simple in setup, but not that efficient. It only refreshes when it receives new commands. I'm aware that the windowed fullscreen is slow. I can't change that. The bug with the black screen on the SSE build has been solved.
debug builds:
Before running these builds, add the correct (x86 or x64) D3DCompiler_47.dll (or D3DCompiler_43.dll for Windows XP) version next to them in the folder and run DebugView to get a log from the debug builds. DebugView is only small and doesn't need to be installed to run: https://technet.microsoft.com/en-us/sysinternals/bb896647.aspx .
-
Just to be sure that people don't just download these: these debug builds are unsuitable for regular usage. They are slow and very large so that they can do debugging tasks.
regular builds (just small updates this time):
-
XRyche
28th January 2015, 02:49
XRyche, the constant frame interpolator options override the other scheduling modes, as you can only have one active at a time.
Ah , I see. So is there any benefit from the Alternative Scheduler besides, if I understand it correctly, more stable frame rates?
JanWillem32
28th January 2015, 03:03
It's actually more efficient than more precise. The constant frame interpolator and alternative scheduler modes can queue up frames for rendering, instead of rendering one frame at a time and then halting just before it's time to present that frame. Especially for the cases of high frame rates and interlaced video the renderer's bottlenecks are severely less present. Hiccups from the system (or subtitle renderer for that matter) will also be less of an issue because the renderer will allow some time (20 frames or up to .1875 s, depending on which is lower in time) for these external tasks without affecting the renderer much.
XRyche
28th January 2015, 03:18
Thanks for setting me straight :) .
ts1
28th January 2015, 06:04
Debug builds don't work properly.
errors on any video:
assert failed
0 at line 7456 of ...\dx9allocatorpresenter.cpp
could not open D3D9.dll
Edit:
Just tried it on another pc and 800x600 video works there. Maybe it's something related to Vista.
Maybe you can fix this glitch when, after pause and some delay it shows another frame? It's the only glitch, not counting seek bar, in a d3d fullscreen mode now. In windowed mode with Alternative scheduler it shows players logo instead of this frame. If I drag the player then it shows the frame.
JanWillem32
28th January 2015, 16:28
I just replaced the debug builds to not require the D3D9 debug runtime. (It's not something I normally set in debug builds, hence the error.)
The presentation method for Windows Vista with Desktop composition enabled is indeed slow to adapt to changes. It's a system-wide problem that was solved in Windows 7 by adding a new presentation method.
I still can't replicate any issues with playing back an 800×600 resolution video, even in Windows Vista compatibility mode.
ts1
28th January 2015, 17:09
Results: http://s000.tinyupload.com/index.php?file_id=27907279717710161431
JanWillem32
28th January 2015, 17:27
Which of the 16 resizers cause this problem, and how much are you resizing (window size, and video area on the window)?
ts1
28th January 2015, 17:41
All except first 3 and B-spline4-8. Not resizing, windowed, default settings.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.