Fix crash in PinHandle when SMMU allocation fails and unmap queue is empty.
Previously, the code would log an error and continue looping indefinitely,
causing log spam and eventual crash.
- Free multiple handles from unmap queue (up to 100) before giving up
- Add maximum attempt counter to prevent infinite loops
- Return 0 gracefully when no more handles can be freed
- Add error handling in callers (Remap, MapBufferEx, MapBuffer) to check for
PinHandle failure and return NvResult::InsufficientMemory instead of using
invalid addresses
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Fix crash in PinHandle when SMMU allocation fails and unmap queue is empty.
Previously, the code would log an error and continue looping indefinitely,
causing log spam and eventual crash. Now it returns 0 to fail gracefully.
Also fix incorrect handle check on line 219 - should check freeHandleDesc
instead of handle_description.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Remove strict assertion on data_transfer_type and allow PIPELINED
transfers (treating them as NON_PIPELINED). Some games like Marvel
Cosmic Invasion use pipelined transfers, causing crashes.
Fixes assertion at maxwell_dma.cpp:76
Signed-off-by: Zephyron <zephyron@citron-emu.org>
The automatic Windows updater was failing to install updates after downloading
and unpacking. The batch script had several issues:
- Read-only file attributes were not being removed before copying, causing
xcopy to fail silently
- xcopy was unreliable and didn't provide good error codes
- No retry logic for transient file lock issues
- Insufficient wait time after process closure
Changes:
- Replace xcopy with robocopy for more reliable file copying
- Remove read-only attributes from all destination files before copying
- Add retry logic (up to 3 attempts) for copy operations
- Improve process wait logic with timeout and additional delay
- Add verification that critical files were copied successfully
- Enhance error messages to help diagnose issues
- Add retry logic for cleanup operations
This fixes the issue where updates would download and unpack but fail to
install.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Force shadow maps to use CLAMP_TO_BORDER with white border color
- Convert CLAMP_TO_EDGE to CLAMP_TO_BORDER for shadow maps
- Improve GL_CLAMP handling for shadow maps on AMD
Issue may persist - likely needs investigation of shadow map rendering
or shader coordinate generation.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Fix UNIMPLEMENTED assertion when handling GPU-modified ignored textures
in texture cache. When ignored textures (remapped or same address/size)
have GpuModified flag set, now properly copies data to new image if
formats match, or marks new image as modified otherwise.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Switch to Ryujinx MoltenVK build compiled with older Metal SDK to avoid
MSL 3.2 thread_scope_subgroup bugs that cause text rendering issues
- Exclude Apple from GNU ld.bfd linker option (macOS uses different linker)
- Handle VK_ERROR_FRAGMENTED_POOL in Vulkan descriptor pool allocation
I messed this file up hardcore too, sorry about that. Made sure to clean it up to look nice again.
Signed-off-by: Collecting <collecting@noreply.localhost>
Implements a new feature for the Updater for Linux users, that notifies them of the directory of where their backup folder has been made & stores their last version of the emulator. This folder is not stagnant, for now, it makes a backup folder wherever the AppImage is, so it'll create a new one if the AppImage is moved to a separate location. Can be looked into in the future to make it so users can select a location. For now, this works.
Signed-off-by: Collecting <collecting@noreply.localhost>
A lot of users have been confused when being notified of releases. Some users have their defaulted Update Channel to Stable. This is meant to showcase and inform that there's an option for releases.
Signed-off-by: Collecting <collecting@noreply.localhost>
Updater would still read from the AppImage path when making a backup directory, had to fix up & rewrite some of the logic to ensure that a backup is parsed & a folder is cracked within the original_appimage_path with std::filesystem so that it properly functions.
Signed-off-by: Collecting <collecting@noreply.localhost>
Evilperson1337 from Discord showcased a bug to where if you had a game stored within multiple folders in the game list, when you'd create a room the game would appear twice.
The fix was to add an std::set which will keep track of games Title ID's. The way it functions is simple, "Did I see this Title ID before? Yes or no?" and, as mentioned, will ensure there are no duplicate games being shown, ensuring one version of the game is present for selection.
Signed-off-by: Collecting <collecting@noreply.localhost>
Too lazy to change links to include warning message boxes as made for the Help section. Changed all strings relating to just forward directly to it regardless so users still are prompted both warnings of reading the rules before joining the Discord.
Signed-off-by: Collecting <collecting@noreply.localhost>
People started coming into the server stating that it was meant for stuff that we do not help people with. People don't enjoy reading rules, now there's 2 QDialog warnings to ensure people are forced to read.
Signed-off-by: Collecting <collecting@noreply.localhost>
When incorporating mouse hiding into the GRenderWindow I ended up not providing any logic for the mouse to appropiately hide during panning. This should solve the issue.
Signed-off-by: Collecting <collecting@noreply.localhost>
revert refactor(vulkan): Remove redundant query cache segment notifications
- Remove NotifySegment(true) from PrepareDraw, DrawTexture, and Clear
- Remove NotifySegment(false) from AccelerateDisplay
- Add state tracking for transform feedback to avoid redundant CounterEnable calls
- Only call CounterEnable when transform feedback enable state changes
This prevents double resume/pause operations and state management conflicts.
Co-authored-by: Maufeat <maufeat@eden-emu.dev>
Signed-off-by: Zephyron <zephyron@citron-emu.org>