Pixel clock, vga and CRT

Hello, i have a linux pc with 2 monitor, primary lcd directly connected to discrete amd radeon rx 570 and secondary CRT connected trought intel vga d-sub embedded on main board, (primary gpu pcie selected and IGPU multimonitor active on bios setup).

I use xrandr to manage crt and lrmc to generate lowres modelines; i get without problems res like 720x288 or 640x200 but lrmc can’t give me resolution with low value of orizzontal pixel, e.g. if i ask him 320x288 he give me 720x288.

I investigate and i found that there is a special option “-l” that enable low pixel clock; I think it’s disabled by default because some video cards don’t handle it, that’s right? in fact my graphics card doesn’t work with these horizontal resolutions.

How i can have a pixel perfect, (not just with retroarch but with other emulators like fs-uae as well)? My idea is to take a monitor that support 480p or more and use scale integer on all emulators…

You should use a “super” res that’s very wide and an integer multiple of many resolutions. The higher the better, so start with 3840x and if that doesn’t sync, try 2560x. 1920x works fine, too, and is required on RPis because that’s the highest they’ll go for some reason, but desktop GPUs can probably do the higher resolutions just fine.

@hunterk

Are you sure 1920x is highest Raspberry Pi can go? I would like to buy one, and will probably use a HDMI to VGA converter, but I would like to use 3840x240 since it gives more granularity control over the scaling.

By the way, I’m currently using the Windows version of Retroarch and 3840x240 is my main resolution. I’m using RGUI, Vulkan driver and a slang shader called “box.slang” (scales output according to the scale factor parameters).

When using this shader, I tweak the parameters according to the emulator. I always use 1x for the Y axis but the X axis will vary depending of the emulator.

So, for example, when using GBA I like to multiply the X scale by 13 using this shader, leaving the Retroarch video scaling intact (3840x240) because that seems to be the only way to also keep RGUI scaling intact.

If I don’t use this shader, and try to scale things using Retroarch scaling video settings, the RGUI will also be affected, and some emulators like GBA ruins the interface scaling because I prefer to run GBA games on a much smaller window.

That been said, do you know if there is any resource on the Raspberry version that allows something similar that I achieve when using this shader on Windows? I’m not sure if this box shader also works on the Raspberry Pi.

The shader should work fine on RPi, yes. I’m not 100% sure that it can’t go >1920, but I’ve never been able to get it to sync at any higher res. OTOH, I also haven’t noticed any non-integer “shimmering” at that size anyway. You could also use a shader like sharp bilinear to interpolate across the X-axis, if you do.

@hunterk

The reason I prefer to use 3840x instead of 2560x or 1920x is because I don’t play games that use less than 320 horizontal pixels at fullscreen, because I prefer square pixels. So, for SNES games, for example, I can increase the integer scaling until the pixels looks square.

When using 3840x I have more (integer) scaling options to reach a better aspect ratio, but when using 2560x or 1920x the scaling numbers are more limited, and I don’t achieve the same aspect ratio that I can when using 3840x.