PSA: Not using your display's native resolution can add major input lag
-
something i've been aware of for some time, but never really made the connection with retropie, was that using non-native resolutions (eg, 640x480 on a 1080p TV) can add major input lag.
the reason for this is that when you send a modern digital TV a signal that is not the same as the its native resolution (typically 1080p - 1920x1080), the TV has to use its display processor to stretch this image to full screen. this operation is costly, and will add latency. sometimes HUGE amounts.
to ensure you're running in native resolution, use the runcommand and check that option 4 and 5 ("video mode") are set to blank/nothing. eg
this is the default in retropie, but changing these to lower resolutions is often mistakenly suggested in various unofficial channels/guides, so worth double-checking!
i have added this to the input lag guide: https://github.com/RetroPie/RetroPie-Setup/wiki/Input-Lag#use-hdtvs-native-display-resolution
as a little bit of background, this came to my mind yesterday when i was watching netflix on a friend's xbox. the dialog was happening about 0.5 seconds before they moved their mouths, which is the WORST! i trawled through their xbox settings and noticed they had set the output to 1366x768 for some reason. i set it back to 'automatic' (which on their TV is 1080p) and suddenly everything was in sync. if netflix was that bad, games must have been unplayable!
-
I have played with this myself many times too. In my case, my TV is a budget Samsung TV with native resolution of 1368 x 768 (~720p). However, the TV doesn't allow me to use Game Mode (aka low-latency mode) if the input is not sending a signal in a "standard" HD mode such as 720p/1080p.
For this reason, I have my RPI on native resolution in
config.txt
so ES or the console look very crisp and useCEA-4
in runcommand for the RPI to switch to 720p when running emulators. This is the only way for me to use Game Mode and achieve low latency. -
@hhromic said in PSA: Not using your display's native resolution can add major input lag:
For this reason, I have my RPI on native resolution in
config.txt
so ES or the console look very crisp and useCEA-4
in runcommand for the RPI to switch to 720p when running emulators. This is the only way for me to use Game Mode and achieve low latency.when running in 720p, do you see small black borders around the entire image? if so, i guess it's not doing an upscaling operation so you should be ok!
-
@dankcushions no, in 720p my TV does scale to full screen. In this case is 1280 x 720 -> 1368 x 768.
However, is the only way to enable Game Mode. I agree on the logic you are using (scaling is extra work for the TV processor). However, the question is: is "game mode + scaling" better than "native resolution and no game mode"? I think the answer depends on each TV case-by-case. In mine, for example, Game Mode does reduce latency more than not scaling. The TV game mode is optimised for 720p/1080p signals in my TV.
I guess the right thing to do is to keep this in consideration for users to understand how their TVs work and choose the right approach. Unfortunately there is no holy grail on this :(.
-
@hhromic said in PSA: Not using your display's native resolution can add major input lag:
@dankcushions no, in 720p my TV does scale to full screen. In this case is 1280 x 720 -> 1368 x 768.
However, is the only way to enable Game Mode. I agree on the logic you are using (scaling is extra work for the TV processor). However, the question is: is "game mode + scaling" better than "native resolution and no game mode"? I think the answer depends on each TV case-by-case. In mine, for example, Game Mode does reduce latency more than not scaling. The TV game mode is optimised for 720p/1080p signals in my TV.
it's strange because 'game mode' is effectively 'no/less post processing mode', and an upscaling operation is certainly post processing, and often a costly type of post processing at that. but yes, perhaps your screen has dedicated scaler for this operation that does it for 'free'.
I guess the right thing to do is to keep this in consideration for users to understand how their TVs work and choose the right approach. Unfortunately there is no holy grail on this :(.
i think your situation is unique as not many users will be using 1368 displays, much less that particular model, but yes it's not a specific holy grail. as you can see our input lag guide has many sections :)
-
@dankcushions said in PSA: Not using your display's native resolution can add major input lag:
it's strange because 'game mode' is effectively 'no/less post processing mode', and an upscaling operation is certainly post processing, and often a costly type of post processing at that. but yes, perhaps your screen has dedicated scaler for this operation that does it for 'free'.
I def agree with this thinking, however things are no so simple, Game Mode is there to help specifically with latency issues, e.g. for PS/Xbox console users, and of course they consider fullscreen upscaling too.
i think your situation is unique as not many users will be using 1368 displays, much less that particular model, but yes it's not a specific holy grail. as you can see our input lag guide has many sections :)
I would dare to say that almost every cheap 720p TV has 1368 x 768 panels, for almost every brand. They are very cheap to produce compared to a 1280 x 720 panel, hence why they use it for 720p-only cheap TVs. I can bet 99% of users with 720p-only TVs have these non-standard resolution panels :).
But yes, I agree that clear information for users to understand their setup is better than a "works for all" recipe. I just wanted to remind that always using native resolution is not always better.
-
Ah also, the important part of my original post is that Game Mode (which is recommended by the guide) might not appear if not outputting at 720p/1080p signal (which is not native for most 720p-only TVs). I myself was very confused initially why I couldn't activate it until I realised this "detail".
-
@hhromic said in PSA: Not using your display's native resolution can add major input lag:
I would dare to say that almost every cheap 720p TV has 1368 x 768 panels, for almost every brand. They are very cheap to produce compared to a 1280 x 720 panel, hence why they use it for 720p-only cheap TVs. I can bet 99% of users with 720p-only TVs have these non-standard resolution panels :).
point taken, but this seems a little pedantic :) a TV marketed as 720p but is actually using a 1368x768 panel is presumably going to have a dedicated cost-free scaler to get the panel to display the marketed resolution, lest it became useless for gaming, or just about anything you'd want to use it for (or maybe they are just useless!).
when using a 'blank' video mode as is the default, and what my guide suggests, the pi is going to use the video mode that the TV instructs during the HDMI handshake. generally i would presume that the video mode instructed is the most performant.
Ah also, the important part of my original post is that Game Mode (which is recommended by the guide) might not appear if not outputting at 720p/1080p signal (which is not native for most 720p-only TVs). I myself was very confused initially why I couldn't activate it until I realised this "detail".
in your particular scenario i would want to use a slow motion camera to see if 720p 'game mode' was actually less laggy than 1368x768 + post processing effects manually turned off. i wonder...
-
@dankcushions said in PSA: Not using your display's native resolution can add major input lag:
@hhromic said in PSA: Not using your display's native resolution can add major input lag:
I would dare to say that almost every cheap 720p TV has 1368 x 768 panels, for almost every brand. They are very cheap to produce compared to a 1280 x 720 panel, hence why they use it for 720p-only cheap TVs. I can bet 99% of users with 720p-only TVs have these non-standard resolution panels :).
point taken, but this seems a little pedantic :) a TV marketed as 720p but is actually using a 1368x768 panel is presumably going to have a dedicated cost-free scaler to get the panel to display the marketed resolution, lest it became useless for gaming, or just about anything you'd want to use it for (or maybe they are just useless!).
They probably have these scalers, yes. This 1366 x 768 cheaper panels thing is a very old trick (aka dick move) from manufacturers to be able to sell TVs as "HD-ready TVs", is a bit dissappointing but that is how it is for these to remain cheap to sell.
From: https://www.techradar.com/news/best-tv-us/2
HD TVs come in two resolutions. Sets with the HD ready are required to be able to display a minimum 720p picture, and generally has a screen resolution of 1366 x 768 pixels. Meanwhile, Full HD TVs have a higher resolution of 1920 x 1080 pixels. It's highly advisable that you don't go for anything less than full HD in this day and age.
The real recommendation here is "don't go for HD-ready TVs, but FullHD" :) However the HD-ready ones are cheaper so probably to be found with the average RetroPie user.
when using a 'blank' video mode as is the default, and what my guide suggests, the pi is going to use the video mode that the TV instructs during the HDMI handshake. generally i would presume that the video mode instructed is the most performant.
My TV reports back 1366 x 768 as the optimum resolution and the RPI uses that by default, yes. However the TV is not smart enough to realise that you want to use games there and offer a Game Mode-compatible mode instead, aka 720p. Real consoles typically send signals in 720p/1080p so they are covered automatically and the Game Mode is available out of the box.
I think the problem is mostly for cheap HD-ready TVs + 720p mode. Any 1080p FullHD TV should benefit directly from not forcing a resolution mode as you suggest. This said, I think the best advise to give in a guide would be "If you have an HD-ready TV, force CEA-4 mode, otherwise leave it blank for automatic mode". That probably will make most users happy out-of-the-box.
in your particular scenario i would want to use a slow motion camera to see if 720p 'game mode' was actually less laggy than 1368x768 + post processing effects manually turned off. i wonder...
I definitively wanted to do that test when I was testing my TV, unfortunately I don't have a slowmo shooting phone nor camera :(. However, without Game Mode the latency/lag is very noticeable in demanding cores such as
lr-snes9x
, that are much better with Game Mode. I do have a performant RPI 3B+. -
@hhromic it's a real shame that so many of those 720p TVs do that :( even if they mitigate the lag from the upscale operation, you're still going to have an ugly image with either blurring or other scaling artefacts when running at 1280x720 on a panel that is natively 1366x768 :/
this is actually the reason i added this section to the overscan guide - i noticed that by default my 1080p samsung TV was assuming there was overscan garbage being sent as part of the 1080p image, and cropping it slightly. this in combination with
disable_overscan=0
meant that i was getting some ugly scaling artefacts - very obvious when using a CRT shader as i was getting moire patterns. i immediately solved my issue with the tip in the linked section, but i guess it's a trickier decision for you if that kind of solution causes display lag :( -
@hhromic oh, interesting! someone on reddit has the opposite scenario to you! 720p TVs are weird...
https://www.reddit.com/r/RetroPie/comments/9ty2kk/retropie_vs_snes_classic/e9380li/i think my advice for 720p TV owners is: buy another TV :D
-
@dankcushions said in PSA: Not using your display's native resolution can add major input lag:
i think my advice for 720p TV owners is: buy another TV :D
Whoops, too late. I already bought a new TV a few weeks ago.
This one, while 720p, is leaps and bounds better than my old one. My old one had no overscan or scaling settings. Most things just wouldn't work on that TV. Chromecast would be unusable due to not scaling properly.
The new one was on sale, $99.
-
@dankcushions said in PSA: Not using your display's native resolution can add major input lag:
@hhromic oh, interesting! someone on reddit has the opposite scenario to you! 720p TVs are weird...
https://www.reddit.com/r/RetroPie/comments/9ty2kk/retropie_vs_snes_classic/e9380li/i think my advice for 720p TV owners is: buy another TV :D
+1000 , definitively if one has the budget... cheap 720p TVs are sometimes not worth the hassle
-
@lilbud said in PSA: Not using your display's native resolution can add major input lag:
@dankcushions said in PSA: Not using your display's native resolution can add major input lag:
i think my advice for 720p TV owners is: buy another TV :D
Whoops, too late. I already bought a new TV a few weeks ago.
This one, while 720p, is leaps and bounds better than my old one. My old one had no overscan or scaling settings. Most things just wouldn't work on that TV. Chromecast would be unusable due to not scaling properly.
The new one was on sale, $99.
that sounds nice, what brand/model it is? is the panel 1280 x 720 or 1366 x 768 ?
-
@hhromic The panel is 1366x768, but it is advertised as 720p
It really is a nice panel, has a full scan mode so nothing is cut off. I think it is also more than 60hz. Cause the black frame insertion setting on RA doesn't flicker. So I think it is 120hz, though I'm not sure.
-
@lilbud yes they are always advertised as 720p "HD ready", the panel size is "implementation detail" ... your experience sounds great.. not every 1366 x 768 panel is made equal.. nor the controller boards.. so I guess you got a good value for your money :)
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.