720p or 1080p
-
I think Dank made a good point for 1080 is that you have more room for sharper scaling and less distortion when using something like DaveJ's shader (godly) which is essential for modern day LCD displays.
By the way Dank. I've been thoroughly enjoying using the vertical shader configs you created, amazing stuff, brilliant work!
-
@Riverstorm said in 720p or 1080p:
By the way Dank. I've been thoroughly enjoying using the vertical shader configs you created, amazing stuff, brilliant work!
thanks! ironically i recently set up retropie for my brother and after seeing some games without the shader i suddenly decided i prefer the crisp pixelly image without the shader.. for this month, anyway :)
-
Some notes on memory usage.
The examples shown are for a 4:3 game displayed on a 1920x1080 screen. The game screen is upscaled to 1440x1080 to keep the aspect ratio the same. Game screens vary in resolution so I've used a rough average.
a) GPU upscales image: GPU reads game image, upscales it and sends it to the display. It can upscale (with linear or nearest filtering) to any supported resolution without extra memory accesses. Relative memory accesses = 1.
b) With overlay: GPU reads game image, combines it with overlay (which it also has to read) and sends it to the display. Needs memory from a) plus size of overlay (overlay is 30 times as big as image from game). Relative memory accesses = 31.
c) Using shader: GPU upscales game image using shader and writes it out to memory. GPU reads upscaled image and sends it to display. Needs memory from a) plus 2 * upscaled image size (upscaled image is 23 times as big as image from game). Relative memory accesses = 47.
d) Shader with overlay: As c) but also has to read the overlay whilst sending image to display. Relative memory accesses = 78.
For a 720 screen, the overlay and shader upscaled images are about half the size.
All Pis have relatively slow memory and the CPU and GPU can end up fighting over access to it. My recommendation is to overclock your memory as fast as it will go whilst still remaining stable.
If you're using shaders overclocking the GPU can help relieve pressure on memory - it doesn't use less but the access pattern changes a bit making it conflict less with the CPU. Note: crt-pi in it's default configuration was designed to work on Pi1+2s with the default GPU clock of 250MHz, by overclocking I mean reative to that. By default Pi Zeros are clocked at 300MHz and Pi3s at 400MHz. If you get overheating problems with Pi3s running shaders you could try underclocking the GPU down from 400MHz - but it might cause problems for shaders other than crt-pi.
-
@davej said in 720p or 1080p:
For a 720 screen, the overlay and shader upscaled images are about half the size.
Thanks Dave that's some really helpful information. I didn't quite understand the relative memory accesses. Using a shader requires 23 times more memory(?) but 47 memory accesses like as in rendering it accesses memory 47 times to apply the shader ? Is there a tangible amount used per rendered frame like height x width x bit depth?
If it can be answered easily, can the Pi comfortably run most games at 1080p with a shader? Is there a gain to be had at 720p? It seems like the memory accesses would be equivalent between both but the memory usage would be half? Also an image twice the size would require more work manipulating at a pixel level? Basically your doing twice the work in the same clock cycle?
It doesn't look like there's much difference in visual quality for the most part?
-
@Riverstorm said in 720p or 1080p:
If it can be answered easily, can the Pi comfortably run most games at 1080p with a shader? Is there a gain to be had at 720p?
Yeah, I had no problems with games at 1080p with the crt-pi shader on my pi3 with cpu/gpu/mem at 1300/500/500. If a game runs slow, disabling the crtpi shader and going native res didn't help in the games I tried. I got a huge speed boost by just changing the emulator instead. I have to use four different arcade emulators because games will slow down on one and be faster in another. I used my pi2 to sort that.
Bit offtopic, but I did have to disable the crt-pi shader on my pi2 on a 720p tv because it looked really bad. It looks like someone ran over the screen with crt-pi tire marks or something...I don't think the shader was made for 720 or maybe a scaling issue since the tv's hdmi ports only handle 720p/1080i but the vga port will do 1366x768. Forcing the output to either 720p or 1080i did not help.
@Riverstorm said in 720p or 1080p:
Buying a 4K video card to drive a 1080p monitor seems silly unless money is of no concern.
Not silly at all. The power is needed to either downsample the image and/or 144hz gaming.
-
@davej But if you have a fan it should be okay right? Not only that but I tried over clocking once and it said that my pi wasn't allowed to over clock.
-
@Riverstorm said in 720p or 1080p:
Thanks Dave that's some really helpful information. I didn't quite understand the relative memory accesses. Using a shader requires 23 times more memory(?) but 47 memory accesses like as in rendering it accesses memory 47 times to apply the shader ? Is there a tangible amount used per rendered frame like height x width x bit depth?
The relative access figures were just away of indicating how much extra work the Pi needs to do when using shaders and/or overlays. If a read or a write of a pixel is one memory access, reading or writing the whole of a large image will take more of them than for a small image.
If it can be answered easily, can the Pi comfortably run most games at 1080p with a shader?
Not really. It depends on the game and the shader. Most shaders are too complex for the Pi - I wrote crt-pi because there wasn't a decent CRT shader that ran well at 1080p. Even then, it pushes the Pi so hard that it only just manages it. Tweaking the crt-pi settings can slow it down. Running a complex game can slow it down. Running a more accurate (and so slower) emulator can slow it down.
Is there a gain to be had at 720p? It seems like the memory accesses would be equivalent between both but the memory usage would be half? Also an image twice the size would require more work manipulating at a pixel level? Basically your doing twice the work in the same clock cycle?
720p screens use half the memory that 1080p one do and so are less susceptible to the slowdowns mentioned above You might also be able to use more complex shaders.
It doesn't look like there's much difference in visual quality for the most part?
There is with crt-pi. If you are not scaling by integer amounts, crt-pi needs about 4 screen pixels to display one game pixel and still look reasonable. A 720p screen doesn't provide enough pixels for that.
-
@RedBatman said in 720p or 1080p:
@davej But if you have a fan it should be okay right? Not only that but I tried over clocking once and it said that my pi wasn't allowed to over clock.
If it's running cool enough anyway, whether with a fan or not, you shouldn't need to underclock.
-
Bit offtopic, but I did have to disable the crt-pi shader on my pi2 on a 720p tv because it looked really bad. It looks like someone ran over the screen with crt-pi tire marks or something...I don't think the shader was made for 720 or maybe a scaling issue since the tv's hdmi ports only handle 720p/1080i but the vga port will do 1366x768. Forcing the output to either 720p or 1080i did not help.
i experienced this same thing with my older 720p TV, where the native resolution was 1360x768. editing the /boot/config.txt with:
hdmi_group=2 hdmi_mode=39
fixed the scaling issues with the crt-pi shaders.
-
@davej said in 720p or 1080p:
I wrote crt-pi because there wasn't a decent CRT shader that ran well at 1080p.
Thank god for that. I was perfectly fine running most of the MAME games I enjoy in mame4all as it does have a bit more flexibility when configuring controls but I had to switch to mame2003 exclusively (except vector games--and a few that only work in AdvMAME) to take advantage of crt-pi as it's truly a slice of heaven, love that shader.
crt-pi needs about 4 screen pixels to display one game pixel and still look reasonable.
That's interesting and explains a few things on recommended minimum resolution.
Also the other information helps to know there's a little wiggle room for tweaking and testing with clocks and resolution if a game isn't running up to par with crt-pi.
@dankcushions said in 720p or 1080p:
after seeing some games without the shader i suddenly decided i prefer the crisp pixelly image without the shader.. for this month, anyway :)
Agreed! I've been doing that with Atari and NES but the MAME emulators are always crt-pi especially with those polished vertical cfg's with the custom aspect ratios. :)
-
This is great info even for those of us who are not using standard HD video resolutions. Anyone building an arcade cabinet using dirt cheap 17 or 19-inch LCDs typically find them running 1280x1024 resolution, and although 1024p is not 1080p, it's certainly better than 720, and I can definitely attest to how nice the CRT-PI shader looks at 1024.
It's also handy to know that the shader looks best when it has 4x game resolution to render the scanline and shadow mask effects. This has come up in a few other threads over the past few months--people building hand-held devices that have tiny screens sometimes ask about using the CRT-PI shader. I had always thought you would need extra pixels to make the CRT effect look nice. I guess my advice was sound. Good info all around.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.