Some changes

This commit is contained in:
Matías Locatti 2023-08-10 03:47:39 -03:00 committed by GitHub
parent 01ad4b401b
commit f7fa1f81eb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -12,10 +12,38 @@ Let's jump right in!
<!--more-->
# Aliens are real!
## Aliens and ghosts are real! And they run on Unreal Engine
Golden to add details of PIKMIN specific fixes and some american UFO propaganda /s.
The wait was long but worth it, another game in the charming Pikmin franchise is finally arriving on Earth, just in time to join the wave of UFO declarations!
{{< imgs
"./pk1.png| Imagine a cross-over with Toy Story, it would explain The Claw! (Pikmin 4)"
>}}
This time, `Pikmin 4` decided to use Unreal Engine 4, which guarantees good performance and quality on the Switch.
This engine also guarantees headaches implementing its particular interest in sparse textures and the stability problems it introduces to NVIDIA GPU users running Vulkan, as previous Unreal Engine 4 games have demonstrated.
As you can expect, theres a lot of work to do to improve compatibility on games running this particular popular engine.
[byte[]](https://github.com/liamwhite) took the first blow, by finding which part of the texture cache code caused a regression {{< gh-hovercard "11093" "affecting stability" >}} strong enough to cause device losses (the driver cutting off the GPU from rendering, resulting in an emulator crash) on NVIDIA GPUs.
{{< imgs
"./pk2.png| Moss seems tired (Pikmin 4)"
>}}
[emufan](https://github.com/GPUCode) followed up, he identified that hardcoding the total number of texture buffers to `16` was causing crashes in some Unreal Engine 4 games and {{< gh-hovercard "11098" "bumped up the count" >}} to `32`.
{{< single-title-imgs
"Good thing this game didn't cross paths with Pikmin (Master Detective Archives: RAIN CODE)"
"./rain1.png"
"./rain2.png"
>}}
This not only has helped `Pikmin 4 but also `Master Detective Archives: RAIN CODE`, another recent release using this same engine.
{{< imgs
"./rain3.png| Yeah, good name for a train, I'll board it in Dracula Station (Master Detective Archives: RAIN CODE)"
>}}
# Per-game configurations - Reimagined!
@ -34,61 +62,134 @@ The existing system's design made it difficult to programmatically define and ov
toast decided to take the challenge head-on and {{< gh-hovercard "10839" "rewrote the entire settings backend" >}} to improve it while making it programmatically easier to define and implement any setting.
Thanks to these changes, developers now only need to write out the UI text for a setting and the system will do the rest (reading, writing, representing in the UI, resetting global state).
Note: These changes are currently for developers only with no end-user impact, but do keep your eyes open for follow-up changes that will build on top of this foundation.
This also had the benefit of providing the perfect timeframe to rework several parts of the global settings UI!
For example, System settings now includes `Multicore CPU Emulation` support, all three possible values for `Memory Layout`, and `Limit Speed Percent`.
{{< single-title-imgs-compare
"Important changes to System settings"
"./systembug.png"
"./systemfix.png"
>}}
&nbsp;
The Graphics section also got its fair share of changes.
Besides reorganizing the different options, the new `ASTC Decoding Method` option now lists our 3 different alternatives for handling that pesky ASTC format, CPU, GPU, and asynchronous CPU decoding.
{{< single-title-imgs-compare
"Graphics settings also got some love"
"./gpubug.png"
"./gpufix.png"
>}}
And more!
But enough of the global settings, toast also changed how per-game configurations are also updated, they will now show an X button on the right of each setting if they were modified over the global value, allowing to quickly revert them if needed.
{{< single-title-imgs-compare
"Graphics settings also got some love"
"./custombug.png"
"./customfix.png"
>}}
Keep your eyes open for follow-up changes that will build on top of this foundation!
# Graphics Changes
It's July and We have another new AMD GPU driver with yet another extension broken.
If you recall from our June progress report, we reported that latest AMD drivers had broken a Vulkan extension - `extendedDynamicState3ColorBlendEquation`, and we had to temporarily disable usage of this extension on AMD driver version `23.5.2` and above.
Fast-forward to July, and it's still broken, kind of.
Giving credit where due, AMD ***did*** fix this issue with driver version `23.7.2` but only for `RDNA1` and newer devices, with at least `GCN4`, also known as `Polaris`, confirmed to be still broken.
In light of this, and the fact that the fixed driver still reports the same Vulkan version, we {{< gh-hovercard "11182" "reverted" >}} {{< gh-hovercard "11163" "our revert" >}} of {{< gh-hovercard "10946" "our original change from June" >}} and have {{<gh-hovercard "11204" "currently disabled usage of this extension on all AMD drivers," >}} until AMD fixes this.
[Maide](https://github.com/Kelebek1) continued his efforts on improving performance through optimizations and {{< gh-hovercard "10996" "his latest changes further optimize" >}} one of his {{< gh-hovercard "10457" "earlier optimizations." >}}
While the original changes aimed to reduce guest memory (Switch) allocations while copying data from guest to host (User's PC), the latest changes remove data copying entirely thereby resulting in nearly 10% performance boost in parts of `Super Mario Odyssey` like the Metro Kingdom area, and `Xenoblade Chronicles: Definitive Edition` reporting similar gains.
[emufan](https://github.com/GPUCode) identified that hardcoding the total number of texture buffers to `16` was causing crashes in some games and {{< gh-hovercard "11098" "bumped up the count" >}} to `32`.
[byte[]'s](https://github.com/liamwhite) {{< gh-hovercard "11136" "latest fix" >}} significantly improves the slowest shader compilation in "Splatoon 3" with time taken reduced from `30 seconds` to about `4 seconds`.
[byte[]'s](https://github.com/liamwhite) {{< gh-hovercard "11136" "latest fix" >}} significantly improves the slowest shader compilation in `Splatoon 3` with time taken reduced from `30 seconds` to about `4 seconds`.
A {{< gh-hovercard "10583" "recent change to our texture cache's `AccelerateDMA` logic" >}} was identified to have been causing device losses and {{< gh-hovercard "10993" "has been since been reverted." >}}
# Input Changes
[Narr](https://github.com/german77) continued his reverse engineering of the Switch NFC service and {{< gh-hovercard "11096" "improved yuzu's code accuracy" >}}.
[German77](https://github.com/german77) continued his reverse engineering of the Switch NFC service and {{< gh-hovercard "11096" "improved yuzu's code accuracy" >}}.
He also fixed a bug which caused users' mouse to stop working after some time, by avoiding an accidental division by zero.
[SuperSamus's](https://github.com/SuperSamus) first contribution to yuzu was to {{< gh-hovercard "11050" "fix how button mapping was being handled within yuzu." >}}
With these changes, it's now possible to share the same mappings between Nintendo and non-Nintendo controllers.
Newcomer [SuperSamus's](https://github.com/SuperSamus) first contribution to yuzu was to {{< gh-hovercard "11050" "fix how button mapping was being handled within yuzu." >}}
With these changes, it's now possible to share the same mappings between Nintendo and non-Nintendo controllers. Thank you!
Note: This change **BREAKS** controller configurations for those using Nintendo controllers without the direct driver.
# Android Changes
- [bunnei](https://github.com/bunnei/) implemented changes to {{< gh-hovercard "11017" "fix an issue where Turnip drivers would fail" >}} on certain devices with Snapdragon 870 and added checks for broken Qualcomm 7xx drivers.
- [t895](https://github.com/t895) {{< gh-hovercard "11067" "disabled yuzu from asking to save user data on uninstall," >}} which could cause issues when users attempted to use different APK versions.
- t895 also {{< gh-hovercard "11070" "added some help text messages" >}} to inform users why certain buttons were disabled when games were running.
[bunnei](https://github.com/bunnei/) implemented changes to {{< gh-hovercard "11017" "fix an issue where Turnip drivers would fail" >}} on certain Snapdragon devices, and added checks for broken Qualcomm 7xx drivers.
This means any Snapdragon user should be able to run Turnip drivers now, links will be provided in the Hardware section later in this article.
[t895](https://github.com/t895) {{< gh-hovercard "11067" "disabled yuzu from asking to save user data on uninstall," >}} which could cause issues when users attempted to use different APK versions.
# Miscellaneous
t895 also {{< gh-hovercard "11070" "added some help text messages" >}} to inform users why certain buttons were disabled when games were running.
The most common case is Mali or Xclipse users trying to install custom drivers, a feature that is only available and possible to Adreno users, at least for now.
{{< imgs
"./mali.png| Abstract art generator (Hyrule Warriors: Age of Calamity)"
>}}
# Miscellaneous changes
Apart from the ones highlighted above, there have also been several smaller changes:
- [FearlessTobi](https://github.com/FearlessTobi) added {{< gh-hovercard "11047" "detection for compressed and sparse NCAs within yuzu's filesystem." >}} Instead of failing silently, yuzu will now log this info and abort the parsing.
- toast added a {{< gh-hovercard "11042" "new Linux build script which added the libraries required to enable `Wayland` support" >}} on our official releases.
- toast {{< gh-hovercard "11186" "fixed a potential memory leak with the new timezone binary," >}} which happened when games tried to ask for timezone information too many times. This was resolved by keeping track of the generated timezone binary instead of recreating it repeatedly.
- toast {{< gh-hovercard "11030" "bypassed a MSVC build crash on `Windows 10 1809 LTSC` with the new timezone binary changes," >}} by temporarily disabling this for MSVC until there is a solution from Microsoft. The actual reason for this is currently unknown.
- byte[] {{< gh-hovercard "11113" "fixed a bug that caused the `Quake` homebrew from failing to launch," >}} and {{< gh-hovercard "11135" "also fixed a bug that resulted `Splatoon 3` having an endless loading screen when LAN was enabled," >}} by implementing the missing service functions.
- byte[] also {{< gh-hovercard "11016" "fixed an issue within yuzu's filesystem" >}} which resulted in either corrupt save data or failing to save data.
- A bug resulting in games like `TLoZ: Breath of the Wild` and `TLoZ: Tears of the Kingdom` to crash on Linux, due to `DBus` expecting a `UTF8` string was {{< gh-hovercard "11007" "fixed." >}}
- [Morph](https://github.com/Morph1984) {{< gh-hovercard "10999" "fixed a bug that broke the game installation progress bar" >}} after the recent buffer size increase, by refactoring the progress bar calculation code.
- Morph also {{< gh-hovercard "11173" "fixed a bug where yuzu would crash on systems with weaker CPUs" >}}, due to yuzu's strict requirements on CPU clock.
- Narr reduced almost 2GB of memory usage, by {{< gh-hovercard "11128" "fixing a memory leak within yuzu's discord game presence" >}} presumed to be caused by `cpp-httplib`.
- Narr also {{< gh-hovercard "11142" "fixed a crash in yuzu's gamelist" >}} which happened when you loaded yuzu without keys.
- [Steveice10](https://github.com/Steveice10) made {{< gh-hovercard "10974" "few improvements to Vulkan surface creation on macOS," >}} while [comex](https://github.com/comex) made {{< gh-hovercard "10990" "few fixes and workarounds for macOS to resolve few undefined behaviour errors." >}}
[FearlessTobi](https://github.com/FearlessTobi) added {{< gh-hovercard "11047" "detection for compressed and sparse NCAs within yuzu's filesystem." >}} Instead of failing silently, yuzu will now log this info and abort the parsing.
toast added a {{< gh-hovercard "11042" "new Linux build script which added the libraries required to enable `Wayland` support" >}} on our official AppImage releases.
Not ending there, toast {{< gh-hovercard "11186" "fixed a potential memory leak with the new timezone binary," >}} which happened when games tried to ask for timezone information too many times.
This was resolved by keeping track of the generated timezone binary instead of recreating it repeatedly.
And toast also {{< gh-hovercard "11030" "bypassed a MSVC build crash on `Windows version 10 1809 LTSC` with the new timezone binary changes," >}} by temporarily disabling this for MSVC until there is a solution from Microsoft.
The actual reason for this crash on older Windows 10 builds is currently unknown.
byte[] {{< gh-hovercard "11113" "fixed a bug that caused the `Quake` homebrew from failing to launch," >}} and {{< gh-hovercard "11135" "also fixed a bug that resulted `Splatoon 3` having an endless loading screen when LAN was enabled," >}} by implementing the missing service functions.
byte[] also {{< gh-hovercard "11016" "fixed an issue within yuzu's filesystem" >}} which resulted in either corrupt save data or failing to save data.
A bug resulting in games like `TLoZ: Breath of the Wild` and `TLoZ: Tears of the Kingdom` to crash on Linux, due to `DBus` expecting a `UTF8` string was {{< gh-hovercard "11007" "fixed." >}}
Thanks [zeltermann](https://github.com/zeltermann)!
[Morph](https://github.com/Morph1984) {{< gh-hovercard "10999" "fixed a bug that broke the game installation progress bar" >}} after the recent buffer size increase, by refactoring the progress bar calculation code.
Morph also {{< gh-hovercard "11173" "fixed a bug where yuzu would crash on systems with weak CPUs running very low clock speeds" >}}, due to yuzu's strict requirements on CPU clock precision.
German77 reduced almost 2GB of memory usage, by {{< gh-hovercard "11128" "fixing a memory leak within yuzu's discord game presence" >}} presumed to be caused by `cpp-httplib`.
German77 also {{< gh-hovercard "11142" "fixed a crash in yuzu's gamelist" >}} which happened when you loaded yuzu without keys.
Newcomer [Steveice10](https://github.com/Steveice10) made {{< gh-hovercard "10974" "few improvements to Vulkan surface creation on macOS," >}} While [comex](https://github.com/comex) made {{< gh-hovercard "10990" "few fixes and workarounds for macOS to resolve few undefined behaviour errors." >}} Thanks to you two!
This doesn't mean full MoltenVK support yet, but the gap is now smaller.
## Hardware section
### NVIDIA
The currently latest driver released at the time of writing, 536.99, is stable and also seems to have improved Vulkan performance a small but measurable notch, between 3% and 7%.
Free performance is free performance.
### AMD
It's July and we have another new AMD GPU driver with yet another extension causing issues.
If you recall from our [June progress report](https://yuzu-emu.org/entry/yuzu-progress-report-jun-2023/#amd), we reported that latest AMD drivers had broken a Vulkan feature - `extendedDynamicState3ColorBlendEquation`, and we had to temporarily disable usage of it on AMD driver version `23.5.2` and above.
Fast-forward to July, and it's still broken, for some.
Giving credit where due, AMD ***did*** fix this issue with driver version `23.7.2` but only for `RDNA2` GPUs (RX 6000 series), with `GCN4`, also known as `Polaris` (RX 400 and 500 series), confirmed to still be broken.
In light of this, and the fact that the fixed driver still reports the same Vulkan version, we {{< gh-hovercard "11182" "reverted" >}} {{< gh-hovercard "11163" "our revert" >}} of {{< gh-hovercard "10946" "our original change from June" >}} and have {{<gh-hovercard "11204" "currently disabled usage of this extension on all AMD official drivers," >}} until this is fixed.
### Turnip
Mesa never slows down its progress, and [K11MCH1's](https://github.com/K11MCH1) AdrenoTools releases are a true blessing from the fairies.
For A600 users (Snapdragon ### series), [progress is steady](https://github.com/K11MCH1/AdrenoToolsDrivers/releases/tag/vk.1.3.261-A6XX).
But the [best news](https://github.com/K11MCH1/AdrenoToolsDrivers/releases/tag/v23.3.0-dev) are for A700 users (Snapdragon # Gen # series), which now see much improved rendering and performance on the Mesa Turnip drivers.
Some games still require the proprietary Adreno driver to be more stable or faster, but at this rate of progress, well most likely see this change soon!
## Future projects
Behind the counter, there has been great progress in some key projects.
The last missing piece of `Project Y.F.C.` the `Query Cache Rewrite` was released, but we'll talk about it next time. We're sure Xenoblade and Luigi's Mansion fans will love it
byte[] continues to improve the current file system emulation, maybe some particular games would start working soon?
And Maide has some interesting ideas to implement in the shader cache code.
That's all folks! Thank you for staying with us until the end. See ya next time!
&nbsp;
{{< article-end >}}