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)'
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
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.
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.
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.
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.
- 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
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.
- 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
- 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>
- 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>
- 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>
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>
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>
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>
- 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>