VMManager: Add renderer selection warning
Description of Changes
Adds a once per launch warning if a user does not have the renderer set to Automatic or Software.
Rationale behind Changes
Some users may change the renderer to a sub optimal option and experience problems with graphical issues performance and driver crashes on certain brands of GPUs. This warning will help point them in the right direction as to why this is happening.
Suggested Testing Steps
Make sure the warning works correctly.
Will this cause some trouble for users who deliberately choose a certain renderer insdead of "auto"? For example, AMD graphics cards will run faster and more stable on DX11 API. If choose auto, it will be switched to Vulkan. If the user knows their graphics card better than "auto" and specifies a rendering API, they will have to be bothered by this prompt every time when they open the game.
Will this cause some trouble for users who deliberately choose a certain renderer insdead of "auto"? For example, AMD graphics cards will run faster and more stable on DX11 API. If choose auto, it will be switched to Vulkan. If the user knows their graphics card better than "auto" and specifies a rendering API, they will have to be bothered by this prompt every time when they open the game.
AMD users have no reason to use DX11 it runs "faster" because it's inferior ability to run blending.
Will this cause some trouble for users who deliberately choose a certain renderer insdead of "auto"? For example, AMD graphics cards will run faster and more stable on DX11 API. If choose auto, it will be switched to Vulkan. If the user knows their graphics card better than "auto" and specifies a rendering API, they will have to be bothered by this prompt every time when they open the game.
AMD users have no reason to use DX11 it runs "faster" because it's inferior ability to run blending.
If you have an AMD RDNA3 integrated graphics card, you won't say that. A few months ago, the RDNA3 integrated graphics card often lost response when using the vulkan api in pcsx2. After several months of driver and pcsx2 iteration, this problem has been greatly improved, but it still exists. In addition, the RDNA3 integrated graphics card will be 20%~30% slower than dx11 when using vulkan in pcsx2. This usually results in lower magnifications being used when upscaling the resolution, even if the level of blending is increased.
Will this cause some trouble for users who deliberately choose a certain renderer insdead of "auto"? For example, AMD graphics cards will run faster and more stable on DX11 API. If choose auto, it will be switched to Vulkan. If the user knows their graphics card better than "auto" and specifies a rendering API, they will have to be bothered by this prompt every time when they open the game.
The message is shown once per PCSX2 run. You can run more than one game and the message will only be shown once. It only resets when restarting PCSX2.
If you have an AMD RDNA3 integrated graphics card, you won't say that.
If you have an RDNA 3 GPU you need to use the latest nightly with the latest drivers and at least 4x internal or higher to not have it crash. There shouldn't be any issues running at 4 to 6 times internal on any RDNA 3 GPU.
If you have an AMD RDNA3 integrated graphics card, you won't say that.
If you have an RDNA 3 GPU you need to use the latest nightly with the latest drivers and at least 4x internal or higher to not have it crash. There shouldn't be any issues running at 4 to 6 times internal on any RDNA 3 GPU.
Of course I have RDNA3 integrated graphics, and I keep up with the latest drivers and nightly versions of PCSX2. So I complain about the performance degradation of Vulkan. An obvious example is that in the game Soulcalibur III, DX11 can run at full speed at 4x internal resolution, and the GPU utilization rate is about 68%, while switching to Vulkan, 4x internal resolution can only run at 41fps, If want to run at full speed, have to reduce the internal resolution to 3x, and the GPU utilization rate is 76%.
I agree that it is advisable to prompt novice users when they use software rendering, or when the graphics card supports Vulkan and the user sets it to OpenGL API. Because the user's choice is obviously unwise at this time. But when the user specifies one of the DX11 DX12 Vulkan APIs, maybe he has a more suitable or sufficient reason. At this time, the user should not be disturbed rashly.
At this time, the user should not be disturbed rashly.
So you consider this PR a rash disturbance?
At this time, the user should not be disturbed rashly.
So you consider this PR a rash disturbance?
I am not a native English speaker, my reply was sent through a translator, so the wording may be inappropriate or impolite.
There is an old proverb in the East: if you have to use force to break a melon off the vine, it won't taste sweet (because it's only when the melon is ripe that it can be removed with just a slight twist)
I mean, it's good to remind users kindly, but isn't it too much to remind them every time they start the system? Maybe it would be more appropriate to write relevant reminders in the option comments.
I'm thinking a better solution is to add a confirmation dialog whenever the renderer dropdown is changed to a hardware renderer once per PCSX2 run (utilize that static bool I showed you).
Yes, it's a time waste when users select renderer xyz for no good reason and ask for support but we might be punishing reasonable setups. It's hard enough to get automatic right with all the different drivers / hardware.
One question is, how to ensure that the "auto" is definitely smarter than the user's choice? As far as I know, some early Intel integrated graphics cards support Valkan but have various problems running. This is why the Dolphin emulator now recommends Intel graphics card users to use DX11 in the video options.
As far as I know, some early Intel integrated graphics cards support Valkan but have various problems running.
they already default to either dx11/opengl
One question is, how to ensure that the "auto" is definitely smarter than the user's choice?
It really depends on the user. A power user might switch the renderer because it works better for them but also realize the new graphical glitches, lag, or crashes are because they switched off of automatic. These are the people I'm not too worried about as they don't usually take up time requesting support.
The larger issue comes from the users following youtube tutorials or just toggling random settings hoping that they can somehow squeeze for FPS out of the emulator. These people are more likely to blame the emulator for their messed up config. The hope is that an OSD or messagebox pointing out their modified renderer might make them think "hmm, maybe I should just leave this on Automatic." You can draw a comparison between this and the manual hardware hacks. When you disable the automatic hardware hacks you get an OSD warning despite some people liking a config differing from the automatic one.
Back to the question. We can't fully ensure that auto is better than a manual setting, but we keep the heuristics for automatic up to date with the latest information given to us by users and testers.