Commit Graph

28167 Commits

Author SHA1 Message Date
Zephyron
9b7e7b26aa feat(renderer): add BCn unswizzle compute shader
Add block_linear_unswizzle_3d_bcn.comp compute shader for improved
BCn format support. The shader uses GLSL 460 and handles block-space
coordinate conversion for BCn compressed textures.

- Add block_linear_unswizzle_3d_bcn.comp shader
- Update host shaders CMakeLists to include new shader

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-10 03:09:56 -05:00
Zephyron
f95faaade5 feat(shader): integrate component type into texture pass optimization
Update texture descriptor comparison to include component_type, ensuring
textures with different component types are properly differentiated.

- Add ReadTextureComponentType helper function
- Include component_type in texture descriptor comparison
- Use component type when creating texture descriptors

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-10 03:09:56 -05:00
Zephyron
9fa9a8056f feat(video-core): add texture component type caching and serialization
Implement texture component type conversion and caching in shader
environments, with full serialization support for shader cache.

- Add ConvertSamplerComponentType using std::bitset for component tracking
- Implement ReadTextureComponentType for Graphics/Compute/File environments
- Add texture_component_types cache to all environment classes
- Update Serialize/Deserialize to include component types
- Cache component types alongside texture types for performance

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-10 03:09:56 -05:00
Zephyron
46de959188 feat(shader): add SamplerComponentType enum and infrastructure
Add SamplerComponentType enum to classify texture component types
(float, signed int, unsigned int, depth, stencil) and add
ReadTextureComponentType method to Environment interface.

- Add SamplerComponentType enum with constexpr helper functions
- Add component_type field to TextureDescriptor struct
- Add ReadTextureComponentType virtual method to Environment base class

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-10 03:09:56 -05:00
Zephyron
eb04a096de feat(spirv): implement texture component type handling in SPIR-V backend
Update SPIR-V backend to use component-specific sampled types for
textures, ensuring correct type conversions for integer and depth/stencil
textures.

- Add ComponentScalarType helper function
- Update ImageType to accept component-specific sampled types
- Add TextureColorResultType and TextureSampleResultToFloat helpers
- Update all texture sampling functions to handle component types
- Add output_s32 for signed integer outputs
- Add Flat decorations for integer inputs in fragment shaders
- Add NonWritable decoration for read-only storage buffers

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-10 03:09:49 -05:00
Collecting
decb26a766 Merge pull request 'fix(vulkan): Combine Lanczos-CRT Constants & Fix MP4 Mountain Jitter' (#132) from fix/jitter/mp4 into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/132
2026-02-10 08:58:41 +01:00
Zephyron
c116f001b5 fix(vulkan): revert query cache FlushBeginTFB order to fix menu freeze
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-10 17:42:15 +10:00
Zephyron
66ca68a52e perf(vulkan): use double viewport math only when scale < 1
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-10 17:19:50 +10:00
collecting
48fa6d0e03 fix(vulkan): MP4 Mountain Jitter 2026-02-10 02:03:57 -05:00
Collecting
b04f92eda8 Merge pull request 'fix(macOS): Compiler Issues' (#131) from fix/sigsegv into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/131
2026-02-09 03:19:26 +01:00
collecting
04f2ba8d86 fix(macOS): Compiler Issues 2026-02-08 21:18:18 -05:00
Collecting
00570d4174 Merge pull request 'fix: Race Condition w/ Shutdown Logic' (#130) from fix/sigsegv into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/130
2026-02-09 01:39:11 +01:00
collecting
13e8c06f44 fix: Race Condition w/ Shutdown Logic 2026-02-08 19:08:59 -05:00
Collecting
18a9a4fc94 Merge pull request 'fix/feat: Introduce CAS & Add Dynamic Slider Viewing for Toggled WAF's, and remove Android ASTC visibility on PC' (#129) from fix/feat/cas-sliders into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/129
2026-02-05 09:02:22 +01:00
collecting
37dd2fddc4 fix/feat: Introduce CAS & Add Dynamic Slider Viewing for Toggled WAF's, and remove Android ASTC visibility on PC 2026-02-05 02:57:28 -05:00
Collecting
29fcea0537 Merge pull request 'fix: Icon Blurriness & add Citron Logo' (#127) from fixup/icon-game-load into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/127
2026-02-05 04:01:15 +01:00
collecting
9443737034 fix: Icon Blurriness & add Citron Logo 2026-02-04 21:59:51 -05:00
Collecting
43326b89e7 Windows Header Ordering
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-02-05 02:53:16 +01:00
Collecting
bc3cd4c639 Fix MSVC & macOS compiler issues
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-02-05 02:25:38 +01:00
Collecting
717fc9e30f Merge pull request 'Fix Updater Logic & Remove version.txt requirement w/ refined SCM' (#126) from fix/updater into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/126
2026-02-05 01:58:31 +01:00
collecting
1aa1ec9ee9 Fix Updater Logic & Remove version.txt requirement w/ refined SCM 2026-02-04 19:54:52 -05:00
Collecting
a6c0c47e44 Merge pull request 'Fixup Saving/Profiling logic' (#125) from hotkey/fixups into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/125
2026-02-05 01:27:52 +01:00
collecting
be0e131113 Fixup Saving/Profiling logic 2026-02-04 19:26:27 -05:00
Collecting
0b661b08d3 Merge pull request 'Fix Hotkey Saving Logic' (#124) from hotkey/fix into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/124
2026-02-04 19:51:57 +01:00
collecting
23e7ea382a Fix Hotkey Saving Logic 2026-02-04 13:50:01 -05:00
Collecting
53fe0174b0 No wonder why I use Linux and not Windows
Windows is insanely brutal

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-02-04 17:33:12 +01:00
Collecting
4a731f2089 More Unused Variables needing to be removed
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-02-04 16:53:43 +01:00
Collecting
dc4153cb70 Remove Unused Variable
MSVC likes to complain a lot but also my bad, forgot that I removed from all the other stuff. This should be last commit spam.

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-02-04 16:28:08 +01:00
Collecting
280c75bef0 Add missing voids
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-02-04 15:57:50 +01:00
Collecting
9e5c7433e1 Merge pull request 'MSVC Compiler Warnings' (#123) from compiler/warnings into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/123
2026-02-04 15:40:22 +01:00
collecting
d919f1da3b MSVC Compiler Warnings 2026-02-04 09:38:36 -05:00
Collecting
2d4da984cf Merge pull request 'Fix Compiler Issues Multiplatform' (#122) from compiler/fix into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/122
2026-02-04 14:56:21 +01:00
collecting
105aa1dcb4 Fix Compiler Issues Multiplatform 2026-02-04 08:55:36 -05:00
Collecting
6e2e515612 Merge pull request 'feat(hotkeys): Introduce Hotkey_Profile_Manager' (#121) from hotkey-profile-manager into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/121
2026-02-04 14:30:55 +01:00
collecting
c5ec4bd7f9 feat(hotkeys): Introduce Hotkey_Profile_Manager 2026-02-04 08:29:10 -05:00
Collecting
113b76e669 Merge pull request 'Hotfix: QLaunch Technical Overhaul & Various Misc. Bugfixes' (#120) from hotfix/qlaunch/etc into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/120
2026-02-04 12:49:26 +01:00
collecting
75dfdce858 Add more missing services 2026-02-04 06:37:06 -05:00
collecting
d18df2919b Remove Redundant yuzu_meta testing 2026-02-04 03:29:10 -05:00
Zephyron
4d80cbba7f feat(renderer): add extended resolution scale options
- Add 1.25X (900p/1350p) and 1.75X (1260p/1890p) resolution scales

- Fix Android resolution array value mappings (was incorrectly mapped)

- Add all resolution options (0.25X to 8X) to Android settings

- Mark experimental resolutions with [EXPERIMENTAL] tag

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-04 17:48:34 +10:00
collecting
c5eef10697 Core and UI: Implement missing service functions and QLaunch improvements 2026-02-03 15:42:35 -05:00
Zephyron
c788400b7c Merge pull request 'feature/android-astc-crt-settings' (#119) from feature/android-astc-crt-settings into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/119
2026-02-03 09:44:37 +01:00
Zephyron
127d339de9 feat(android): add ASTC mode and CRT shader settings to Zep Zone
ASTC Settings:
- Add ANDROID_ASTC_MODE enum to IntSetting.kt
- Add setting to Zep Zone panel in SettingsFragmentPresenter.kt
- Add string resources for Auto/Native/Decompress options
- Add arrays for option names and values

CRT Shader Settings:
- Add 6 CRT float settings to FloatSetting.kt (scanline_strength, curvature, gamma, bloom, brightness, alpha)
- Add CRT_MASK_TYPE int setting for mask type selection
- Add scale factor support to SliderSetting.kt for float-to-percentage conversion
- Add conditional visibility for CRT settings (only shown when CRT filter is enabled)
- Add string resources and arrays for all CRT settings

The CRT settings section only appears in Zep Zone when the scaling filter is
set to CRTEasyMode or CRTRoyale.

Co-Authored-By: FDT <fdt@citron-emu.org>
2026-02-03 18:41:22 +10:00
Zephyron
82fd6778ab feat(video_core): add native ASTC texture cache optimization for Adreno 740+
- Add AndroidAstcMode enum to settings_enums.h (Auto/Native/Decompress)
- Add android_astc_mode setting to settings.h
- Add Adreno 7xx+ GPU detection in vulkan_device (IsAdrenoGpu, IsAdreno7xxOrNewer, SupportsNativeAstc)
- Add compressed_size_bytes field to ImageBase for accurate ASTC VRAM tracking
- Add use_compressed_eviction flag to texture cache for Android-optimized eviction
- Increase VRAM budget to 90% for Android devices with native ASTC support
- Add SupportsNativeAstc() to Vulkan and OpenGL texture cache runtimes

This improves performance on high-end Android devices by allowing more ASTC
textures to be cached when using compressed size for eviction calculations.

Co-Authored-By: FDT <fdt@citron-emu.org>
2026-02-03 18:40:18 +10:00
Zephyron
544456b8be fix(android): Correct GC Aggressiveness description to match actual options
Updated description to accurately describe Off and Light options instead
of implying multiple "higher levels" that don't exist.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-01 14:18:26 +10:00
Zephyron
c3a90a1f59 fix(ui): Correct GC Aggressiveness tooltip to match actual options
The tooltip described 5 levels (Off, Light, Moderate, Heavy, Extreme)
but only Off and Light are implemented in the enum.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-01 14:16:37 +10:00
Zephyron
6a9c5f39e4 fix(ui): Add SVG support and fallback icons for Surprise Me button
Added Qt6::Svg to CMake configuration and implemented fallback
icon chain.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-01 14:13:51 +10:00
Zephyron
5c5baf69e2 chore(version): bump to 2026.02.1
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-02-01 12:09:56 +10:00
Collecting
97ebddea66 fix(CLI): Defer the game boot for main event loop
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-02-01 00:30:25 +01:00
Collecting
ef22699020 Fix: Defer EmuThread start to fix shortcut launch hang
a race condition where the BootGame() function was called directly from the GMainWindow constructor. This would create and start the EmuThread before the main Qt application event loop (app.exec()) had begun. As a result, the LoadingScreen UI was not fully initialized and could not properly process the progress signals from the background emulation thread, causing the hang.

The fix defers the call to emu_thread->start() by wrapping it in a QTimer::singleShot(0, ...) with a lambda function. This places the start command on the Qt event queue, ensuring it only executes after the GMainWindow has been fully constructed and the event loop is active. This guarantees the UI is ready to receive signals, resolving the race condition.

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-31 22:39:59 +01:00
Zephyron
22a458a53c fix(am): Fix library applet controller freeze
- Cache focus state result to prevent race condition from double-call
- Signal caller applet resume notification on PopOutData

Fixes freezes in games using controller applet (e.g. Mario Kart 8 Deluxe).

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-31 18:35:56 +10:00