godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.15k stars 97 forks source link

Editor's "Report System Info" should report more critical info #7413

Open darksylinc opened 1 year ago

darksylinc commented 1 year ago

System information

Godot v4.2.dev (262d1eaa6) - Ubuntu 20.04.6 LTS (Focal Fossa) - X11 - Vulkan (Forward+) - dedicated AMD Radeon RX 6800 XT - AMD Ryzen 9 5900X 12-Core Processor (24 Threads)

Describe the project you are working on

None.

Describe the problem or limitation you are having in your project

Following what I said in https://github.com/godotengine/godot/issues/71929#issuecomment-1657193151 Godot does not print enough data we need to troubleshoot some problems.

Right now on my system it prints:

Godot v4.2.dev (262d1eaa6) - Ubuntu 20.04.6 LTS (Focal Fossa) - X11 - Vulkan (Forward+) - dedicated AMD Radeon RX 6800 XT - AMD Ryzen 9 5900X 12-Core Processor (24 Threads)

Whereas it should print:

Godot v4.2.dev (262d1eaa6) - Ubuntu 20.04.6 LTS (Focal Fossa) - X11 - Vulkan (Forward+) - AMD Ryzen 9 5900X 12-Core Processor (24 Threads)

Vulkan devices:
#0: AMD AMD Radeon RX 6800 XT - Supported, Discrete - Vulkan API 1.3.208 - Driver Version 2.0.221.0 (0x8000dd)
#1: AMD AMD Radeon RX 6800 XT (RADV NAVI21) - Supported, Discrete -  Vulkan API 1.3.238 - Driver Version 23.0.4.0 (0x5c00004)
#2: Unknown llvmpipe (LLVM 12.0.0, 256 bits) - Supported, CPU - Vulkan API 1.x.x - Driver Version x.x.x.x (0xxxxxxxx)
#3: Unknown llvmpipe (LLVM 15.0.7, 256 bits) - Supported, CPU - Vulkan API 1.x.x - Driver Version x.x.x.x (0xxxxxxxx)
#4: AMD AMD Radeon RX 6800 XT (RADV NAVI21) - Supported, Discrete - Vulkan API 1.x.x - Driver Version x.x.x.x (0xxxxxxxx)

Vulkan API 1.3.208 - Forward+ - Using Vulkan Device #0: AMD - AMD Radeon RX 6800 XT

This is important because on some Optimus laptops the version of the Intel driver is relevant even though they're using the NVIDIA card. Users should be advised to update to the latest drivers for both NV and Intel, not just the NV one.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

It should report what's been described. In Editor Go to -> Help -> Copy System Info

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

I haven't thought of it yet, but I will look into the code and make the necessary adjustments since Godot already has all the available data.

If this enhancement will not be used often, can it be worked around with a few lines of script?

Well, the user could post the full output of vulkaninfo by hand.

Is there a reason why this should be core and not an add-on in the asset library?

It's relevant for better bug diagnosing.

Is there a reason why this should be core and not an add-on in the asset library?

AThousandShips commented 1 year ago

Please follow the template, don't delete any headingsit's important

Calinou commented 1 year ago

We intentionally keep the system information result on a single line, so that it can be pasted in a single-line field in the issue form. This is because multiline fields don't provide browser autocompletion, so users can't easily submit issues with hardware information from previous issues. I personally rely on browser autocompletion a lot when reporting issues, so I don't want it to go away. We learned this the hard way.

Unfortunately, displaying the list of all adapters on a single line would make it too long. It would also break https://godotengine.github.io/issue-stats/, which I've spent a lot of effort on recently[^1] :slightly_frowning_face:

[^1]: It's possible to detect which GPUs are present on the system information line and only keep the dedicated GPU in the final report, but it's a lot of work for AMD and Intel (Arc) dedicated GPUs. For NVIDIA, you could assume the GPU is always dedicated, since NVIDIA hasn't produced integrated graphics for over 15 years now (remember nForce chipsets?).

Also, 99% of the time, you can assume whether the user is on a hybrid GPU system or not (depending on whether the GPU name ends with "M", "S", "Laptop GPU" or "with Max-Q Design"). There are a few laptops out there where you can disable hybrid graphics entirely in the UEFI, but the IGP is usually enabled by default in those machines. These are generally the highest-end gaming laptops that don't care about battery life, such as those sporting RTX 4090/4080 Laptop GPU. If all else fails, the CPU model name will likely give you a hint too.

If we know the user is on a laptop, we can apply the advice to tell them to update both their IGP and dedicated GPU drivers (from Intel/AMD/NVIDIA's website, not the laptop OEM, not Windows Update).

If we really want to provide an option for full system diagnostics, we could have a separate option that includes much more information (such as audio outputs/inputs, display resolutions, OS scale factor, etc). https://github.com/godotengine/godot/pull/75025 does this when running Godot in verbose mode already. This would definitely not fit in a single-line field though.

darksylinc commented 1 year ago

OK those are all fair points.

I have no problem if it gets moved to another option (e.g. "Copy Detailed System Report") that we can request on demand or be part of the Github template that can be left blank unless related to certain topics (like device lost events, system freeze/hang, and TDR).

Also, 99% of the time, you can assume whether the user is on a hybrid GPU system or not (depending on whether the GPU name ends with "M", "S", "Laptop GPU" or "with Max-Q Design"). There are a few laptops out there where you can disable hybrid graphics entirely in the UEFI, but the IGP is usually enabled by default in those machines. These are generally the highest-end gaming laptops that don't care about portability, such as those sporting RTX 4090/4080 Laptop GPU. If all else fails, the CPU model name will likely give you a hint too.

The reason for this detailed info is that rather than "suspecting", it would be great to detect a pattern. SPECIALLY because Optimus laptops and Device Lost have a great correlation (it's by design).

This is otherwise hard to ask because it can quickly & unintentionally devolve into a quite personal "it's your [system] fault".