Commit Graph

27943 Commits

Author SHA1 Message Date
Collecting
b15302cf24 fix(renderer): TAA graphical artifacts and pixel noise on AMD hardware
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-08 03:10:29 +00:00
Collecting
051bf4b6b8 Merge pull request 'fix(ui): FPS counters flickering and reporting half framerates using Performance Overlay' (#87) from fix/perf-overlay into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/87
2026-01-08 01:55:44 +00:00
Collecting
b13142701a fix(ui): FPS counters flickering and reporting half framerates using Performance Overlay
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-08 01:54:33 +00:00
Collecting
eeace7162c fix(ui): FPS counters flickering and reporting half framerates using Performance Overlay
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-08 01:50:37 +00:00
Collecting
4d742d7ce6 fix(ui): FPS counters flickering and reporting half framerates using Performance Overlay
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-08 01:48:52 +00:00
Zephyron
dc4f279098 revert c71cd53d0d
revert fix(shader): Fix integer texture format mismatch in SPIR-V

- Add is_integer field to TextureDescriptor and TextureDefinition
- Use IsTexturePixelFormatInteger to detect integer textures
- Update ImageType to use U32[1] for integer textures, F32[1] for float
- Merge is_integer flag when combining texture descriptors

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-08 00:27:18 +00:00
Collecting
ba31c6068e Merge pull request 'fix(gamescope): Rearchitecture Tabs & Overlays for Gamescope' (#86) from fix/deck-gamescope into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/86
2026-01-05 11:48:15 +00:00
Collecting
2fc9ab97be fix(gamescope): MSVC Compilation Error
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 11:08:25 +00:00
Collecting
136e04de5b fix(gamescope): Add Boolean for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:36:34 +00:00
Collecting
b5a472ced1 fix(gamescope): Add Boolean for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:36:08 +00:00
Collecting
1d80ba5da1 fix(gamescope): Fix VRAM Monitor for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:35:15 +00:00
Collecting
4f9017258a fix(gamescope): Fix VRAM Monitor for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:34:33 +00:00
Collecting
2d6669ade2 fix(gamescope): Fix Perf Overlay for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:34:02 +00:00
Collecting
847c648dfe fix(gamescope): Fix Perf Overlay for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:33:16 +00:00
Collecting
1c7ca1d5ef fix(gamescope): Fix MP Overlay for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:32:36 +00:00
Collecting
4b5fbfd5c6 fix(gamescope): Fix MP Overlay for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:31:53 +00:00
Collecting
6046f2c913 fix(gamescope): Restructure Update Dialog for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:31:13 +00:00
Collecting
9185b5ed5b fix(gamescope): Restructure Update Dialog for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:30:47 +00:00
Collecting
88c8b4cdbb fix(gamescope): Restructure Multiplayer Dialogs for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:30:07 +00:00
Collecting
9c49ec0e97 fix(gamescope): Restructure Multiplayer Dialogs for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:29:41 +00:00
Collecting
28000c203d fix(gamescope): Restructure Multiplayer Dialogs for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:28:56 +00:00
Collecting
b48d726a11 fix(gamescope): Add Gamescope Logic
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:27:55 +00:00
Collecting
21a19e79e7 fix(gamescope): Restructure Controller Overlay for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:26:33 +00:00
Collecting
3ed38c872f fix(gamescope): Restructure Controller Overlay for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:26:02 +00:00
Collecting
85e24df186 fix(gamescope): Restructure Configure Dialog UI for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:25:05 +00:00
Collecting
7b3ad22711 fix(gamescope): Restructure Configure Dialog UI for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:09:18 +00:00
Collecting
d3f2ce7e7f fix(gamescope): Restructure About Dialog UI for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:08:34 +00:00
Collecting
0f6049c888 fix(gamescope): Restructure About Dialog UI for Gamescope
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-05 10:08:02 +00:00
Zephyron
f5b9abc77c Merge pull request 'audio_core: Add Audio Renderer REV12 and REV13 support' (#85) from feature/audio-renderer-rev12-rev13 into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/85
2026-01-03 05:35:02 +00:00
Zephyron
ee95621b47 Merge pull request 'fix(hotkey): unlock framerate hotkey during gameplay' (#84) from fix/ctrl+u into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/84
2026-01-03 05:24:44 +00:00
Collecting
11711f92d9 fix(hotkey): unlock framerate hotkey during gameplay
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-03 05:21:08 +00:00
Collecting
0fffc5ced8 fix(hotkey): unlock framerate hotkey during gameplay
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-03 05:20:01 +00:00
Collecting
23eb437f5a fix(hotkey): unlock framerate hotkey during gameplay
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-03 05:19:13 +00:00
Zephyron
f1dce2578e audio_core: Add Audio Renderer REV12 and REV13 support
Implements support for Audio Renderer revisions 12 and 13, adding:
- REV12: Splitter biquad filter support with fixed-point coefficients
- REV13: Explicit splitter previous volume reset and compressor statistics

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-03 15:14:44 +10:00
Collecting
d8c343d5ec Merge pull request 'fix(fs): race condition in save mirroring during config changes' (#83) from fix/mirroring into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/83
2026-01-03 04:39:43 +00:00
Collecting
3136d2b782 fix(fs): race condition in save mirroring during config changes
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-03 04:38:12 +00:00
Collecting
0b92148362 fix(fs): race condition in save mirroring during config changes
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-03 04:36:21 +00:00
Collecting
8d881b6822 fix(fs): race condition in save mirroring during config changes
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-03 04:32:44 +00:00
Zephyron
2c398023ea chore: update Vulkan submodules
- Vulkan-Headers: 80207f9da -> 450bd2232
- Vulkan-Utility-Libraries: 524f8910d -> 9a3f4105c
- VulkanMemoryAllocator: 2f382df21 -> e722e57c8

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-02 17:34:19 +10:00
Collecting
f6b8535bef fix(fs): prevent stack exhaustion in save mirroring recursion
- Moved the copy buffer to the heap via std::make_unique.

- Added explicit null-safety and system shutdown checks to mirroring logic.

- Hardened recursion guards during directory traversal to ensure stability.

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-01 21:44:31 +00:00
Zephyron
29e5a963ba revert 1274fcec3b
revert Merge pull request 'feature/texture-component-type-support' (#81) from feature/texture-component-type-support into main

Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/81
2026-01-01 21:33:19 +00:00
Zephyron
bf139d1e7f Merge pull request 'feat(renderer): add CRT shader filter with configurable effects' (#82) from feature/renderer/crt-shader into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/82
2026-01-01 08:23:31 +00:00
Zephyron
efef746299 feat(renderer): add CRT shader filter with configurable effects
Add CRT (Cathode Ray Tube) shader implementation as scaling filter
options (CRT EasyMode and CRT Royale) in the Window Adapting Filter
dropdown. Provides classic TV effects including scanlines, phosphor
masks, curvature distortion, gamma correction, bloom, brightness, and
alpha transparency.

- Add CRTEasyMode and CRTRoyale to ScalingFilter enum
- Implement vulkan_crt_easymode.frag shader with single-pass effects
- Integrate CRT filter into WindowAdaptPass rendering pipeline
- Add configurable CRT parameters to settings with user-friendly labels
- Add UI translations for desktop and Android platforms
- Support CRT push constants in present pipeline

The CRT filter appears alongside other scaling filters like FSR and
FSR 2.0. CRT parameter settings are only active when a CRT filter
is selected.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-01 18:18:05 +10:00
Zephyron
d8c1cad245 fix(service/nvnflinger): implement GetBufferHistory to prevent game hangs
Return empty buffer history list instead of stubbing to allow games to
proceed past loading screens.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-31 16:58:05 +10:00
Zephyron
1274fcec3b Merge pull request 'feature/texture-component-type-support' (#81) from feature/texture-component-type-support into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/81
2025-12-31 06:13:40 +00:00
Zephyron
aaa565203c feat(renderer): add BCn unswizzle shader and build improvements
- Add block_linear_unswizzle_3d_bcn.comp compute shader for BCn format support
- Update host shaders CMakeLists to include new shader

This adds a new compute shader for BCn format handling.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-31 16:12:36 +10:00
Zephyron
65daba6179 feat(shader): integrate component type into texture pass optimization
- Update texture descriptor comparison to include component_type
- Add ReadTextureComponentType helper in texture_pass.cpp
- Use component type when creating texture descriptors

This ensures texture descriptors are properly differentiated by component type.

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-31 16:10:48 +10:00
Zephyron
f09951331b feat(video-core): update shader environment to support texture component types
- Add ConvertSamplerComponentType conversion function
- Implement ReadTextureComponentType for Graphics/Compute/File environments
- Update Serialize/Deserialize to include texture_component_types
- Cache component types alongside texture types

This enables proper component type caching and serialization.

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-31 16:10:06 +10:00
Zephyron
a53408a758 feat(shader): implement texture component type handling in SPIR-V backend
- Add ComponentScalarType helper function
- Update ImageType to use component-specific sampled types
- Add TextureColorResultType and TextureSampleResultToFloat helpers
- Update all texture sampling functions to handle component types correctly
- Add proper type conversions for integer and stencil textures
- Add Flat decorations for integer inputs in fragment shaders
- Add NonWritable decoration for read-only storage buffers

This ensures textures are sampled with the correct component types,
improving accuracy for integer and depth/stencil textures.

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-31 16:09:26 +10:00
Zephyron
00421f4ace feat(shader): add SamplerComponentType enum and infrastructure
- Add SamplerComponentType enum to shader_info.h
- Add ReadTextureComponentType to Environment interface
- Add texture_component_types cache to shader environments
- Update texture descriptor to include component_type field

This is the foundation for proper texture component type handling.

Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-31 16:08:12 +10:00