View Single Post
Old 23rd January 2014, 18:16   #21590  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,140
madVR v0.87.0 released

http://madshi.net/madVR.zip

Code:
* added debanding algorithm, based on improved version of "flash3kyuu_deband"
* added file name tag "deband=off|low|medium|high"
* added automatic detection for fades from/to black or white (for debanding)
* added support for using OpenCL with NVidia, AMD and Intel GPUs
* added DXVA surface splitting via OpenCL (only AMD and Intel GPUs)
* added error diffusion algorithm (requires OpenCL)
* added NNEDI3 chroma upsampling (requires OpenCL)
* added NNEDI3 image doubling/quadrupling (requires OpenCL)
* added flexible settings profile functionality
* added file name tag "profile='profile name'"
* added IMadVRSettings2 interface to enumerate settings and manage profiles
* settings can now be edited without madVR running (only on local PC)
* madNvLevelsTweaker -> madLevelsTweaker now also works for Intel GPUs
* madVR doesn't dither, anymore, when a pixel doesn't need dithering
* added Intel driver bug workaround for "use separate device for presentation"
* added madHcNet64.dll to allow madTPG automation from 64bit calibration tools
* added API for asking madVR about the output levels (TV, PC, custom)
* fixed: full backbuffer queue slowed rendering down
* fixed: madTPG sometimes didn't update to newly requested test pattern color
* fixed: madTPG dithering produced blocking artifacts
* fixed: when upscaling exactly 2x, AR filter wasn't active for blue channel
* fixed: ArgyllCMS/HCFR disabling the 3dlut didn't work
* fixed: LAV Video Decoder sending v210 produced corrupted image
* improved frame cropping support
* improved windowproc hook stability
* a couple of very small pixel shader performance improvements
* optimized madVR default settings
* improved madVR tray icon menu looks on newer OSs
* tags now require "tag=value" or "tag:value"; "tag value" no longer accepted
* disabled automatic DCI-P3 detection through 2048 video width
I've a lot of comments about this version, so here goes:

(1) I've released this version "early", meaning there are still 2 features missing I was planning to add into v0.87.0. One of them is convergence correction for front projection. I will probably add those features in the next days/weeks and release them as v0.87.something. Also I've ignored most of the bugs you guys reported because I wanted to finally finish the new features. I'll go do bug fixing after I've finished all the planned v0.87.0 features, so bear with me until then...

(2) The debanding feature is nearly unchanged compared to the last test build. There's just one added "trade quality for performance" option now which allows you to disable the going back to re-render old frames, when a fade in/out is detected. Practically this "trade" option results in the stronger debanding setting being used for the whole fade in/out except for the first 5 frames, which will still use the default debanding strength.

(3) The latest AMD drivers *FINALLY* added OpenCL <-> D3D9 interop. I had been waiting for this for a looong time. So finally I can now use OpenCL in madVR with Intel, NVidia and AMD GPUs. You will need the latest AMD drivers, though. It won't work with older drivers.

(4) For best OpenCL performance, currently AMD seems to be the way to go.

(5) Thanks to OpenCL I can now process DXVA2 NV12 data coming from native DXVA decoders, or coming from DXVA2 deinterlacing, losslessly and directly on the GPU. Sadly, this only works for Intel and AMD GPUs. So with NVidia I still have to use copyback, or alternatively live with a small chroma resolution loss. FWIW, I've found that using OpenCL to process DXVA2 NV12 surfaces seems to increase rendering times on Intel GPUs in windowed mode, while it seems to decrease rendering times on Intel GPUs in FSE mode. So I'm not fully sure whether it's a performance improvement or not. Maybe you guys could test that and report back.

(6) The OpenCL error diffusion algorithm can be used instead of the default random dithering (see "trade quality for performance"). Error diffusion should produce similar smoothness as random dithering, but error diffusion should have a lower noise floor. I had to do some minor compromises to implement this on a GPU with decent performance, so quality might be ever so slightly lower than when doing error diffusion sequentially via CPU, but I think it's not too bad. Unfortunately performance is not too great, so make your own decision on whether you like it and whether the performance cost is worth it for you.

(7) NNEDI3 is a somewhat complicated topic, so I'll reserve an extra post for that.

(8) The new profiling support is very flexible. By default the settings look exactly the same way you're used to. But you can now select any settings page (for which it makes sense) and activate profiles for it. You can also group multiple settings pages into one profile group, if you prefer. Each profile group can have an infinite number of profiles. And there's a complicated profile rule set (simplified script language) which lets you decide which profile gets auto selected in which situation. E.g. you can have one profile auto selected for SD content, one for HD content, one for MPEG2 sources, one for h264 sources etc etc. The possilibities are almost endless. Have fun playing with this!

(9) Intel users can now use the latest drivers with the "use a separate device for presentation", but you have to activate a custom border color for this to work. A black border color makes the bug appear. A gray border color will make it go away. Since many media players don't allow you to specify a custom border color, you can force a border color by creating the following registry key:

HKEY_CURRENT_USER\Software\madshi\madVR\BorderColor DWORD 1

You can set this value to any RGB color you want. I'd suggest value 1, which is almost black (Red=0, Green=0, Blue=1). With this border color the Intel driver bug does not occur, anymore.

Last edited by madshi; 24th January 2014 at 13:03.
madshi is offline   Reply With Quote