Log in

View Full Version : madVR 10-bit Display Support Test


Pages : 1 2 3 4 5 6 7 8 9 [10] 11 12 13

huhn
24th October 2015, 09:04
you know no one stops you from creating new threads.

XMonarchY
24th October 2015, 17:57
Can you create a different topic for this? I'm (and probably not just me) interested in it. Thanks

AVSForum - Display Calibration section is where you need to go to ask these types of questions. They have all the answers there!

Arm3nian
25th October 2015, 00:57
you know no one stops you from creating new threads.

http://forum.doom9.org/showthread.php?p=1744236#post1744236

I'll be expecting you. :devil:

Arm3nian
29th October 2015, 00:07
Would error diffusion dithering (versus ordered) have a bigger impact on 10bit output vs 8bit?

nevcairiel
29th October 2015, 00:08
Would error diffusion dithering (versus ordered) have a bigger impact on 10bit output vs 8bit?

Dithering gets less important the higher the native output bitdepth is.

Warner306
31st October 2015, 04:51
Would error diffusion dithering (versus ordered) have a bigger impact on 10bit output vs 8bit?

The difference between Ordered and Error Diffusion dithering is said to be very small, so, no, it wouldn't make much of a difference.

spacediver
31st October 2015, 20:24
I've just created what might be a much better test for determining whether your system is capable of 10 bit color. You'll need dispwin.exe from argyll to implement a LUT i've created, which simulates 1 bit color. You'll also need the attached gradient file. I've zipped up both and attached it to this post (will appear, pending approval).

Follow the same instructions as in the original post in this thread, but this time, don't disable the GPU ramp.

To load the LUT, create a batch file on your desktop that has the following lines:


cd c:\Users\spacediver

dispwin 1bit.cal

(obviously, put the appropriate directory in the first line).

Make sure that the 1bit.cal file is in that directory. In order for dispwin to work, you'll have need to installed Argyll. Latest version can be found here (http://www.argyllcms.com/). Installation instructions here (http://www.argyllcms.com/doc/Installing.html). If you don't install it properly, then it might still work so long as you copy dispwin.exe to that same directory where the LUT file is.

To reset the LUT to default, you'll need another batch file. This time, the line should read:

dispwin -c

(again, if you haven't installed argyll properly, you will need to add a line to navigate to the directory in which dispwin.exe is located).

Now, load up MadVR, and follow the instructions from the original post (being mindful to not disable GPU ramps).

If your system can output 10 bit color, then in exclusive mode, you will see five distinct shades of gray, ranging from black to white. If you're limited to 8 bit color, then you'll only see 2 shades: black and white.

What's happening is this:

The LUT only specifies two output values. 0 for the first 128 entries, and 1 for the last 128 entries.

When 10 bit is initialized, what seems to be happening is that the LUT is interpolated, so that instead of 2 distinct values, there are now 5. But it's not interpolating in an obvious manner. What happens is that the first 507 entries are coded as 0. the 508th entry is coded as what I presume is 0.25, the 509th entry is 0.5, the 510th entry is 0.75, and 511 to 1024 is coded as 1.

The 16 bit image png I've created has all five of these regions, each taking up a large amount of screen real estate. Great for seeing what's really going on (i.e dithering will be more visible when you have a large patch of screen to inspect).

Let me know if this works for you all.

edit: here (http://s000.tinyupload.com/index.php?file_id=89351674536241925457) is a working link to the zip file, until the attachment gets approved

spacediver
31st October 2015, 20:47
If I have time this wknd, I'll also create a test pattern that has only two adjacent values (to be viewed with a normal LUT). For those who have colorimeters and/or other instruments that can measure luminance, this will be a good test to see whether 10 bit precision is actually achieved (the test here will be to see whether the display can output two distinct luminances whose difference is smaller than the luminance increment in an 8 bit context).

spacediver
1st November 2015, 05:58
I've confirmed 10 bit precision by measuring the luminance of two images separated by 1 value (out of 1024). Tried making the image sequence into an avi (then using frame skipping to alternate between frames in mpc), but avi seems to be limited to 8 bit. Any suggestions on how to load a few pngs into an image sequence that can be readily stepped through in mpc? Would be much easier than having to load an image, measure, load another image, measure, etc.

huhn
1st November 2015, 12:29
vapoursynth image reader lossless x264 10 bit.

spacediver
1st November 2015, 15:13
thanks, although going through it all it might take me weeks to learn how to use it to achieve what I want. I don't know how to code in python (yet), I only know Matlab. And even if I did know python, I wouldn't know where to begin here. I gather it's all command line driven, so I'd need to figure out which plugin(s) to install, if any, how to load in the sequence of pngs, how to specify output parameters (lossless x264 10 or 16 bit), and then how to actually output it into a movie file. I'm a babe in the woods here.

chros
1st November 2015, 19:01
If your system can output 10 bit color, then in exclusive mode, you will see five distinct shades of gray, ranging from black to white. If you're limited to 8 bit color, then you'll only see 2 shades: black and white.
I wanted to try it out on my TV, but I can only see 3 colors (with or without 10 bit, OSD reports it in DXD11 FSE): white, grey, black. And the lut file is loaded fine, since I have very wierd colors on the desktop.

spacediver
1st November 2015, 19:42
This is what occurs on my end when I load the 1 bit LUT. In the image below are three scenarios, depending on how you configure the bitdepth of your display in the madVR settings. The top row of each image shows the 10 bit video input level for that patch. Ignore the thin white vertical lines in the first two images - they're an inkscape artifact.

http://i65.tinypic.com/msjatz.png

chros
1st November 2015, 20:11
This is what occurs on my end when I load the 1 bit LUT. In the image below are three scenarios, depending on how you configure the bitdepth of your display in the madVR settings. The top row of each image shows the 10 bit video input level for that patch. Ignore the thin white vertical lines in the first two images - they're an inkscape artifact.

http://i65.tinypic.com/msjatz.png

Hhmm... Thanks for the pictures.
I got only similar to the 2nd one (9 bit) but all the middle 3 columns are the same grey (508 as well) in 8bit and in 10 bit. Don't know why.

spacediver
1st November 2015, 20:48
interesting. Might have something to do with the way the boundary in the 1 bit LUT is interpreted differently by the 10 bit processing in our systems. I'm using a CRT, so that might have something to do with it. Would be interesting to see what others report.

Do you have a colorimeter? If so, you can do the precision test I'm working on creating (which doesn't require a LUT manipulation).

spacediver
2nd November 2015, 04:09
K, here's (http://s000.tinyupload.com/index.php?file_id=59760266452481393460) another test pattern. This time, don't worry about LUT modifications.

It's a pattern that has 8 vertical bars, ranging from 10 bit code 0 to code 7. On my system, if I turn out the lights, I can clearly see each of the 8 bars. If I switch to 9 bit color, I see 5 bars, and with 8 bit color I see 3 bars.

Another note, all these test patterns I've been creating are 1920x1200. I'm not sure what happens exactly if you view these on a display that has a different resolution, but I doubt there'll be relevant scaling artifacts.

This is really cool - I compared this with an 8 bit test pattern going from 8 bit code 0 to code 7, and the difference is striking. In the 8 bit test pattern, the difference between adjacent bars is so much greater than in the 10 bit pattern.

Of course, the visibility of these gradations will depend on the EOTF (electro-optical transfer function) of your display. That's why it might be necessary to dark adapt before viewing.

XMonarchY
2nd November 2015, 18:24
If an 8bit output/input display has its own hardware-based dithering (non-FRC), then will it be detected as 8bit by your patterns?

spacediver
2nd November 2015, 18:58
Here's (http://s000.tinyupload.com/index.php?file_id=00601237761612169800) another cool demonstration. An 8 bit and a 10 bit gradient going from green (at an 8th 'brightness') to black. The 8 bit gradient has 32 steps, while the 10 bit gradient has 256 steps. Banding is clearly visible in the 8 bit case, and barely perceptible in the 10 bit case. This pattern is a good showcase for 10 bit color.

huhn
2nd November 2015, 21:24
K, here's (http://s000.tinyupload.com/index.php?file_id=59760266452481393460) another test pattern. This time, don't worry about LUT modifications.

It's a pattern that has 8 vertical bars, ranging from 10 bit code 0 to code 7. On my system, if I turn out the lights, I can clearly see each of the 8 bars. If I switch to 9 bit color, I see 5 bars, and with 8 bit color I see 3 bars.

Another note, all these test patterns I've been creating are 1920x1200. I'm not sure what happens exactly if you view these on a display that has a different resolution, but I doubt there'll be relevant scaling artifacts.

This is really cool - I compared this with an 8 bit test pattern going from 8 bit code 0 to code 7, and the difference is striking. In the 8 bit test pattern, the difference between adjacent bars is so much greater than in the 10 bit pattern.

Of course, the visibility of these gradations will depend on the EOTF (electro-optical transfer function) of your display. That's why it might be necessary to dark adapt before viewing.

i can see 6 shades in 8 bit window mode so not sure about this test.

nevcairiel
2nd November 2015, 21:33
Here's (http://s000.tinyupload.com/index.php?file_id=00601237761612169800) another cool demonstration. An 8 bit and a 10 bit gradient going from green (at an 8th 'brightness') to black. The 8 bit gradient has 32 steps, while the 10 bit gradient has 256 steps. Banding is clearly visible in the 8 bit case, and barely perceptible in the 10 bit case. This pattern is a good showcase for 10 bit color.

Yet if you look at the 10-bit pattern in madVR on a 8-bit display, it still is perfectly smooth, because dithering is powerful. So in conclusion, the 8-bit source image just doesn't use enough data. :)

spacediver
2nd November 2015, 22:41
Yet if you look at the 10-bit pattern in madVR on a 8-bit display, it still is perfectly smooth, because dithering is powerful. So in conclusion, the 8-bit source image just doesn't use enough data. :)

yes, in fact I can't tell the difference between viewing the 10 bit gradient in 8 bit mode with dithering on, vs. viewing the 10 bit gradient in 10 bit mode without dithering.

But that's not really the purpose of these patterns. They're mainly meant to verify whether 10 bit is working or not, and they offer a perceptually striking way to do so. The test pattern in the original post works too, but is not as striking.

They also offer a way to probe what's actually going on behind the scenes.

spacediver
2nd November 2015, 22:48
i can see 6 shades in 8 bit window mode so not sure about this test.

That is strange. If you've turned dithering off, and have configured your display (within madVR settings) for 8 bit, then being able to see more than 3 or 4 bars means something is not right. Either dithering is being applied somehow on your end, or the test pattern is being decoded incorrectly.

Another possibility is that I've incorrectly encoded it. This is the general approach I've taken, and it seems to work perfectly on my end:

Say I want to encode a 10 bit grayscale gradient from 0 to 1023.

I first specify values from 1:1024.

I then multiply by 64, so they are properly scaled for a 16 bit file.

I then subtract 1, so that the range is 0 to 65,535.

I save the file as a 16 bit unsigned integer png file.

Quick question about madVR dithering. If the chosen dither style has a temporal component, does this get fully implemented when viewing a static png (or when a frame is paused, for that matter)?

nevcairiel
2nd November 2015, 22:51
But that's not really the purpose of these patterns. They're mainly meant to verify whether 10 bit is working or not, and they offer a perceptually striking way to do so. The test pattern in the original post works too, but is not as striking.

They also offer a way to probe what's actually going on behind the scenes.

Well, but you still couldn't really tell if something is just dithering to 8-bit, or if 10-bit are actually reaching your screen. Determining that is a near impossibility.
Of course you can use them to test if everything looks fine, though.

huhn
2nd November 2015, 22:57
yes, in fact I can't tell the difference between viewing the 10 bit gradient in 8 bit mode with dithering on, vs. viewing the 10 bit gradient in 10 bit mode without dithering.

But that's not really the purpose of these patterns. They're mainly meant to verify whether 10 bit is working or not, and they offer a perceptually striking way to do so. The test pattern in the original post works too, but is not as striking.

They also offer a way to probe what's actually going on behind the scenes.

we all ready now that the GPU driver is dithering. so how do you test with this test file if the screen is 10 bit?

spacediver
2nd November 2015, 23:07
Well, but you still couldn't really tell if something is just dithering to 8-bit, or if 10-bit are actually reaching your screen. Determining that is a near impossibility.
Of course you can use them to test if everything looks fine, though.

yep, this may be true, you'd probably need a high end oscilloscope for that.

The LUT method (http://forum.doom9.org/showpost.php?p=1745010&postcount=457), however, may offer a way to determine that without such an instrument.

In that method, the screen renders 3 intermediate shades of gray that are interpolated between 0 and 1 (in addition to the black and white regions).

Now, if a "true" 10 bit pipeline is actually being achieved here, then the intended interpolated values will be rendered at the appropriate luminance. So, for example, if the EOTF of the display is L = V^2.4, and suppose that the intended interpolated value for the middle shade of gray is 0.5, then the luminance will be 18.95 cd/m^2 (if we assume black level is 0 nits, and peak white is 100 nits).

If, however, dithering is being applied, and if the dithering is simply finding the average of the available luminances (the available luminances are 0 and 100 nits), then the luminance of the intermediate shade will be 50 nits.

Linear averaging would normally not be a problem with dithering, since the adjacent levels being averaged together are so close in luminance. But in this case, the simplicity would be exposed.

The key, of course, is to figure out how the 8 bit LUT is being interpolated when being transformed into a 10 bit LUT. That way, we can compare intended luminances vs actual luminances.

spacediver
2nd November 2015, 23:13
we all ready now that the GPU driver is dithering. so how do you test with this test file if the screen is 10 bit?

These patterns are mainly meant to provide a more striking visual difference than the pattern in the original post.

Also, I'm curious - how did people figure out that the GPU is dithering?

huhn
2nd November 2015, 23:27
take a screen that doesn't support 10 bit input and give the driver 10 bit.

the image from the first post does a good job.

and you can disable the GPU dithering with AMD.

ryrynz
3rd November 2015, 02:38
and you can disable the GPU dithering with AMD.

Does this work for Nvidia?

"search the registry for the 2D driver settings;

2D driver

Inside the registry location, create a DWORD value called DP_DisableDither and set it to 1"

spacediver
4th November 2015, 04:55
I'm gonna try and get my hands on a cheap 8 bit lcd display and do some experiments to see what's going with GPU dithering (will be the first LCD I've ever had, other than my old thinkpad).

spacediver
7th November 2015, 23:46
take a screen that doesn't support 10 bit input and give the driver 10 bit.



Just tested my original pattern with an old Dell 1908fp i borrowed from the lab. It does indeed dither like you said. Next step is to gain insight into the dithering by measuring the luminances, as detailed here (http://forum.doom9.org/showthread.php?p=1745220#post1745220). Hopefully, this will provide an objective way to determine whether the gpu is dithering or whether "true" 10 bit color is being produced. Will try to get to it this wknd if I have enough time.

huhn
8th November 2015, 01:42
8 bit dithered looks easily like 11 bit to a colorimeter so don't waste your time.

spacediver
8th November 2015, 05:08
8 bit dithered looks easily like 11 bit to a colorimeter so don't waste your time.

huh? Can you clarify? Again, here's the methodology I linked to:




The LUT method (http://forum.doom9.org/showpost.php?p=1745010&postcount=457), however, may offer a way to determine that without such an instrument.

In that method, the screen renders 3 intermediate shades of gray that are interpolated between 0 and 1 (in addition to the black and white regions).

Now, if a "true" 10 bit pipeline is actually being achieved here, then the intended interpolated values will be rendered at the appropriate luminance. So, for example, if the EOTF of the display is L = V^2.4, and suppose that the intended interpolated value for the middle shade of gray is 0.5, then the luminance will be 18.95 cd/m^2 (if we assume black level is 0 nits, and peak white is 100 nits).

If, however, dithering is being applied, and if the dithering is simply finding the average of the available luminances (the available luminances are 0 and 100 nits), then the luminance of the intermediate shade will be 50 nits.

Linear averaging would normally not be a problem with dithering, since the adjacent levels being averaged together are so close in luminance. But in this case, the simplicity would be exposed.

Asmodian
8th November 2015, 10:08
huh? Can you clarify? Again, here's the methodology I linked to:

Linear light or gamma light dithering? That sounds like it is assuming gamma light dithering.

madVR can hit a white point quite well, according to my meter, with only 1-bit for each color. Looking like more bits to a meter (eye) is why you dither and you cannot assume simple dithering methods. :)

spacediver
8th November 2015, 16:01
Linear light or gamma light dithering? That sounds like it is assuming gamma light dithering.

madVR can hit a white point quite well, according to my meter, with only 1-bit for each color. Looking like more bits to a meter (eye) is why you dither and you cannot assume simple dithering methods. :)

Yes, this proposed experiment only has the potential to reveal information. If the GPU is doing sophisticated dithering, then it will be indistinguishable. If, however, it's not, then the difference will be immediately apparent. In my opinion, it's an easy experiment worth doing. Do you agree?

If it turns out it's sophisticated dithering, I have another trick up my sleeve involving a high speed video camera.

edit: just to be clear, I think my test pattern and LUT method establish pretty conclusively that if the GPU is doing any dithering on my CRT, it's purely temporal.

XMonarchY
10th November 2015, 19:05
Is there a recommendation as far how far away one should sit to NOT see dithering? I have good vision and I can easily see it if I sit any closer than 6ft away from my 40" 1080p HDTV.

ryrynz
11th November 2015, 02:35
Is there a recommendation as far how far away one should sit to NOT see dithering? I have good vision and I can easily see it if I sit any closer than 6ft away from my 40" 1080p HDTV.

No, It'll vary for everyone based on their eyesight, screen size and type. You answered your own question basically.

omarank
25th November 2015, 16:25
Has anyone tested which is the more neutral texture filtering quality setting in AMD CCC - Standard or High Quality, for madVR?

hello_hello
25th November 2015, 22:48
Here's (http://s000.tinyupload.com/index.php?file_id=00601237761612169800) another cool demonstration. An 8 bit and a 10 bit gradient going from green (at an 8th 'brightness') to black. The 8 bit gradient has 32 steps, while the 10 bit gradient has 256 steps. Banding is clearly visible in the 8 bit case, and barely perceptible in the 10 bit case. This pattern is a good showcase for 10 bit color.

Could someone explain how this works please? I downloaded the images for a look and thought I'd try them even though the old XP PC I'm using at the moment is connected to my TV via VGA.

The two images display pretty much the same using Irfanview. 32 steps from left to right would probably be what I'm seeing, only the bands move a little to the right when displaying the 10 bit image. Irfanview says:
Original Colours: 48 bits per pixel
Current Colours: 24 bits per pixel.
A 10 bit image being displayed on an 8 bit screen (Plasma TV). That seems to make sense.

The 8 bit image displays the same way in MPC-HC but the 10 bit image looks nice and smooth, using the VMR9 renderer as well as MadVR (default settings).
So my question is, how is the 10 bit image being displayed smoothly on an 8 bit screen using MPC-HC? I'm probably being dense but the penny hasn't dropped.

The 10 bit image displays with the same banding as the 8 bit image using VLC, which I'd imagine points to the video card (8600GT) being the cause of it displaying smoothly in MPC-HC, given the video card settings normally don't effect VLC.

Thanks.

spacediver
6th December 2015, 20:31
So my question is, how is the 10 bit image being displayed smoothly on an 8 bit screen using MPC-HC? I'm probably being dense but the penny hasn't dropped.

Presumably the GPU is dithering to emulate 10 bits in an 8 bit environment.

chros
7th December 2015, 15:22
Presumably the GPU is dithering to emulate 10 bits in an 8 bit environment.
Or your display dithers. (As it turned out about mine, that it 10 bit(D) = 8bit+dither, so it dithers all the time. Maybe that's why I couldn't see your test properly.)

aufkrawall
23rd December 2015, 23:48
Edit: Forget what I said, I didn't disable deband filter...

Kirk Lazarus
24th December 2015, 00:19
Hi Guys,
I've an NVIDIA GTX 970 with latest drivers on Win 7 64bit and NVIDIA CP looks like this:

https://dl.dropboxusercontent.com/u/62605175/cp_nvidia.jpg

Like you can see I've not a 10bit selection option. Only 8bit or 12bit.

If I choose 12bit I'll have the graphic card that dither??:(

many thanks.

chros
24th December 2015, 00:51
If somebody is unsure whether his display is 10bit capable then make sure you use full RGB output. I had to apply the RGB full range HDMI hack for the Intel iGPU then my TV passed the 16 bit gradient test.

huhn
24th December 2015, 11:51
this sound like the intel driver wasn't using dither for 0-255 -> 16-235 transform

aufkrawall
25th December 2015, 21:27
Is there visible banding with Windows 10 DWM when you select 10 bit output in the driver (and there is no banding when your display is showing undithered 10 bit input in FSE) and open the 16 bit test image in windowed mode without madVR converting it with dithering?
This is the case with plain 8 bit DL-DVI output. But I'd like to know if it makes a difference if you have a configuration where you can select 10 bit output in the driver.

huhn
26th December 2015, 14:15
banding of cause.

the desktop is still 8 bit only.
the driver never gets 10 bit.

aufkrawall
26th December 2015, 15:00
K, thanks.

XMonarchY
26th December 2015, 20:27
Does anyone know if Panasonic ST60 works with 10/12bit at 60Hz Limited or Full with NVidia's latest 361 drivers? My friend has the option to select 10bit with his HDMI High-Speed but it won't apply in Limited RGB or Full RGB range... Any ideas? There is now a remake of the film Se7en that is in 10bit!

XMonarchY
26th December 2015, 20:48
FYI: The OP Bottom Note for NVidia users about NVidia driver dithering from 10bit to 8bit (if 10bit is selected in madVR for display that only has 8bit output option in NVidia CP) is somewhat misleading. What the note says MAY happen, but not necessarily. It happens on my FG2421 monitor - the gradient is smoother when 8bit output is selected in NVidia CP and 10bit output is selected in madVR. However, the same does NOT happen on my HDTV. If I leave HDTV output @ 8bit in NVidia CP and select 10bit in madVR, the gradient will look exactly the same as if it would if I had selected 8bit output in NVidia CP and 8bit output in madVR. IMHO, that bottom note should say "MAY" more frequently.

ryrynz
27th December 2015, 03:01
Does anyone know if Panasonic ST60 works with 10/12bit at 60Hz Limited or Full with NVidia's latest 361 drivers? My friend has the option to select 10bit with his HDMI High-Speed but it won't apply in Limited RGB or Full RGB range... Any ideas? There is now a remake of the film Se7en that is in 10bit!
You don't need the TV set to 10 bit to get the benefits of a 10 bit encode.