Run Nintendo Switch homebrew & games on your Android device!
Go to file
Robin Kertels 0a3cf25823 Implement the Fermi 2D blitting engine
The Fermi 2D engine implements both image blit and resolve operations, supporting subpixel sampling with both linear and point filtering.

Resolve operations are performed by sampling from the center of each pixel in order to resolve the final image from the MSAA samples
MSAA images are stored in memory like regular images but each pixels dimensions are scaled: e.g for 2x2 MSAA
```
112233
112233
445566
445566
```
These would be sampled with both duDx and duDy as 2 (integer part), resolving to the following:
```
123
456
```
Blit operations are performed by sampling from the corner of each pixel, scaling the image as one would expect.

This implementation isn't fully complete as Vulkan blit doesn't support some combinations which Fermi does, most notably between colour and depth stencil. These will be implemented properly at a later date, likely after the texture manager rework.
Out of Bounds Blit, used by some OpenGL games is also missing since supporting it requires texture aliasing, this will also be supported after the texture manager rework.

Co-authored-by: Billy Laws <blaws05@gmail.com>
2022-05-13 22:37:37 +01:00
.github/workflows Update CI to use cache@v3 + ignore partial matches of cache key 2022-04-14 14:14:52 +05:30
.idea Add subpass limit quirk to fix Adreno driver bug 2022-04-14 14:14:52 +05:30
app Implement the Fermi 2D blitting engine 2022-05-13 22:37:37 +01:00
gradle/wrapper Update Kotlin, AGP, Gradle and Build Tools 2022-04-27 14:00:36 +05:30
.gitignore Add .trace files to .gitignore 2022-04-25 20:59:53 +05:30
.gitmodules Swap out boostorg/boost for skyline-emu/boost 2022-04-14 14:14:52 +05:30
build.gradle Update Kotlin, AGP, Gradle and Build Tools 2022-04-27 14:00:36 +05:30
BUILDING.md Create a BUILDING.md file with building instructions 2022-04-14 13:54:51 +05:30
CONTRIBUTING.md Add rules on semantic wrapping and bracketed initalisation to contrib 2021-11-10 21:35:36 +05:30
gradle.properties Upgrade Gradle (7.4), AGP (7.1.2) and Kotlin Dependencies 2022-04-14 14:14:52 +05:30
gradlew Redesign UI 2021-06-17 20:30:22 +05:30
gradlew.bat add files, cannot figure out why native lib is broken 2019-06-28 20:35:14 -04:00
LICENSE.md Move to MPL-2.0 2020-04-23 22:26:27 +05:30
README.md Update README.md 2022-04-14 13:54:51 +05:30
settings.gradle add files, cannot figure out why native lib is broken 2019-06-28 20:35:14 -04:00



Contributing GuideBuilding Guide

Skyline is an experimental emulator that runs on ARMv8 Android™ devices and emulates the functionality of a Nintendo Switch™ system, licensed under Mozilla Public License 2.0


Contact

You can contact the core developers of Skyline at our Discord. If you have any questions, feel free to ask. It's also a good place to just keep up with the emulator, as most talk regarding development goes on over there.


Special Thanks

A few noteworthy teams/projects who've helped us along the way are:

  • Ryujinx: We've used Ryujinx for reference throughout the project, the accuracy of their HLE implementations of Switch subsystems make it an amazing reference. The team behind the project has been extremely helpful with any queries we've had and have constantly helped us with any issues we've come across. It should be noted that Skyline is not based on Ryujinx.

  • yuzu: Skyline's shader compiler is a fork of yuzu's shader compiler with Skyline-specific changes, using it allowed us to focus on the parts of GPU emulation that we could specifically optimize for mobile while having a high-quality shader compiler implementation as a base. The team behind yuzu has also often helped us and have graciously provided us with a license exemption.

  • Switchbrew: We've extensively used Switchbrew whether that be their wiki with its colossal amount of information on the Switch that has saved us countless hours of time or libnx which was crucial to initial development of the emulator to ensure that our HLE kernel and sysmodule implementations were accurate.


Disclaimer

  • Nintendo Switch is a trademark of Nintendo Co., Ltd
  • Android is a trademark of Google LLC