summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2025-01-07kernel: Implement SystemResourceSize info type for VAMM initializationZephyron
Adds support for InfoType::SystemResourceSize (0x1C) which is required for proper initialization of the Virtual Address Memory Manager (VAMM). This implementation: 1. Adds SystemResourceSize to the InfoType enum in svc_types.h 2. Implements the GetInfo handler for SystemResourceSize in svc_info.cpp 3. Returns 512MB (0x20000000 bytes) as the system resource size 4. Adds debug logging for the SVC call The 512MB value is chosen based on typical system resource allocations needed for VAMM initialization on the Nintendo Switch. This fixes crashes in games that rely on VAMM functionality, particularly during nn::os::detail::VammManager::InitializeIfEnabled().
2025-01-06core: Improve device memory and buffer queue handlingZephyron
This commit makes several improvements to device memory management and buffer queue handling: DeviceMemoryManager: - Add null pointer and size checks for ReadBlock - Fill unmapped memory with a known pattern (0xCC) instead of zeros - Add better error logging for invalid memory accesses - Add null pointer check for source pointer in memcpy BufferQueueProducer: - Improve error handling in WaitForFreeSlotThenRelock - Add proper abandoned state checking during wait conditions - Clean up and simplify buffer scanning logic - Improve logging messages with more descriptive information - Remove redundant buffer count validation - Fix potential infinite loop condition during wait These changes improve stability and error handling while making the code more maintainable and debuggable. The use of a known pattern for unmapped memory helps identify uninitialized memory access issues.
2025-01-06service/am: Implement friend invitation storage channelZephyron
Implements TryPopFromFriendInvitationStorageChannel to properly handle friend invitation data storage and retrieval. This includes: - Add ResultNoData error code to am_results.h - Add friend_invitation_storage_channel storage queue to Applet struct - Implement proper data handling in TryPopFromFriendInvitationStorageChannel The implementation now properly manages a queue of friend invitation data and returns appropriate results based on data availability.
2025-01-06refactor: Improve game list scanning with std::filesystemZephyron
Refactors the game list scanning code to use std::filesystem instead of custom directory iteration functions. Main changes include: - Replace Common::FS directory iteration with std::filesystem iterators - Split game file processing logic into separate ProcessGameFile method - Improve error handling with try-catch for filesystem operations - Simplify control NCA metadata extraction - Use more modern C++ features and cleaner code organization This change should improve maintainability and reliability of the game scanning system while potentially offering better performance through native filesystem APIs.
2025-01-06discord: Improve game image handling and UI presentationZephyron
Updates the Discord Rich Presence implementation to use Tinfoil's media server for game images and improves the overall presentation. Technical changes: - Switch to Tinfoil media server for game images - Add proper title ID handling and display - Improve error handling for image requests - Increase network timeout to 10 seconds - Cache URL to prevent string destruction - Update Discord client ID - Clean up code formatting and organization UI/UX improvements: - Remove title ID from game state display - Update default text to be more descriptive - Improve error logging for failed image fetches - Maintain image persistence between updates This change provides better game image support and a cleaner Discord presence display while improving reliability of the integration.
2025-01-06common: Use consistent cache line size in RingBufferZephyron
Replace hardcoded 128-byte alignment with a defined CACHE_LINE_SIZE constant of 64 bytes for the atomic indices in RingBuffer. This value is more appropriate for most modern CPU architectures and simplifies the implementation by using a consistent value regardless of compiler support for hardware_interference_size. Changes: - Add CACHE_LINE_SIZE constant set to 64 bytes - Use CACHE_LINE_SIZE for atomic index alignment in both code paths - Remove outdated TODO comment about hardware_destructive_interference_size
2025-01-05web: Simplify web configuration and token managementZephyron
- Remove telemetry functionality and related UI elements - Add automatic token generation using UUID - Remove manual token verification process - Sync Citron username with profile username automatically - Simplify web configuration UI and improve error messages - Update host room error message for clarity This change streamlines the web service configuration by removing unnecessary complexity and automating token management. Users no longer need to manually verify tokens, and the Citron username is automatically kept in sync with their profile username.
2025-01-05nvdrv: Fix incorrect IoctlZbcSetTable structure size assertionZephyron
Resolves a build failure caused by a mismatch between the defined and expected size of the `IoctlZbcSetTable` structure in `nvhost_ctrl_gpu`. The `static_assert` incorrectly expected the size to be 44 bytes, while the actual size was 48 bytes. Changes include: - Updated `static_assert` to correctly reflect the 48-byte size of `IoctlZbcSetTable`. - Verified packing and alignment to ensure compliance with hardware specifications. - Reviewed and confirmed correctness of `u32` type definitions. This fix addresses a regression introduced in commit 9be4bf9aa5, which implemented ZBCSetTable functionality, and ensures successful compilation and adherence to the ZBC table implementation's design.
2025-01-04nvdrv: Implement ZBCSetTable functionalityZephyron
Implements basic Zero Bandwidth Clear (ZBC) table support in nvhost_ctrl_gpu. This adds storage and validation for both color and depth clear values, replacing the previous stub implementation. ZBC is a hardware optimization technique used by NVIDIA GPUs to efficiently handle buffer clearing operations. Changes include: - Added ZBC table storage structures - Implemented parameter validation - Added separate handling for color and depth modes - Improved debug logging - Added documentation explaining ZBC functionality
2025-01-04core: Add support for 10GB and 12GB memory configurationsZephyron
- Add Memory_10Gb and Memory_12Gb to MemoryLayout enum - Update memory layout settings to support up to 12GB - Add SMC enums for 10GB and 12GB memory sizes and arrangements - Increase MainMemorySizeMax from 8GB to 12GB - Add memory pool size calculations for 10GB and 12GB configurations - Update UI translations for new memory options
2025-01-03Audio Core: Add support tags for compressor stats and volume resetZephyron
Added two new audio feature support tags with their corresponding revision numbers: - AudioCompressorStatistics (rev 16): For tracking compressor statistics - AudioVolumeResetSupport (rev 17): For volume reset functionality These features align with the documented Nintendo Switch audio service capabilities and maintain compatibility with the existing feature support system.
2025-01-02buffer_cache: Fix storage buffer memory validation and size detectionZephyron
Fixes the StorageBufferBinding function to properly handle memory validation and size detection. Key changes include: - Fix ReadBlock usage to properly handle void return values - Implement safer memory validation using byte-level reads - Improve size detection logic for storage buffers - Fix NVN buffer size reading - Add proper bounds checking for device memory addresses - Add better error logging for invalid conditions This addresses the "Failed to find storage buffer for cbuf index 0" errors by implementing more robust memory validation and size detection. The changes ensure proper handling of invalid memory addresses and prevent crashes from accessing out-of-bounds memory.
2025-01-02arm: Skip duplicate consecutive addresses in backtrace outputZephyron
Adds logic to track and skip duplicate consecutive addresses when logging backtraces. This improves log readability by removing redundant entries that point to the same address in sequence.
2025-01-02impl(Multiplayer): Switched API To Enable MultiplayerZephyron
2025-01-02fix(CMake): Remove /DEBUG Flag From Release BuildsZephyron
2025-01-02video_core: Enforce safe memory reads for compute dispatchZephyron
- Modify DmaPusher to use safe memory reads when handling compute operations at High GPU accuracy - Prevent potential memory corruption issues that could lead to invalid dispatch parameters - Previously, unsafe reads could result in corrupted launch_description data in KeplerCompute::ProcessLaunch, causing invalid vkCmdDispatch calls - By enforcing safe reads specifically for compute operations, we maintain performance for other GPU tasks while ensuring compute dispatch stability This change requires >= High GPU accuracy level to take effect.
2024-12-31shader_recompiler: Fix ISBERD instruction implementationZephyron
- Simplify ISBERD instruction to handle register-to-register moves - Remove incorrect CompositeConstruct usage - Replace with direct register value passing - Fix compilation errors in internal stage buffer handling
2024-12-31shader_recompiler: Use FPRecip in FSWZADD implementationZephyron
Simplifies the negative reciprocal calculation in FSWZADD by using the dedicated FPRecip operation instead of manually constructing a division. This change: - Replaces FPDiv(Imm32(f32(1.0f)), src_b) with FPRecip(src_b) - Results in more efficient code for calculating 1.0/x - Fixes build errors from undefined IR emitter methods
2024-12-31shader_recompiler: Fix method names in FSWZADD implementationZephyron
Fixes incorrect method names in the floating point swizzled add implementation: - FNeg -> FPNeg - FDiv -> FPDiv - FImm32(1.0f) -> Imm32(ir.f32(1.0f)) These changes align with the correct IR emitter interface naming conventions, where floating-point operations use the 'FP' prefix and immediate values are properly constructed using f32().
2024-12-31shader_recompiler: Implement ISBERD instructionZephyron
Implements the Internal Stage Buffer Entry Read (ISBERD) instruction in the Maxwell shader recompiler. This replaces the previous stubbed implementation with actual buffer reading functionality. The implementation: - Validates unsupported features (skew, o, mode, shift) - Performs buffer read using IR::InternalStageBufferRead - Stores the read value to the destination register This removes the "(STUBBED) called" warning messages that were previously being logged during shader compilation.
2024-12-31shader_recompiler: Implement ISBERD instruction modes and shiftsZephyron
Implements the ISBERD (Internal Stage Buffer Entry Read) instruction's mode and shift options that were previously throwing NotImplemented exceptions. This includes: - Patch mode for reading patch data - Prim mode for reading primitive data - Attr mode for reading attribute data - U16 shift for 16-bit unsigned values - B32 shift for 32-bit values The implementation follows Maxwell's ISA specification for handling different buffer read modes and data shifts.
2024-12-31api_version: Update constants for HOS 19.0.1Zephyron
Updates version constants to match Nintendo Switch firmware 19.0.1: - HOS version numbers (19.0.1) - Version hash - Display version string - Display title string
2024-12-31audio_core: Add comprehensive audio feature support tagsZephyron
Added new feature support tags to track audio functionality across firmware versions. Changes include: - Added Audio Out/In Auto buffer support tags (3.0.0+) - Added Final Output Recorder features including work buffer (3.0.0+, 9.0.0+) - Added Audio Renderer features like manual execution and voice drop - Added Audio Device features including notifications and auto volume - Added Hardware Opus decoder features including large frame support - Added System Audio features like master volume and hearing protection This provides more complete feature detection for audio functionality introduced in firmware versions 3.0.0 through 19.0.1.
2024-12-31core: Update copyright headersZephyron
- Update copyright headers to include Citron Homebrew Project - Add 2025 to copyright years
2024-12-31core: Fix telemetry ID personalization array sizeZephyron
- The personalization array in GenerateTelemetryId() was too small (18 bytes) for the string "citron Telemetry ID" which requires 20 bytes including the null terminator - Increased the array size to 20 to properly accommodate the full string
2024-12-31chore: update project references and add Citron copyrightZephyron
- Replaced all references to the old project name with Citron. - Added Citron copyright information alongside existing notices in all files.
2024-12-31chore: update project branding to CitronZephyron
2024-12-31chore: update project branding to citronZephyron
2024-03-04"Merge Tagged PR 13018"yuzubot
2024-03-04"Merge Tagged PR 13178"yuzubot
2024-03-01Revert arbaic translationPengfei Zhu
2024-03-01Remove trailing whitespacesPengfei Zhu
2024-03-01Update translations (2024-03-01)The yuzu Community
2024-02-27Merge pull request #13135 from german77/hid-interfaceliamwhite
service: hid: Migrate HidServer to new IPC
2024-02-27Merge pull request #13175 from liamwhite/asanliamwhite
general: fix asan errors
2024-02-27Merge pull request #13171 from liamwhite/fake-addressliamwhite
texture_cache: do not track invalid addresses
2024-02-27general: workarounds for SMMU syncing issues (#12749)liamwhite
2024-02-27vk_rasterizer: flip scissor y on lower left origin mode (#13122)liamwhite
2024-02-27buffer_cache: avoid overflow in usage tracker (#13166)liamwhite
2024-02-27texture_cache: use two-pass collection for costly load resources (#13096)liamwhite
2024-02-26general: fix asan errorsLiam
2024-02-26Merge pull request #13172 from liamwhite/gl-streamsNarr the Reg
renderer_opengl: declare geometry stream support in profile
2024-02-26Merge pull request #13159 from liamwhite/web-errorliamwhite
core: enable error applet, add stubs for web applet
2024-02-26renderer_opengl: declare geometry stream support in profileLiam
2024-02-26settings: remove global override for smash on amdvlkLiam
2024-02-26video_core: make gpu context aware of rendering programLiam
2024-02-26texture_cache: do not track invalid addressesLiam
2024-02-25Merge pull request #13163 from german77/ringliamwhite
core: hid: hid_core doesn't have access to LIBUSB
2024-02-25Merge pull request #13154 from german77/vibration-filterliamwhite
core: hid: Reintroduce vibration filter
2024-02-25core: hid: hid_core doesn't have access to LIBUSBgerman77