Advertise lower modes - #19062
Conversation
|
Fundamentally the entire TV resolution dropdown needs to be reworked IMO to behave like the Sound Formats settings already does, aka matching PS3 realHW behaviour (where you check off individual modes your TV supports from a list, unless you're on HDMI where it can autodetect the best mode, usually 1080p, and autocheck all lower modes, very similar to the console's and RPCS3's UX for selecting audio formats). |
yeah, on real HW the EDID is used to list the supported capabilities. On RPCS3 it is static so I simply needed to provide standard Full HD resolutions supported by games and TV |
|
I', wondering if it won't be better to do a fallback trought cases to not duplicate code |
Exactly, the resolutions in PARAM.SFO only tell us what is supported without any details, so selecting all the desired output resolutions and having RPCS3 choose the best would be better. |
kd-11
left a comment
There was a problem hiding this comment.
We decided long ago to restrict the list on purpose. There are 2 reasons for this:
- Isolation. If a game is presenting broken graphics to the user, a single-mode selection allows us to communicate and document known bad resolutions. This is why that knowledge base exists today, we know game X will break if you select resolution Y because we only showed it resolution Y. Selecting 1080p doesn't just mean "maybe give me 1080p", we really wanted it to be 1080p and only 1080p. That's also why the default is 720p.
- Games do not always function correctly when unsupported resolutions are selected by users and the game is not expecting them. As you know, there is a serious problem with users conflating the "TV" output resolution and ingame resolution in the general populace too, so once you show them 1080p they'll just go for that.
There's also the firmware issue here - we know games break when modes outside their declared set cause problems, which means the PS3 firmware itself filters out the list, but idk if anyone thoroughly documented that behavior.
This is why I asked that such ideas be put in a discussion ticket first before we move to PRs. While there is a problem here, we don't yet have consensus on a proper stable solution that doesn't also infuriate maintainers with asinine requests about resolution support.
Next actions:
- Check real PS3 behavior when a manifest is present. I believe we already did some tests for this but I cannot recall if the results were documented. We really should have a github wiki with all the hardware test results.
- If we decide to still proceed with the lower modes, then it becomes a matter of matching VSH behavior. You should not ever send modes that the user did not approve. The user should pick the resolutions from a list like they do on VSH.
- If we insist on sending all modes in the manifest to the game, we need a way to stop the user from kneecapping themselves. I don't want to look into issues where end users configure themselves into a terrible experience. This isn't some simple thing like adding a comment to the UI because users don't read them. Previously if you set 1080p and game crashes, reset to default and move on. Now if I select 1080p and 480p and the game launches with problems - ??
If we're going to touch this incredibly thorny aspect of rpcs3, then it has to be done right and in one go.
|
I'll append my personal opinion now below: Gains: Losses: EDIT: Added Gains-ii |
Just to throw another two pennies worth in, this is where I’ve also thought that, in future, maybe the TV resolution selection should also be banished from easy user access altogether into say the Advanced or even Debug tabs if need be to eliminate confusion, those major issues are quite serious ones especially the more user-facing/UX concerns. I believe there is a small subset/list of games that did in fact render at true native 1920x1080 on PS3 without compromise versus the 720p mode, where I think the emulator defaulting to 1080p on these select titles could be beneficial as far as getting higher resolution UI artwork goes for example (were the game to use lower resolution UI artwork in the 720p mode). Those cases should really be handled by the wiki & database settings though and otherwise 720p defaulted to in all other cases, such that most casual users should never have to even think about this option in practice and only need to worry about resolution scaling. I’d still argue though that, once hidden away, the TV resolution behaviour should match up with PS3 selection behaviour for those tweaking with it just to ensure that all possible game behaviours can be obtained inside the emulator (even if they’re relatively stupid, like GTA IV having a mode that upscales to 1080p if and only if the 720p mode is unselected in the XMB). It’d also avoid ambiguity on what a ‘1080p’ dropdown selection could mean as, like with Sound formats having both the dropdown and the checklist, you can visually see what each dropdown mode checks off (I’d expect them to check off every mode up to and including the mode chosen versus just checking off said mode, for example). |
|
I think for a long time, every time this issue comes up, we all agree it should be a checklist, not a single entry dropdown as it is right now. But we are yet to solve the UX problem of not letting users pretty much destroy the experience by having that 1080p thing checked. Unfortunately games didn't offer the "performance" and "quality" options back then in the game menus, so this is all done silently without the user choice. The worst thing is those games that force FHD by lowering the graphical fidelity. |
|
I think the best course of action would be what @schm1dtmac said, hide the option somewhere most users won't mess with it, defaulted to 720p and below checked, then pull 1080p default from the database only for the few games where it is beneficial. The only problem is that the database doesn't pull debug settings, so I don't know how one would effectively "hide" this setting and pull from the database at the same time, but I'm sure less people would mess with the setting that way. Really, anything we can do to hide this setting is good for the user, as messing with it manually makes the experience worse 99% of the time. |
Disclosure: Used Opus 4.8 for instrumenting and analyzing log.
Bug description
cellVideoOutGetDeviceInfodid not advertise the lower standard resolutions (720p/480p) when the video output was configured at 1080p or higher, unlike a real display which reports them in its EDID.Evidence from the instrumented log at the crash point:
• At 1080p, cellVideoOutGetDeviceInfo returned only 1080 modes:
No 720 mode.
• The registers at the crash showed the game looking for the 720 mode:
The game (Metal Gear Solid V: Ground Zeroes renders at 720p) searched for the 720 mode in the device info. At 1080p it was missing, so the game's internal lookup function returned NULL, and dereferencing it caused the access violation.
This explains:
• why 720p works (the 720 mode is present);
• why adding/removing the 1080 modes (the earlier attempts) changed nothing — the game was not looking for those.
Fix
A real Full HD display also advertises the lower resolutions in its EDID. In rpcs3\Emu\Cell\Modules\cellVideoOut.cpp I added the lower standard modes (720p/480p) to all high-resolution cases (_1080p, _1080i, _720p, _1600x1080p, _1440x1080p, _1280x1080p, _960x1080p), replicating real hardware behavior.
(a mix of the issue and non sense FR request) fixes #17058
fixes #15570
fixes #15464
probably fixes #14786
(used as reference even if prematurely closed without a fix) fixes #14538