- Deleted `DriverResolver`
- Moved and streamlined driver path extraction logic into `CustomSettingsHandler`.
- Improved string resource usage and ensured consistent formatting across dialogs.
* Introduced Toast messages across `CustomSettingsHandler`, `DriverResolver`, and `EmulationFragment` to improve user interaction and feedback for key operations.
* Enhanced error handling and confirmation dialogs, including options to launch with default settings when custom settings fail.
* Moved custom settings logic from `onCreate` to `handleEmuReadyIntent` for better readability.
* Added `showLaunchConfirmationDialog` to confirm game launch with or without custom settings.
* Updated `CustomSettingsHandler.findGameByTitleId` to show user feedback via `Toast`.
* Ensured improved separation of concerns and reusable methods.
* src/android/app/src/main/AndroidManifest.xml: Set targetApi to 33 and
enable onBackInvokedCallback to support the Android 13 predictive back gesture.
Also, add the tools namespace.
This commit introduces the ability to launch games with custom configurations supplied via an Android intent. This allows external applications to provide specific settings for a game at launch time.
Key changes include:
* **`CustomSettingsHandler.kt`**: A new class responsible for:
* Processing incoming intents with custom settings.
* Finding the target game in the user's library by its title ID.
* Writing the custom settings to a per-game INI file (`config/custom/<title_id>.ini`).
* Handling potential conflicts if a custom configuration already exists, prompting the user to overwrite or cancel.
* Integrating with `DriverResolver` to check for and handle required GPU drivers specified in the custom settings.
* Initializing the native per-game configuration.
* **`DriverResolver.kt`**: A new utility class for managing GPU drivers specified in custom settings:
* Extracts the driver path from the custom settings INI content.
* Checks if the required driver exists locally.
* If not found locally, searches for the driver in predefined GitHub repositories (Mr. Purple Turnip, GameHub Adreno 8xx, KIMCHI Turnip, Weab-Chan Freedreno).
* Prompts the user to download and install the missing driver if found online.
* Handles automatic download and installation of drivers using `DriverViewModel`.
* Notifies the user if a required driver cannot be found or installed.
* **`AndroidManifest.xml`**:
* Added a new intent filter for the action `dev.eden.eden_emulator.LAUNCH_WITH_CUSTOM_CONFIG` to `EmulationActivity`. This allows the app to respond to custom settings intents.
* **`EmulationFragment.kt`**:
* Modified `onCreate` to detect and handle the new custom settings intent.
* If a custom settings intent is received:
* It uses `CustomSettingsHandler.applyCustomSettingsWithDriverCheck` to process the settings asynchronously. This allows for driver checks and user interaction (e.g., overwrite confirmation, driver installation).
* Displays appropriate error messages via `Toast` if custom settings processing fails (e.g., game not found, driver issues).
* The game is then launched with the applied custom settings.
* If a regular file intent or navigation arguments are used, the existing logic for loading game configurations (including custom per-game configs) is retained.
* Ensures that per-game configurations are correctly loaded or unloaded based on how the game is launched.
This commit introduces extended support for low-precision integer casting (int8, int16) in the SPIR-V shader generation pipeline, improving compatibility and performance across both Android and PC platforms.
Co-authored-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-on: eden-emu/eden#86
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
It should improve line stipple accuracy and the depth stencilling as part of the ExtendedDynamicState improvements.
Co-authored-by: crueter <crueter@eden-emu.dev>
Signed-off-by: Aleksandr Popovich <popovich@eden-emu.dev>
Co-authored-by: crueter <crueter@crueter.xyz>
Reviewed-on: eden-emu/eden#59
Co-authored-by: Aleksandr Popovich <popovich@eden-emu.dev>
Co-committed-by: Aleksandr Popovich <popovich@eden-emu.dev>
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#88
This implements the use of VK_FILTER_CUBIC_EXT as a replacement for the software-based bicubic window adapting filter, used primarily for texture sampling in upscaled or downscaled surfaces such as UI, transparency effects, and screen-space elements in Unreal Engine 4 titles.
The Vulkan cubic filter is now conditionally enabled if the following are satisfied:
The device supports VK_EXT_filter_cubic
The format used supports VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
This change improves visual quality while reducing GPU workload by offloading cubic filtering to the driver instead of running custom sampling code in shaders. On supported hardware (e.g. desktop GPUs or high-end Adreno/AMD devices), it results in smoother transitions, improved transparency sampling, and better fidelity with lower shader complexity.
Fallback to the original software bicubic logic remains in place for devices lacking the extension or format capability.
Tested on several UE4 titles and confirmed to preserve or enhance visual output, especially in alpha-blended and UI-heavy scenes.
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
This fixes green screen on unsupported devices trying to use GPU decoding and improve compatibility with default builds of FFmpeg on all platforms.
Co-authored-by: MaranBr <maranbr@outlook.com>
Reviewed-on: eden-emu/eden#85
Co-authored-by: MaranBr <maranbr@eden-emu.dev>
Co-committed-by: MaranBr <maranbr@eden-emu.dev>
revert [android] Fix 0fps errors on DKCR, Subnautica, and Ori 2 (#79)
Co-authored-by: Pavel Barabanov <pavelbarabanov94@gmail.com>
Reviewed-on: eden-emu/eden#79
Option reverted due problems caused with another games and make some advances worst when testing, if necessary it's going to be refined to be converted into a toggle.
Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-authored-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-on: eden-emu/eden#82
This commit adds a working implementation of the `GetBufferHistory` transaction in `BufferQueueProducer`, removing the previous stub.
Adapted by Jarrod Norwell for Sudachi, this implementation references the behavior in Ryujinx; commit rescued by Maufeat and another Eden teammate from Sudachi's reference, fixed and adapted for Eden usage.
It helps improve compatibility with Unreal Engine 4 titles and others that depend on proper surface history tracking for rendering pipelines, especially with regard to lighting, bloom, and alpha transitions.
Functionality has been tested for stability and does not introduce regressions, though further validation is recommended.
Co-authored-by: Maufeat <maufeat@eden-emu.dev>
Co-committed-by: Maufeat <maufeat@eden-emu.dev>
Reviewed-on: eden-emu/eden#83
This commit introduces an implementation for `ZBCSetTable` in `nvhost_ctrl_gpu`, which is invoked by games and system services to configure default clear values for depth, stencil, and color attachments on the GPU, allowing better instructions on how the ZCull Block Compression expects to work within the emulated GPU.
This is an important step for compatibility with titles or system modules that expect ZBC configuration support.
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
* Introduced Toast messages across `CustomSettingsHandler`, `DriverResolver`, and `EmulationFragment` to improve user interaction and feedback for key operations.
* Enhanced error handling and confirmation dialogs, including options to launch with default settings when custom settings fail.
This fixes GPU decoding for the VP8 video codec on supported devices.
Co-authored-by: MaranBr <maranbr@outlook.com>
Reviewed-on: eden-emu/eden#72
Co-authored-by: MaranBr <maranbr@eden-emu.dev>
Co-committed-by: MaranBr <maranbr@eden-emu.dev>