Tech Talk: Pushing My VIZIO to its Limit!
Not too long ago, I decided to swap out my LG 29″ ultra-wide monitor (for reasons I’ve discussed before) in order to pick up a new display. After a good bit of research, I settled on a 32″ VIZIO smart TV that had a 120 Hz refresh rate (a feature I wanted) and could simulate 240 Hz with its “Clear Action” mode if desired. I got a great deal on it at Sam’s Club ($218 US, though normally it’s $238) and it has been a really great display. Usually, using a TV as a computer display takes a lot of tweaking of settings because the color, brightness, sharpness, etc. that might work for normal TV viewing at a decent distance away from the screen may not work for something you’re sitting two feet or less from as a large-format monitor. However, that doesn’t mean a TV makes a bad display!
The VIZIO right out of the box had a calibrated setting called “Computer” that actually looked pretty good. However, because I care a lot about accurate color representation, good sharpness (no added grain or softness in the picture), and a bright screen with high contrast (for reading), I dug in for a while and played with the settings. Ultimately, I found that starting with a baseline mode of “Vivid” and then fine-tuning everything from there came up with the best results, and if someone is interested in the actual setting levels themselves, I’d be happy to post them. So, out the gate I created a “Vivid PC” display mode and a “PC Gaming” mode, the latter of which made use of Clear Action and “Game Low Latency” mode to make things look amazingly good.
However, as someone that likes to get the absolute most out of what I pay for, I did some research into unlocking options that potentially may not have been immediately available through the default Windows Display Settings (or the Crimson Software for my GPU). Initially, some of the options that I might have available to me scared me a bit, because going into the registry to change driver or EDID settings on a HEX level could result in having to wipe the graphics suite entirely every time something went amok and start all over with it. Also, adding incorrect timings and forcing them to display on the screen could (though the chance is very low) damage the panel prior to it just returning an “Out of Range” or “No Signal” message.
One thing that made me hopeful that the display could reach a higher potential was the sub-pixel arrangement that it boasted (as seen in the photo above courtesy of Rtings). While a lot of displays have a very basic RGB sub-pixel layout of three vertical rectangles side-by-side in a 1×3 arrangement, this panel has eight sub-pixels per color, set into a total 4×6 arrangement, giving it effectively full color potential when divided up into four horizontal columns. Even horizontally some additional sampling could happen, and this might allow the panel to take in a higher resolution signal and then scale it properly to fit the panel through what you might consider pixel “virtualization” or sub-pixel rendering.
Now, the idea of accepting higher resolutions on a display has been around for a while. NVIDIA does this in the form of Dynamic Super Resolution (and AMD has Virtual Super Resolution), and in these features a game/image is rendered internally at a higher resolution and then shrunk back down to the monitor’s native resolution. So, for example, a 3840×2160 image could be rendered and then approximated back down, resulting in a higher color quality (due to four pixels being sampled and averaged down into one 1080p pixel) and increased image quality similar to a high level anti-aliasing (which is effectively what “Downsampling” does in a way). However, there are inherent limits to it. AMD will not let you go beyond 3200×1800 with their VSR except on a few graphics cards. Also, this is more of an internal rendering rather than the screen scaling it itself.
By turning on “Virtual Super Resolution” as a starting point and then digging into the registry to locate a value called DALNonStandardModesBCD1, I was able to see the resolution values that the VIZIO was currently able to accept. Through playing with it, I figured out the highest values that the screen would recognize through a simple registry hack, and ultimately came up with the following values:
- 2560×1080 (ultra-wide, which renders with about 28″ visible on the 32″ screen)
- 2880×1620 (an exact double pixel resolution vs. 1080p)
- 3414×1440 (more accurate 21:9 WQHD value)
- 3414×1920 (3.5K 16:9; pixel limit via registry hack)
These settings worked fine, and showed up with no problem via the Windows Display Settings! Doing this registry hacking, I was able to get the GPU/display to take in a value greater than 3200×1800 and it still looks really great. The limitation in this case isn’t a vertical limitation, but rather a horizontal one. Through registry hacking, I could get it to do 3414×2160 if desired, but that’s an odd resolution and there was no point in doing so. Still, that’s pretty darn great! However, I wasn’t really done with it just yet.
Next, I decided to dig into the EDID settings themselves (the monitor’s internal display settings, to put it simply) with a program called Custom Resolution Utility by ToastyX. It’s worth noting here (which is relevant to our purposes) that CRU is not designed for downsampling. It doesn’t, in fact, downsample anything. It’s primary purpose is in adding display modes to your monitor/TV that aren’t showing up properly in Windows (or that you wish to add that fall within proper timings), or to “overclock” the screen by attempting to raise the refresh rate a bit. This is very different from GPU based internal rendering and downsampling, but for what I wanted to do, it fit the bill nicely.
Through CRU, I was able to get Windows to recognize the VIZIO as an actual 120 Hz panel (and display 120 Hz without any problem), as well as through very careful trial and error, get it to actually take the resolutions coded in earlier via the registry, and some new values, and get them to be internally scaled and output by the TV. In cases where the resolution was not possible, or the refresh was invalid, it simply would not appear in Windows, so it wasn’t a horrible task to complete. It was just time-consuming in terms of finding the proper timings.
As you can see in the photo above, I was actually able to force the TV to accept and properly render a full 3840×2160 resolution, as I suspected that I could because of its unique sub-pixel arrangement! As you see, this isn’t just the GPU crunching the resolution down to fit the panel’s native resolution, but rather the TV itself internally reporting a 3840×2160 native resolution! However, because the VIZIO only has HDMI 1.4a ports, it cannot accept anything higher than 3840×2160 (4K) at 30 Hz refresh. This is because of a strict limit of 330 MHz being sent over the HDMI cable to the port. Normally, the limit is 165 MHz, but this can be overridden in CRU.
The other really awesome thing is that I was also able to create 3840×1620 (4K ultra-wide at 30 Hz), as well as up to 2560×1080 at 120 Hz!
Here’s a complete listing of the customized settings I found were possible with this VIZIO E32-C1 being used as a monitor:
- 1920×1080 @ 120 Hz
- 2560×1080 @ 120 Hz
- 2560×1440 @ 60 Hz
- 2880×1620 @ 60 Hz (3K 16:9)
- 3200×1800 @ 60 Hz (set by VSR)
- 3414×1440 @ 60 Hz (WQHD 21:9)
- 3414×1920 @ 60 Hz (3.5K 16:9)
- 3840×1620 @ 30 Hz (4K 21:9, or WUHD)
- 3840×2160 @ 30 Hz (4K)
At 30 Hz, things are not nearly as smooth as at 60 or 120, but the crystal clarity is fantastic for games where a high frame-rate is less important than graphical clarity. At 120 Hz, I noticed that the colors in a couple places seemed slightly less vibrant than at 60, but again, this is quite impressive. All-in-all, I found this to be a very impressive feat for a $240 VIZIO 32″ TV, and it shows you that tech often has features hidden away that may not be stable or well-tested and thus get locked up, but with the proper calibrating you can really push things to impressive levels!
Sometime, I may talk more in-depth about how to work some of these tweaks, hacks, and edits, or about how Downsampling works, but for now, I hope you enjoyed this piece!