Commit Graph

10677 Commits

Author SHA1 Message Date
jbm11208
dfcedb981c Move Shader JIT Multithreading to a Separate Branch 2025-11-30 18:47:08 +00:00
jbm11208
d222b0c458 Use fmt for string concat in glsl_fs_shader_gen.cpp 2025-11-30 18:47:08 +00:00
jbm11208
680b881e30 Remove allowing constant stage alpha & color sources to fix graphical issues 2025-11-30 18:47:08 +00:00
jbm11208
29f3bdbe73 Fix: Block Until Shader Compilation Completes to Prevent Glitches 2025-11-30 18:47:08 +00:00
jbm11208
11583ab182 remove debug output 2025-11-30 18:47:08 +00:00
jbm11208
1125e3fff8 Optimize shader generation: reduce string formatting and concatenation overhead in TEV stage emission 2025-11-30 18:47:08 +00:00
jbm11208
dfc026ddd8 fix opengl 2025-11-30 18:47:08 +00:00
jbm11208
bb20404835 Optimize texture state changes: avoid redundant texture and sampler binds in OpenGL rasterizer 2025-11-30 18:47:08 +00:00
jbm11208
5c35027f0d Reduce shader permutations: mask out fog, alpha test, blend, and logic op config fields when disabled 2025-11-30 18:47:08 +00:00
jbm11208
5ea21306f4 more optimizations 2025-11-30 18:47:08 +00:00
jbm11208
fa1389915f Optimize shader state changes: avoid redundant SetupBatch calls by tracking VS config hash 2025-11-30 18:47:08 +00:00
jbm11208
ed94588449 Implement parallel shader compilation and safe fallback for missing shaders 2025-11-30 18:47:08 +00:00
jbm11208
2779da323b Implement LRU-based shader cache eviction and size limit in JIT engine 2025-11-30 18:47:08 +00:00
jbm11208
3e5e981c93 Minimize Shader Cache Growth for Disabled Lighting 2025-11-30 18:47:08 +00:00
jbm11208
c383cb4ac1 More general optimizations 2025-11-30 18:47:08 +00:00
jbm11208
58d3743fc1 Fix clang-format in spv_fs_shader_gen.cpp 2025-11-30 18:47:08 +00:00
jbm11208
241b630262 Fix Graphical Glitches 2025-11-30 18:47:08 +00:00
jbm11208
671188ad6d Fix clang-format and compilation errors 2025-11-30 18:47:08 +00:00
jbm11208
0be1120576 Update licensing 2025-11-30 18:47:08 +00:00
jbm11208
54dbdc2d96 video_core/shader: Optimize fragment shader by skipping passthrough TEV stages
This change adds a fast-path optimization in the fragment shader generator to detect and skip TEV stages that simply pass through their input unchanged. This reduces shader complexity and improves performance for common rendering cases where TEV stages are configured as passthrough.

The optimization checks for:
- Replace operation for both color and alpha
- Previous buffer as source
- No color/alpha modifiers
- Unity multipliers

This is a safe optimization as it preserves exact PICA behavior while reducing unnecessary shader instructions.
2025-11-30 18:47:08 +00:00
OpenSauce04
e0b8e8440a cmake: Fixed AppImage build failure caused by upstream changes to linuxdeploy
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
Also improved error message when linuxdeploy run fails
2025-11-30 18:17:42 +00:00
OpenSauce04
4cc9792f66 configure_graphics.cpp: Corrected indentation
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2025-11-29 14:43:24 +00:00
OpenSauce04
4574b91561 Move VSync setting key from use_vsync_new to use_vsync
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
This resets the VSync setting for all existing user configurations. Note in changelog.
2025-11-29 14:38:32 +00:00
David Griswold
04b6c69083 Default VSync to false on Android
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-11-29 14:37:30 +00:00
OpenSauce04
375c8c1910 video_core: Fixed occasional launch crash on certain platforms due to unsafe SDL_Init
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2025-11-27 14:27:10 +00:00
OpenSauce
67f6735f02
qt: Add game launch stress test functionality behind new ENABLE_DEVELOPER_OPTIONS CMake option (#1442)
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
* qt: Implemented game launch stress test

* qt: Hide stress test behind ENABLE_DEVELOPER_OPTIONS CMake option
2025-10-21 16:29:15 +01:00
OpenSauce04
1f483e1d33 cmake: Fixed build issues on *nix introduced by Qt 6.10.0 2025-10-21 14:45:40 +00:00
OpenSauce04
068fec0d5f ci: Updated ARM64 and universal macOS runners to macOS 26 Tahoe
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2025-10-03 17:35:02 +00:00
David Griswold
f309d4881a android: Add Display Listener methods for smoother secondary display updates 2025-10-03 17:04:57 +00:00
OpenSauce04
80ba2058a9 externals: Updated fmt to 12.0.0
This fixes a build failure with Clang 21
2025-10-03 16:28:01 +01:00
huesos_96
3716f6b9b6
Android: Dual screen fixes for Handhelds that have 2 screens like Ayaneo Pocket DS (#1341)
* Prevent SecondaryDisplay from stealing focus

The SecondaryDisplay Activity was stealing focus from the main
Activity when it was launched.

Set the `FLAG_NOT_FOCUSABLE` and `FLAG_NOT_TOUCH_MODAL` window flags
to prevent the SecondaryDisplay from gaining focus.

* Implement touch controls for secondary display

This commit introduces touch input handling for the secondary display.

The following changes were made:
- Added `onSecondaryTouchEvent` and `onSecondaryTouchMoved` to `NativeLibrary.kt` and `native.cpp` to process touch events on the secondary display.
- Implemented `onTouchListener` in `SecondaryDisplay.kt` to capture touch events and forward them to the native layer.
- Handles `ACTION_DOWN`, `ACTION_POINTER_DOWN`, `ACTION_MOVE`, `ACTION_UP`, `ACTION_POINTER_UP`, and `ACTION_CANCEL` motion events.
- Tracks the active pointer to ensure correct touch event handling.

* Refactor display logic for multi-display support

This commit introduces a `DisplayHelper` class to centralize display-related logic, particularly for handling scenarios where the application might be launched on an external display.

Key changes:
- Added `DisplayHelper.kt` to manage internal and external display identification based on launch conditions.
- `MainActivity` and `EmulationActivity` now use `DisplayHelper.checkLaunchDisplay()` to determine the initial display.
- `SecondaryDisplay` now uses `DisplayHelper.getExternalDisplay()` to correctly identify the target display for the secondary presentation.
- `InputOverlay` now queries `DisplayHelper.isBottomOnPrimary()` to determine if touch input should be processed for the primary display based on the current screen layout.
- `SecondaryDisplay` now queries `DisplayHelper.isBottomOnSecondary()` to conditionally pass touch events to the native layer based on which screen (primary or secondary) is currently displaying the 3DS bottom screen.

These changes ensure that the application behaves correctly when launched on either the internal or an external display, and that touch input is routed appropriately based on the user's chosen screen layout for the dual screens.

* Removed primary-screen checks so the input overlay always forwards touch events, ensuring all touches reach the native handler even when multiple displays are active

* Remove DisplayHelper class and adjust external display logic

* Formatting adjustments

---------

Co-authored-by: DavidRGriswold <novachild@gmail.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-10-03 14:45:49 +01:00
OpenSauce04
3af2cd1227 ci: Update all macOS runners to macOS 15 Sequoia 2025-10-03 14:17:27 +01:00
lannoene
0be78e9550
Improve DLP and multiplayer compatability (#1375)
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
* Added NWM spectator mode (DLP now partially working), fixed debug assert, added applet utility cmd fallback

* Reverted AppletUtility command change

* Fixed inconsistent mac address

* Enabled DLP Child authorization

* Added the DLP module to recommended online modules

* Clean up

* Changed the returned number of words on GetProgramInfoFromCia to 7 insteead of 8, futher reverted AppletUtility function to match its original form
2025-09-20 19:59:54 +02:00
OpenSauce04
eb1197a65c cmake: Remove SYSTEM from target_link_libraries
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2025-09-16 16:05:38 +01:00
OpenSauce04
a674eb8367 vk_pipeline_cache: Fix directory creation failure if shaders/vulkan/ is missing
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2025-09-13 01:19:52 +01:00
OpenSauce04
118d124852 tools: Added Github cache purge script 2025-09-13 01:19:19 +01:00
OpenSauce04
34d46528eb Bump minimum Android version to Android 10
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2025-09-11 01:08:32 +01:00
OpenSauce04
72c924a456 android: Rename performance overlay setting keys, strings and enums for clarity
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2025-09-10 22:49:46 +01:00
OpenSauce04
f27490aeab android: Mark performance overlay toggle in settings as non-runtime-editable 2025-09-10 22:49:46 +01:00
OpenSauce04
ed451a72d9 android: Reimplemented performance overlay setting as a regular BooleanSetting 2025-09-10 22:49:46 +01:00
OpenSauce04
5c89977605 android: Removed hardcoded setting keys and default values for perf overlay 2025-09-10 22:49:46 +01:00
Briar
deda004227 renderer_opengl.cpp: Remove isPortrait check for second screen opacity 2025-09-10 18:43:44 +01:00
Briar
64f5277789 renderer_vulkan: Add second screen opacity support
& Update bottom screen opacity label in UI
2025-09-10 18:43:44 +01:00
marsia
5c5b1cdf45 android: Implement Hide All 3DS Images from Android setting
Co-Authored-By: Reg Tiangha <rtiangha@users.noreply.github.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-10 18:28:37 +01:00
marsia
750286ae97 android: Add second screen opacity option
Co-authored-by: Reg Tiangha <rtiangha@users.noreply.github.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-10 18:22:55 +01:00
Reg Tiangha
f35091eeb4 android: Implement Background Color settings UI
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-10 18:22:38 +01:00
OpenSauce04
8cd3bcc0e3 Updated compatibility list
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2025-09-05 22:13:02 +01:00
OpenSauce04
e200bcbcbc tools: Updated guidance regarding translation updates
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2025-09-05 21:56:02 +01:00
David Griswold
a2e6891f01 android: Re-fixed game termination bug (#1357)
* EmulationActivity and EmulationFragment clear only their own hooks

* EmulationLifecycleUtil: Rename `remove()` to `removeHook()`

* EmulationLifecycleUtil: Removed unused function `clear()`

* Corrected somewhat incorrect usage of the word "hook"

* Define `onShutdown` and `onPause` hook functions in constructors

* Formatting nitpicks

* Updated license header

* Re-added log messages for attempting to add duplicate hooks

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-05 21:36:01 +01:00
OpenSauce04
e0078b2407 Revert "Fix android termination bug (#1354)"
This reverts commit 70f9379eef.
2025-09-05 21:33:32 +01:00