MiSTer-devel / Main_MiSTer

Main MiSTer binary and Wiki
GNU General Public License v3.0
3.01k stars 323 forks source link

dvi_mode=0 changes the vertical resolution to 1 pixel #654

Open dfilskov opened 2 years ago

dfilskov commented 2 years ago

(UPDATE - earlier I wrote that VRR causes this issue but it's the dvi_mode)

On portrait mode displays or square displays where the vertical resolution is higer than or equal to the horizontal resolution dvi_mode=0 seems to force the vertical resolution down to just 1 pixel (aka a "PIXEL-LINE" below) or make the screen blank.

I tested this on LG DualUp. (I can test this on an Eizo 1920x1920 display too if that helps - just let me know)

Screenshot_20220705-105841~2

Screenshot_20220705-105834~2

These resolutions work with dvi_mode=1 but NOT with dvi_mode=0 (they should but they don't). Note that they all have either larger vertical resolution than horizontal or they're similar/equal (for portrait or square displays)

; 960x960 @ 60Hz ; video_mode=960,32,16,32,960,32,16,32,62400 ; dvi_mode=1 WORKS / dvi_mode=0 BLACK SCREEN

; 960x960 @ 100Hz ; video_mode=960,32,16,32,960,32,16,32,104000 ; dvi_mode=1 WORKS but shows OUT OF RANGE / dvi_mode=0 BLACK SCREEN

; 1280 x 1440 @ 50 Hz ; video_mode=1280,16,8,16,1440,16,8,16,97680 ; dvi_mode=1 WORKS / dvi_mode=0 PIXEL-LINE

; 1280 x 1440 @ 60 Hz ; video_mode=1280,16,8,16,1440,16,8,16,117220 ; dvi_mode=1 WORKS / dvi_mode=0 PIXEL-LINE

; 1920x1920 @ 50 Hz ; video_mode=1920,8,8,8,1920,8,8,8,189000 ; dvi_mode=1 WORKS / dvi_mode=0 PIXEL-LINE ; video_mode=1920,32,16,32,1920,32,16,32,200000 ; dvi_mode=1 WORKS / dvi_mode=0 BLACK SCREEN

; 1920x1920 @ 60 Hz video_mode=1920,16,8,16,1920,16,8,16,230500 ; dvi_mode=1 WORKS / dvi_mode=0 PIXEL-LINE

; 2560 x 2880 @ 30 Hz ; video_mode=2560,16,8,16,2880,16,8,16,227721 ; dvi_mode=1 "WORKS" (C64 messes up, though) / dvi_mode=0 PIXEL-LINE

These resolutions work both with dvi_mode=0 and dvi_mode=1 as they should. Note that they all have higher horizontal reso than vertical ("normal" wider than tall displays)

; video_mode=9 ; dvi_mode=0 WORKS

; 1920x1440 @ 50 Hz ; video_mode=1920,128,208,344,1440,1,3,56,195000 ; dvi_mode=0 WORKS

; 1920x1440 @ 60 Hz ; video_mode=1920,128,208,344,1440,1,3,56,234000 ; dvi_mode=0 WORKS

birdybro commented 2 years ago

Did you test both vrr_mode=2 and vrr_mode=3?

dfilskov commented 2 years ago

I've updated the issue. I found out that the dvi mode was the culprit - not VRR. Sorry!

sorgelig commented 1 year ago

DVI mode is just a register set in HDMI encoder chip. So it may be how specific monitor works. Basically HDMI mode adds servicing packets in horizontal/vertical blanks leaving amount of pixels per line and lines per frame the same.

dfilskov commented 1 year ago

Perhaps it's a bug in the LG DualUp?

sorgelig commented 1 year ago

may be