mirror of
https://github.com/yuzu-emu/yuzu-emu.github.io.git
synced 2025-06-08 13:27:25 +00:00
Merge pull request #254 from Calinou/fix-typos
Fix typos found using `codespell -wi3 **/*.md`
This commit is contained in:
commit
992ecc36a7
|
@ -49,7 +49,7 @@ Upon further testing, we found that this turned out to be false for non-Nvidia d
|
||||||
|
|
||||||
The technical design goals for the Buffer Cache Rewrite were the same as our Texture Cache Rewrite.
|
The technical design goals for the Buffer Cache Rewrite were the same as our Texture Cache Rewrite.
|
||||||
|
|
||||||
- Cleaner code: No more virtual function calls or shared pointers, meaning easier maintenence in the future.
|
- Cleaner code: No more virtual function calls or shared pointers, meaning easier maintenance in the future.
|
||||||
- Improved efficiency and improved performance.
|
- Improved efficiency and improved performance.
|
||||||
|
|
||||||
Resolving which buffer existed in which memory region was a very expensive operation in our old buffer cache implementation.
|
Resolving which buffer existed in which memory region was a very expensive operation in our old buffer cache implementation.
|
||||||
|
|
|
@ -16,7 +16,7 @@ Jump right in to find out more!
|
||||||
|
|
||||||
# NVDEC - What is it?
|
# NVDEC - What is it?
|
||||||
|
|
||||||
For a long time, one of the most noticable missing features of yuzu was support for NVDEC. <br>
|
For a long time, one of the most noticeable missing features of yuzu was support for NVDEC. <br>
|
||||||
What is [NVDEC](https://en.wikipedia.org/wiki/Nvidia_NVDEC)?
|
What is [NVDEC](https://en.wikipedia.org/wiki/Nvidia_NVDEC)?
|
||||||
NVDEC stands for **Nvidia Video Decoder** and is a feature in Nvidia GPUs that performs video decoding.
|
NVDEC stands for **Nvidia Video Decoder** and is a feature in Nvidia GPUs that performs video decoding.
|
||||||
And since the Switch has an Nvidia Tegra X1 SoC, it too makes use of its NVDEC module to offload all CPU intensive video decoding tasks to the GPU.
|
And since the Switch has an Nvidia Tegra X1 SoC, it too makes use of its NVDEC module to offload all CPU intensive video decoding tasks to the GPU.
|
||||||
|
@ -61,7 +61,7 @@ Frames usually refer to previously decoded frames, along with transformations to
|
||||||
This is done in an effort to reduce the memory footprint of each frame.
|
This is done in an effort to reduce the memory footprint of each frame.
|
||||||
|
|
||||||
Here is where things got complicated.
|
Here is where things got complicated.
|
||||||
On the Switch, these headers are parsed by the Nvidia library in the games; therefore, NVDEC never recieves this data.
|
On the Switch, these headers are parsed by the Nvidia library in the games; therefore, NVDEC never receives this data.
|
||||||
But for us to decode the frames using FFmpeg, we need to provide it with the full frame - Two headers and raw frame data from NVDEC.
|
But for us to decode the frames using FFmpeg, we need to provide it with the full frame - Two headers and raw frame data from NVDEC.
|
||||||
And since NVDEC hardware doesn't expose all of the data of the two `VP9` headers, [epicboy](https://github.com/ameerj) had to manually compose these headers from the provided information.
|
And since NVDEC hardware doesn't expose all of the data of the two `VP9` headers, [epicboy](https://github.com/ameerj) had to manually compose these headers from the provided information.
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ It turned out that [ogniK](https://github.com/ogniK5377) was using incorrect dim
|
||||||
|
|
||||||
Currently NVDEC operations are synchronous, but are asynchronous compatible.
|
Currently NVDEC operations are synchronous, but are asynchronous compatible.
|
||||||
This means that in the future, NVDEC operations can be made asynchronous thus yielding even better performance.
|
This means that in the future, NVDEC operations can be made asynchronous thus yielding even better performance.
|
||||||
Also, thanks to the FFmpeg library, we have access to hardware accelaration for faster decoding.
|
Also, thanks to the FFmpeg library, we have access to hardware acceleration for faster decoding.
|
||||||
And in the future, this will allow yuzu to offload video decoding to the host GPU (user's GPU).
|
And in the future, this will allow yuzu to offload video decoding to the host GPU (user's GPU).
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ This led to data corruption when we wrote frame data to wrong memory locations.
|
||||||
|
|
||||||
|
|
||||||
[epicboy](https://github.com/ameerj) and our testers spent tens of hours testing various games in yuzu to make sure any minor issues were ironed out.
|
[epicboy](https://github.com/ameerj) and our testers spent tens of hours testing various games in yuzu to make sure any minor issues were ironed out.
|
||||||
This rigourous testing also brought to our attention more games that exhibit weird edge cases.
|
This rigorous testing also brought to our attention more games that exhibit weird edge cases.
|
||||||
Over the next couple of weeks, we plan to fix these bugs and make our decoding even more accurate.
|
Over the next couple of weeks, we plan to fix these bugs and make our decoding even more accurate.
|
||||||
|
|
||||||
Huge shoutout to our testers for testing and compiling these lists.
|
Huge shoutout to our testers for testing and compiling these lists.
|
||||||
|
|
|
@ -272,7 +272,7 @@ This works well for `AudOut` games, but games that use `AudRen` could use variab
|
||||||
Because we were always playing all sounds at 48000Hz, even though it was working properly, the sounds would be audible but would often sound sped-up or with incorrect pitch.
|
Because we were always playing all sounds at 48000Hz, even though it was working properly, the sounds would be audible but would often sound sped-up or with incorrect pitch.
|
||||||
|
|
||||||
{{< single-title-imgs
|
{{< single-title-imgs
|
||||||
"One Piece Unlimted World"
|
"One Piece Unlimited World"
|
||||||
"./opuw.png"
|
"./opuw.png"
|
||||||
"./opuw_1.png"
|
"./opuw_1.png"
|
||||||
>}}
|
>}}
|
||||||
|
|
|
@ -30,7 +30,7 @@ For quite a while, Nvidia Turing users (GTX 16 series and RTX 20 series GPUs) ha
|
||||||
"./28.png"
|
"./28.png"
|
||||||
>}}
|
>}}
|
||||||
|
|
||||||
Speaking of shader decoding accuracy, [Rodrigo](https://github.com/ReinUsesLisp) improved the precision of the `HADD2` and `HMUL2` instructions, fixing some long standing bugs like the fog in `Fire Emblem: Three Houses` and the excessive brigthness in most maps in `Super Smash Bros. Ultimate`.
|
Speaking of shader decoding accuracy, [Rodrigo](https://github.com/ReinUsesLisp) improved the precision of the `HADD2` and `HMUL2` instructions, fixing some long standing bugs like the fog in `Fire Emblem: Three Houses` and the excessive brightness in most maps in `Super Smash Bros. Ultimate`.
|
||||||
|
|
||||||
{{< single-title-imgs
|
{{< single-title-imgs
|
||||||
"You can now take off your sunglasses (Super Smash Bros. Ultimate)"
|
"You can now take off your sunglasses (Super Smash Bros. Ultimate)"
|
||||||
|
|
|
@ -40,7 +40,7 @@ To begin with, [Rodrigo](https://github.com/ReinUsesLisp) implemented several fi
|
||||||
|
|
||||||
[bunnei](https://github.com/bunnei) brings the big guns. The complete [rewrite of the `GPU Virtual Memory Manager`](https://github.com/yuzu-emu/yuzu/pull/4430) fixes *several* bugs in many games, with the two strongest examples being `Mario Kart 8 Deluxe` and `Super Smash Bros. Ultimate`. Now several graphical bugs are fixed in Mario Kart 8, including tracks that show invisible terrain or missing graphics. In Smash's case, there are no more vertex explosions now.
|
[bunnei](https://github.com/bunnei) brings the big guns. The complete [rewrite of the `GPU Virtual Memory Manager`](https://github.com/yuzu-emu/yuzu/pull/4430) fixes *several* bugs in many games, with the two strongest examples being `Mario Kart 8 Deluxe` and `Super Smash Bros. Ultimate`. Now several graphical bugs are fixed in Mario Kart 8, including tracks that show invisible terrain or missing graphics. In Smash's case, there are no more vertex explosions now.
|
||||||
|
|
||||||
This rewrite also should reduce commited memory a bit, hopefully reducing the size of the required page file, and opens the possibility to implement new features in the future. We have to clarify that this doesn't fix the high VRAM usage in Vulkan.
|
This rewrite also should reduce committed memory a bit, hopefully reducing the size of the required page file, and opens the possibility to implement new features in the future. We have to clarify that this doesn't fix the high VRAM usage in Vulkan.
|
||||||
|
|
||||||
{{< single-title-imgs
|
{{< single-title-imgs
|
||||||
"That's not what I meant when I said Anti-Gravity! (Mario Kart 8 Deluxe)"
|
"That's not what I meant when I said Anti-Gravity! (Mario Kart 8 Deluxe)"
|
||||||
|
@ -122,7 +122,7 @@ Looking for the next meal, Morph took a bite at the saving issues of the Bioshoc
|
||||||
"./bioshock_saved.png"
|
"./bioshock_saved.png"
|
||||||
>}}
|
>}}
|
||||||
|
|
||||||
After this little treat, the Kirby embarked on an adventure to fix the last remaining issues with the VFS. After 3 days of debugging the Pokemon Sword and Shield RomFS weather bug, he discovered that these games contained a 0 byte file called `global_setting.bin` which caused the file right after it called `weather_data.bin` to be skipped entirely. And you may have guessed by now - this file contains all the data for weather and without it, no weather can be generated within the game! This eureka moment led to an extremely simple fix which [accomodates for 0 byte files during RomFS building](https://github.com/yuzu-emu/yuzu/pull/4309).
|
After this little treat, the Kirby embarked on an adventure to fix the last remaining issues with the VFS. After 3 days of debugging the Pokemon Sword and Shield RomFS weather bug, he discovered that these games contained a 0 byte file called `global_setting.bin` which caused the file right after it called `weather_data.bin` to be skipped entirely. And you may have guessed by now - this file contains all the data for weather and without it, no weather can be generated within the game! This eureka moment led to an extremely simple fix which [accommodates for 0 byte files during RomFS building](https://github.com/yuzu-emu/yuzu/pull/4309).
|
||||||
|
|
||||||
{{< single-title-imgs
|
{{< single-title-imgs
|
||||||
" Let it snow, let it snow, let it snow! (Pokemon Sword and Shield)"
|
" Let it snow, let it snow, let it snow! (Pokemon Sword and Shield)"
|
||||||
|
|
|
@ -121,7 +121,7 @@ Although objectively a small issue, the mouse cursor didn't hide when running yu
|
||||||
## An elegant feature of a more civilized age
|
## An elegant feature of a more civilized age
|
||||||
|
|
||||||
Recently released in the Early Access build, and coming soon to Mainline, is support for `assembly shaders` (`GLASM`), usually
|
Recently released in the Early Access build, and coming soon to Mainline, is support for `assembly shaders` (`GLASM`), usually
|
||||||
refered to as `ARB shaders`.
|
referred to as `ARB shaders`.
|
||||||
|
|
||||||
|
|
||||||
A couple decades ago, there was no common language for the then newly added programmable shading units in GPUs, so the `OpenGL Architecture Review Board` decided to create a proper standardised shading language they called `GLASM`. In broader terms, this is an assembly language used to communicate with the GPU. This makes it very difficult to work with, and the difficulty is only exacerbated by the limited set of debugging tools available. Furthermore, the language was developed with the hardware limitations of the time in mind.
|
A couple decades ago, there was no common language for the then newly added programmable shading units in GPUs, so the `OpenGL Architecture Review Board` decided to create a proper standardised shading language they called `GLASM`. In broader terms, this is an assembly language used to communicate with the GPU. This makes it very difficult to work with, and the difficulty is only exacerbated by the limited set of debugging tools available. Furthermore, the language was developed with the hardware limitations of the time in mind.
|
||||||
|
|
|
@ -88,7 +88,7 @@ An IR (intermediate representation) is a representation of the program "between"
|
||||||
|
|
||||||
In regards to Shader IR, [Blinkhawk](https://github.com/FernandoS27) rewrote how guest shaders are analysed in control flow (the code that tells how a shader diverges in execution) from the ground up.
|
In regards to Shader IR, [Blinkhawk](https://github.com/FernandoS27) rewrote how guest shaders are analysed in control flow (the code that tells how a shader diverges in execution) from the ground up.
|
||||||
He created a decompiler that removes stack based branches which result in under performant shaders in Intel and AMD, and created a more advanced decompiler that could convert all the branches in the shaders into higher level structures (ifs, loops, etc).
|
He created a decompiler that removes stack based branches which result in under performant shaders in Intel and AMD, and created a more advanced decompiler that could convert all the branches in the shaders into higher level structures (ifs, loops, etc).
|
||||||
He also corrected control flow in SPIR-V shaders and fixed some crashes that occured on AMD due to unoptimized control flow structures.
|
He also corrected control flow in SPIR-V shaders and fixed some crashes that occurred on AMD due to unoptimized control flow structures.
|
||||||
|
|
||||||
Simply put, he redid the whole system on which shader IR is based, after [Rodrigo](https://github.com/ReinUsesLisp) converted most of the instructions into IR and setup the foundation. <br>
|
Simply put, he redid the whole system on which shader IR is based, after [Rodrigo](https://github.com/ReinUsesLisp) converted most of the instructions into IR and setup the foundation. <br>
|
||||||
<p style="color:lawngreen;"><b><i>Kind of like reorganizing a messy closet, after segregating its contents.</i></b></p>
|
<p style="color:lawngreen;"><b><i>Kind of like reorganizing a messy closet, after segregating its contents.</i></b></p>
|
||||||
|
|
|
@ -40,6 +40,6 @@ identity.
|
||||||
Telemetry is an extremely useful developer tool, as they allow the developer to
|
Telemetry is an extremely useful developer tool, as they allow the developer to
|
||||||
be more aware of the users' needs and priorities accurately, rather than guessing.
|
be more aware of the users' needs and priorities accurately, rather than guessing.
|
||||||
But it is only as useful as the data obtained, which is why we urge users to not
|
But it is only as useful as the data obtained, which is why we urge users to not
|
||||||
opt-out, so the data can be as accurate and correct as possible. Just as innacurate
|
opt-out, so the data can be as accurate and correct as possible. Just as inaccurate
|
||||||
measurements can damage a device during calibration, innacurate statistical data
|
measurements can damage a device during calibration, inaccurate statistical data
|
||||||
will only cause damage to yuzu.
|
will only cause damage to yuzu.
|
||||||
|
|
|
@ -41,7 +41,7 @@ description: "A list of common error codes and how to resolve them."
|
||||||
| `0008-0009` | `ErrorBadPFSHeader` |
|
| `0008-0009` | `ErrorBadPFSHeader` |
|
||||||
| `0008-000A` | `ErrorIncorrectPFSFileSize` |
|
| `0008-000A` | `ErrorIncorrectPFSFileSize` |
|
||||||
| `0008-0013` | `ErrorInvalidRightsID` |
|
| `0008-0013` | `ErrorInvalidRightsID` |
|
||||||
| `0008-0017` | `ErrorXCIMissingProgramNCA` <br> In some rare cases, this has been known to appear with missing keys. Try rederiving your keys and if that dosen't work contact the devs. |
|
| `0008-0017` | `ErrorXCIMissingProgramNCA` <br> In some rare cases, this has been known to appear with missing keys. Try rederiving your keys and if that doesn't work contact the devs. |
|
||||||
| `0008-0019` | `ErrorNoExeFS` |
|
| `0008-0019` | `ErrorNoExeFS` |
|
||||||
| `0008-001A` | `ErrorBadXCIHeader` |
|
| `0008-001A` | `ErrorBadXCIHeader` |
|
||||||
| `0008-001B` | `ErrorXCIMissingPartition` <br> If you trimmed your XCI, it might have been done improperly. Try avoiding trimming. |
|
| `0008-001B` | `ErrorXCIMissingPartition` <br> If you trimmed your XCI, it might have been done improperly. Try avoiding trimming. |
|
||||||
|
|
Loading…
Reference in a new issue