Commit Graph

27240 Commits

Author SHA1 Message Date
Zephyron
cf1735aa10 Fix test job dependencies in GitLab CI
The test-unit job was failing due to missing Boost library dependencies.

Fixed by:
- Added required system packages: libboost-dev, libboost-context-dev,
  libboost-system-dev, libssl-dev, zlib1g-dev, pkg-config
- Enabled bundled vcpkg dependencies (-DCITRON_USE_BUNDLED_VCPKG=ON)
  to avoid system dependency version conflicts

This should resolve the CMake error:
'Could NOT find Boost (missing: Boost_INCLUDE_DIR context)'
2025-09-21 18:33:58 +10:00
Zephyron
14a68ee04b Fix script configuration format in GitLab CI jobs
Consolidated mixed script formats in upload-packages and package-linux jobs
into single multiline script blocks. GitLab CI requires script sections to be
either:
1. A single multiline string, OR
2. An array of strings (each starting with -)

Mixed formats (individual commands + multiline blocks) are not supported.

Fixed jobs:
- upload-packages: Consolidated all script commands into single multiline block
- package-linux: Consolidated all script commands into single multiline block
2025-09-21 17:09:35 +10:00
Zephyron
f9a922c439 Fix additional YAML syntax errors in .gitlab-ci.yml
Fixed improper indentation of echo and ls commands in:
- package-android job script section (lines 487-488)
- upload-packages job script section (lines 556-557)

All script commands now properly use dash (-) indentation as required
for GitLab CI script arrays.
2025-09-21 17:06:54 +10:00
Zephyron
550ae7b7ba Fix YAML syntax error in .gitlab-ci.yml
Fixed improper indentation of echo and ls commands in package-linux job
script section. Commands now properly use dash (-) indentation as required
for GitLab CI script arrays.
2025-09-21 17:05:25 +10:00
Zephyron
d0f96e9a30 Add automatic release system
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 17:03:22 +10:00
Zephyron
131f433638 Fix CMake MOC processing for updater files
Move updater files (updater_service.cpp, updater_service.h,
updater_dialog.cpp, updater_dialog.h, updater_dialog.ui) into
a WIN32 conditional block in CMakeLists.txt.

This prevents MOC from processing updater_service.h on non-Windows
platforms, resolving the class redefinition conflict between:
- The real QObject-derived UpdaterService class (Windows only)
- The stub UpdaterService class in updater_dialog.h (non-Windows)

The updater functionality is now properly restricted to Windows
platforms at the CMake build system level.
2025-09-21 16:16:15 +10:00
Zephyron
cefb781184 Fix UpdaterService class redefinition conflict
The MOC compiler was encountering two different definitions of UpdaterService:
1. A stub class in updater_dialog.h for non-Windows platforms
2. The real QObject-derived class in updater_service.h

Fixed by:
- Making updater_service.h include conditional in main.cpp (#ifdef _WIN32)
- Wrapping all UpdaterService usage in main.cpp with #ifdef _WIN32 blocks
- Adding clarifying comment to stub class in updater_dialog.h

This resolves the MOC compilation errors and ensures the updater
functionality is only available on Windows as intended.
2025-09-21 15:49:19 +10:00
Zephyron
bc1b49285a Fix compilation errors in Vulkan renderer
- Fix conversion warning in vk_zbc_clear.cpp by adding explicit static_cast<u8>
  to RGBA component extraction (same issue as OpenGL version)
- Remove unused renderpass_begin_info variable in present/taa.cpp to fix
  -Werror=unused-variable warning
2025-09-21 14:53:23 +10:00
Zephyron
e6fa8cd74b Fix conversion warning in gl_zbc_clear.cpp
Add explicit static_cast<u8> to RGBA component extraction to resolve
-Werror=conversion compiler error. The bit operations return unsigned int
but need to be assigned to u8 type.
2025-09-21 14:33:54 +10:00
Zephyron
b4de961315 Fix conversion warning in ZBCManager
- Add explicit static_cast to u8 for RGBA component extraction
- Resolves -Werror=conversion error in zbc_manager.cpp
2025-09-21 14:11:36 +10:00
Zephyron
5d9f4170af Fix GitLab CI cache key limit
- Remove .gitlab-ci.yml from cache key files (max 2 files allowed)
- Keep vcpkg.json and CMakeLists.txt as primary cache triggers
2025-09-21 13:51:49 +10:00
Zephyron
d31bcd3599 Improve GitLab CI caching for faster builds
- Add comprehensive cache strategy with job-specific keys
- Implement pacman/apt package caching to reduce download time
- Add Android SDK/NDK caching for mobile builds
- Enable ccache for C/C++ compilation caching
- Optimize cache keys based on dependency files
- Skip package updates when cache is recent
- Expected 50-80% faster subsequent builds
2025-09-21 13:50:51 +10:00
Zephyron
f01695e059 Fix UpdaterDialog::OnUpdateCompleted type conversion error
- Add complete UpdateResult enum definition to non-Windows forward declarations
- Unify method signatures to use proper enum type across all platforms
- Update stub implementations to use consistent enum type
- Resolves C2664 compilation error where MOC generated int instead of UpdateResult
2025-09-21 13:41:39 +10:00
Zephyron
8e63068ef0 Suppress conversion warnings in CI builds
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 13:30:49 +10:00
Zephyron
a15167cc51 fix: PipeWire build errors and optimize Linux CI builds
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 13:07:53 +10:00
Zephyron
5f0debd88f simplify: use clean CMake configurations for Release/SteamDeck/Compatibility builds
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 12:41:42 +10:00
Zephyron
dfd256a29f remove: AppImage generation to fix CI upload issues
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 12:14:37 +10:00
Zephyron
aab3b9eb39 fix: Remove unnecessary quotes from ls command and artifacts paths
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 12:09:42 +10:00
Zephyron
5ca96d9d73 fix: quote wildcard characters in CI YAML to fix parsing errors
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 12:01:13 +10:00
Zephyron
f800348d05 fix: resolve YAML syntax error with special characters in echo command
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 12:00:15 +10:00
Zephyron
8d6b53113d fix: split AppImage into chunks to bypass CI 413 error
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 11:58:54 +10:00
Zephyron
ce73fce35e ci: Remove max_size
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 11:47:04 +10:00
Zephyron
0c4fc23dcd fix: use gzip compression for CI artifacts to avoid size limit
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 11:45:41 +10:00
Zephyron
a76c3e8808 fix: resolve UpdaterService redefinition error with conditional compilation
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 11:33:26 +10:00
Zephyron
b585120025 fix: add UpdateResult enum to updater dialog forward declarations
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 11:11:30 +10:00
Zephyron
04132ac6b7 fix(ci): resolve submodule initialization failures in GitLab CI
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 11:02:20 +10:00
Zephyron
34f1e741a4 Merge branch 'mtune-fix' into 'main'
ci: fixed mtune

See merge request citron/emulator!13
2025-09-21 10:50:58 +10:00
Boss.sfc
e9d2d06f06 ci: fixed mtune
Signed-off-by: Boss.sfc <boss.sfc@citron-emu.org>
2025-09-21 07:47:23 +07:00
Zephyron
b3bbae83fc Merge branch 'boss-ci-fixes' into 'main'
ci: overhaul to the ci

See merge request citron/emulator!12
2025-09-21 10:39:55 +10:00
Boss.sfc
50f2e0472d ci: overhaul to the ci
- new build flags
- fixes compiling on linux
- fixes compiling on android
- changed ci from ubuntu to cachyos

Signed-off-by: Boss.sfc <boss.sfc@citron-emu.org>
2025-09-21 07:38:03 +07:00
Zephyron
1f4d6ccdc0 Merge branch 'taa-implementation' into 'main'
feat: add Temporal Anti-Aliasing (TAA) support for OpenGL and Vulkan

See merge request citron/emulator!11
2025-09-21 10:35:14 +10:00
Zephyron
19cf31b215 feat: add Temporal Anti-Aliasing (TAA) support for OpenGL and Vulkan
- Add TAA option to AntiAliasing enum in settings
- Implement TAA shaders for both OpenGL (GLSL) and Vulkan (SPIR-V)
- Add OpenGL TAA class with framebuffer management and temporal blending
- Add Vulkan TAA class following existing AntiAliasPass architecture
- Integrate TAA into OpenGL and Vulkan rendering pipelines
- Add UI translations and Android string resources for TAA option
- Implement Halton sequence jittering for temporal sampling
- Add motion vector validation and neighborhood clamping to reduce ghosting
- Configure aggressive temporal blending to minimize visual artifacts
- Add proper descriptor set management for Vulkan TAA implementation

The TAA implementation provides high-quality anti-aliasing by combining
information from multiple frames with per-pixel jittering, resulting
in smoother edges and reduced aliasing artifacts while maintaining
good performance and temporal stability.

Fixes: Black screen issues with proper descriptor set bindings
Fixes: Ghosting artifacts with improved temporal blending parameters
Fixes: Jitter visibility with reduced jitter intensity (50% scaling)
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-21 10:34:19 +10:00
Zephyron
42bc6b7b6c fix(android): Fix aspect ratio crash for non-16:9 settings
- Add missing Force 32:9 option and fix Stretch mapping
- Add safety checks to prevent division by zero in FixedRatioSurfaceView
- Update handlers to support all 6 AspectRatio enum values

Fixes crashes when selecting any aspect ratio other than Force 16:9.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-17 20:46:59 +10:00
Zephyron
da3f017c32 fix: resolve Qt MOC generation for conditionally compiled UpdaterDialog
Move UpdaterDialog class declaration outside #ifdef _WIN32 to ensure
Qt's MOC can see the Q_OBJECT macro. Add stub implementations for
non-Windows platforms to satisfy linker.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-17 20:27:22 +10:00
Zephyron
10c5e582fc ci: Fix GitLab CI YAML syntax errors for pipeline execution
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-16 15:32:13 +10:00
Zephyron
673341d7a6 ci: Initial impl
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-16 15:29:33 +10:00
Zephyron
28c5c74f54 Merge branch 'Boss-Boost-Fix' into 'main'
chore(core/debugger): modernize Boost.Process include path to v1

See merge request citron/emulator!6
2025-09-16 14:45:36 +10:00
Boss.sfc
056e6bf951 chore(core/debugger): modernize Boost.Process include path to v1
Signed-off-by: Boss.sfc <boss.sfc@citron-emu.org>
2025-09-15 21:59:01 +07:00
Zephyron
132caccc1a Merge branch 'Boss-Linux-Compilation-Fix' into 'main'
fix: Linux compiling

See merge request citron/emulator!5
2025-09-15 19:22:01 +10:00
Boss.sfc
a3c4f0614a fix: Linux compiling
Made it so that the updater stuff is windows only.

Signed-off-by: Boss.sfc <boss.sfc@citron-emu.org>
2025-09-14 18:46:18 +07:00
Zephyron
94119302ec feat: Add OpenGL ZBC clear support and refactor ZBC management
Moved ZBCManager to `video_core/zbc_manager.cpp/h` for modularity. Added
`gl_zbc_clear.cpp/h` for efficient OpenGL color, depth, and stencil clears.
Updated `RasterizerOpenGL::Clear` to use ZBC with fallback. Added stencil
type validation. Fixed color mask and logging. Updated `CMakeLists.txt`.
Enhances performance and code organization.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-14 20:28:39 +10:00
Zephyron
12c3e4b92c Revert "fix: resolve X11 macro conflicts with enum values and Qt constants"
This reverts commit c32ac3b3c1.
2025-09-14 20:15:29 +10:00
Zephyron
c32ac3b3c1 fix: resolve X11 macro conflicts with enum values and Qt constants
Rename Success enums and fix Qt event types to avoid X11 macro conflicts.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-14 20:09:09 +10:00
Zephyron
2d890316ad shader_recompiler: Implement ISBERD instruction for internal stage buffer reads
This commit properly implements the ISBERD (Internal Stage Buffer Entry Read)
instruction that was previously stubbed. The implementation supports all
modes and shift types:

- Patch mode: Reads tessellation patch attributes using ir.GetPatch()
- Prim mode: Reads primitive attributes for geometry shaders
- Attr mode: Reads generic vertex attributes
- Default mode: Maintains backward compatibility

The implementation also supports:
- U16 and B32 shift modes for different data formats
- SKEW and O flags for advanced buffer addressing
- Proper data type conversions and bit casting

This fixes rendering issues in UE4 titles that rely on internal stage
buffer operations in tessellation and geometry shaders. The previous
stubbed implementation caused compatibility problems with modern
rendering pipelines.

Credit: Hayate Yoshida (吉田 疾風) <hayate@citron-emu.org> for discovering
the root cause and providing insight on the proper implementation approach.

Fixes: Internal stage buffer read operations in tessellation shaders
Resolves: UE4 title rendering issues related to ISBERD instruction
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-14 19:01:19 +10:00
Zephyron
ce06115c2c Revert "shader_recompiler: Implement ISBERD instruction"
This reverts commit d2c6f3ab9c.
2025-09-14 18:19:36 +10:00
Zephyron
3c70fd52bd fix: update Android build config and dependencies
Update NDK/CMake versions, switch default build variant, re-enable x86_64
support, add ConstraintLayout dependency, and enable LTCG optimization.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-14 16:09:04 +10:00
Zephyron
0b0b61572b Merge branch 'insane-vram-mode' into 'main'
feat: add High-End and Insane VRAM modes with leak prevention

See merge request citron/emulator!3
2025-09-14 16:06:09 +10:00
Zephyron
6e6b2f438e feat: add High-End and Insane VRAM modes with leak prevention
- Add HighEnd and Insane VRAM usage modes for RTX 4090/4080+ users
- Implement VRAM limits: HighEnd (12GB), Insane (22GB) with scaling
- Optimize buffer allocation with larger chunks for high-end GPUs
- Add VRAM leak detection and aggressive cleanup for Insane mode
- Increase shader compilation buffer sizes for better performance
- Add VRAM monitoring functions to Vulkan rasterizer
- Implement memory usage tracking for staging buffers

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-14 16:05:31 +10:00
Zephyron
b4e0e50505 Merge branch 'vram-monitor-overlay' into 'main'
feat: add VRAM monitoring overlay with modern UI

See merge request citron/emulator!2
2025-09-14 16:00:37 +10:00
Zephyron
8356d9fea0 fix: clean up VRAM overlay layout and remove visual clutter
- Remove cut-off percentage labels from graph area
- Isolate graph with proper background and border
- Reduce padding and spacing to match performance overlay
- Compress leak warnings to single line
- Adjust widget size to 250x180 for consistent proportions

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-09-14 16:00:13 +10:00