aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-06-24Inherit buffer tracking handles rather than recreating on resize (#2330)riperiperi
This greatly speeds up games that constantly resize buffers, and removes stuttering on games that resize large buffers occasionally: - Large improvement on Super Mario 3D All-Stars (#1663 needed for best performance) - Improvement to Hyrule Warriors: AoC, and UE4 games. These games can still stutter due to texture creation/loading. - Small improvement to other games, potential 1-frame stutters avoided. `ForceSynchronizeMemory`, which was added with POWER, is no longer needed. Some tests have been added for the MultiRegionHandle.
2021-06-24settings: Implement GetDeviceNickName and SetDeviceNickName (#2383)Ac_K
* settings: Implement GetDeviceNickName and SetDeviceNickName This PR implement `set` and `sys:set` calls : `GetDeviceNickName` and `SetDeviceNickName` accordingly to RE. I've cleaned up both services a bit and `SystemStateMgr` class too. Closes #2110 * Addresses gdkchan_s feedback
2021-06-24nfc/nfp: Implement ISystemManager and ISystem (#2381)Ac_K
* nfc/nfp: Implement ISystemManager and ISystem This PR add permission levels for `nfc` and `nfp` services: - `nfc`: `CreateUserInterface` and `CreateSystemInterface` are implemented. - `INfc`: `Initialize` and `IsNfcEnabled` calls are stubbed. - `nfp`: `CreateDebugInterface` and `CreateSystemInterface` are implemented. - `INfp`: `GetRegisterInfo2` for `IDebug` and `ISystem` are implemented. * Addresses gdkchan feedback
2021-06-24Reduce number of dlls on distribution with single file publish (#2211)gdkchan
* Enable single file publish * Set DebugType to embedded on build scripts
2021-06-23input: Fixes TouchPoint wrong attribute (#2390)Ac_K
2021-06-23Fix shader texture LOD query (#2397)gdkchan
2021-06-23Implement VORN (register) Arm32 instruction (#2396)gdkchan
2021-06-23Pass all inputs when geometry shader passthrough is enabled (#2362)gdkchan
* Pass all inputs when geometry shader passthrough is enabled * Shader cache version bump
2021-06-23hid: Cleanup and implement some calls (#2380)Ac_K
2021-06-23Unbind input on middle click (#2358)ooa113y
* Unbind input on middle click * Clear _middleMousePressed unconditionally * Remove unneded initialization code * Swap conditions * CR fixes
2021-06-23prepo: Implement SaveSystemReport and SaveSystemReportWithUser (#2379)Ac_K
2021-06-23pl: Implement GetSharedFontInOrderOfPriorityForSystem (#2382)Ac_K
2021-06-23mii: Fix multiple inconsistencies (#2392)Mary
I found multiple inconsistencies while diffing with latest sdb, this PR fixes those findings.
2021-06-23kernel: Implement MapTransferMemory and UnmapTransferMemory (#2386)Mary
Based on my reversing of kernel 12.0.0
2021-06-22ipc: Remove size checks for buffer type 0x21/0x22 (#2387)Ac_K
* ipc: Remove size checks for buffer type 0x21/0x22 Since original IPC implementation doesn't check the buffers size, there is no reason to check them so I've removed it. Checking the buffers addresses could prevent to unexpected behaviors. That's fix a bsd service issue with some homebrew and some games like Knockout City (https://github.com/Ryujinx/Ryujinx-Games-List/issues/3622) which is now bootable: * addresses gdkchan's review
2021-06-21account: Fix wrong condition in TrySelectUserWithoutInteraction (#2384)Ac_K
* account: Fix wrong condition in TrySelectUserWithoutInteraction Since the implementation of User Profiles, we can get more than one profile stored. This PR fixes a wrong condition in `TrySelectUserWithoutInteraction`. Closes #2320 * Some cleanup
2021-06-21am: Add all known AppletMessage (#2378)Ac_K
This PR add all known AppletMessage values for accuracy, nothing more. `MessageInfo` is renamed to the right `AppletMessage` name.
2021-06-20Fix separate bindless sampler at offset 0 (#2360)gdkchan
2021-06-19hid/irs: Stub IsFirmwareUpdateAvailableForSixAxisSensor and ↵LukeFZ
CheckFirmwareVersion (#2371) * Stub two services Stubs IHidServer::IsFirmwareUpdateAvailableForSixAxisSensor and IIrSensorServer::CheckFirmwareVersion * Apply suggestions from code review Also changed PackedMcuVersion to be two shorts instead of two bytes, because that's its actual type * Apply new code review suggestions Degroup field from previous assignation + Add padding after SixAxisSensorHandle
2021-06-17Miria: Make default profile loads Pro Controller by default (#2368)Mary
This was a regression introduced by Miria.
2021-06-15End shader decoding when reaching a block that starts with an infinite loop ↵riperiperi
(after BRX) (#2367) * End shader decoding when reaching an infinite loop The NV shader compiler puts these at the end of shaders. * Update shader cache version
2021-06-14Add TouchScreen Manager (#2333)emmauss
2021-06-10Increase height of Settings Window (#2355)EmulationFanatic
2021-06-09GAL: Fix sampler leaks on exit (#2353)Mary
Before this, all samplers instance were leaking on exit because the dispose method was never getting called. This fix this issue by making TextureBindingsManager disposable and calling the dispose method in the TextureManager.
2021-06-09Do not clear gpu subchannel state on BindChannel (#2348)Mary
This fixes a regression caused by #980, that was causing a crash on New Super Lucky's Tale. As always, this need feedback on possible regression on any games. Fix #2343.
2021-06-09Support bindless textures with separate constant buffers for texture and ↵gdkchan
sampler (#2339)
2021-06-03Add SDL2 information & updated game compatibility stats (#2337)EmulationFanatic
2021-06-03Fix shaders with mixed PBK and SSY addresses on the stack (#2329)gdkchan
* Fix shaders with mixed PBK and SSY addresses on the stack * Address PR feedback and nits
2021-06-03Fix texture blit off-by-one errors (#2335)gdkchan
2021-06-02Reactivate DInput on SDL2Mary
Seems more people than expected use DInput in 2021, will find another way to fix the latency issue I suppose.
2021-06-02Update SDL2-CS (#2327)Mary
Changelog: - SDL2 was updated to lastest master - DInput was disabled from build configuration (Close #2238) - HIDAPI was forced enabled on Linux and libusb library name was fixed (Close #2226) NOTE about HIDAPI support on Linux: Make sure that your gamepad is accesible to your user for it to be detected by HIDAPI. This can be done via a udev rule like: ``` KERNEL=="hidraw*", MODE="0660", TAG+="uaccess" ``` **NOTE: This rule is given as an example, this can present a security risk. Make sure to filter by vendor and product ids.**
2021-06-02Use Quads on OpenGL host when supported. (#2331)riperiperi
Improves OpenGL performance on FAST RMX and Xenoblade DE/2. Will probably only work on NVIDIA GPUs, but the emulated quads path will still be valid for other GPUs. Note: SLOW RMX gets a bit faster in handheld mode. I'd recommend checking on platforms without supported host quads to make sure a GL error is actually thrown when attempting GL.Begin(PrimitiveType.Quads)
2021-06-01Avoid clearing alpha channel by handle when presenting (#2323)Mary
* Avoid clearning alpha channel by handle when presenting Previous code was binding then blitting while the framebuffer was bound and then clearing the alpha channel by its handle. This ended up triggering a bug since AMD driver 21.4.1 ending up clearing the whole framebuffer as a result. New code fix this weird logic by applying the clear on the bound framebuffer. Close #2236. * Address rip's comments * Fix AMD being broken once again
2021-05-31Do not attempt to normalize SNORM image buffers on shaders (#2317)gdkchan
* Do not attempt to normalize SNORM image buffers on shaders * Shader cache version bump
2021-05-30Fix guest stack trace inexistent function names (#2326)gdkchan
2021-05-30Fix inverted low/high mask value on GetThreadCoreMask32 syscall (#2325)gdkchan
2021-05-29Add multi-level function table (#2228)FICTURE7
* Add AddressTable<T> * Use AddressTable<T> for dispatch * Remove JumpTable & co. * Add fallback for out of range addresses * Add PPTC support * Add documentation to `AddressTable<T>` * Make AddressTable<T> configurable * Fix table walk * Fix IsMapped check * Remove CountTableCapacity * Add PPTC support for fast path * Rename IsMapped to IsValid * Remove stale comment * Change format of address in exception message * Add TranslatorStubs * Split DispatchStub Avoids recompilation of stubs during tests. * Add hint for 64bit or 32bit * Add documentation to `Symbol` * Add documentation to `TranslatorStubs` Make `TranslatorStubs` disposable as well. * Add documentation to `SymbolType` * Add `AddressTableEventSource` to monitor function table size Add an EventSource which measures the amount of unmanaged bytes allocated by AddressTable<T> instances. dotnet-counters monitor -n Ryujinx --counters ARMeilleure * Add `AllowLcqInFunctionTable` optimization toggle This is to reduce the impact this change has on the test duration. Before everytime a test was ran, the FunctionTable would be initialized and populated so that the newly compiled test would get registered to it. * Implement unmanaged dispatcher Uses the DispatchStub to dispatch into the next translation, which allows execution to stay in unmanaged for longer and skips a ConcurrentDictionary look up when the target translation has been registered to the FunctionTable. * Remove redundant null check * Tune levels of FunctionTable Uses 5 levels instead of 4 and change unit of AddressTableEventSource from KB to MB. * Use 64-bit function table Improves codegen for direct branches: mov qword [rax+0x408],0x10603560 - mov rcx,sub_10603560_OFFSET - mov ecx,[rcx] - mov ecx,ecx - mov rdx,JIT_CACHE_BASE - add rdx,rcx + mov rcx,sub_10603560 + mov rdx,[rcx] mov rcx,rax Improves codegen for dispatch stub: and rax,byte +0x1f - mov eax,[rcx+rax*4] - mov eax,eax - mov rcx,JIT_CACHE_BASE - lea rax,[rcx+rax] + mov rax,[rcx+rax*8] mov rcx,rbx * Remove `JitCacheSymbol` & `JitCache.Offset` * Turn `Translator.Translate` into an instance method We do not have to add more parameter to this method and related ones as new structures are added & needed for translation. * Add symbol only when PTC is enabled Address LDj3SNuD's feedback * Change `NativeContext.Running` to a 32-bit integer * Fix PageTable symbol for host mapped
2021-05-25amadeus: Update to REV9 (#2309)Mary
* amadeus: Update to REV9 This implements all the changes made with REV9 on 12.0.0. * Address Ac_k's comments
2021-05-24POWER - Performance Optimizations With Extensive Ramifications (#2286)riperiperi
* Refactoring of KMemoryManager class * Replace some trivial uses of DRAM address with VA * Get rid of GetDramAddressFromVa * Abstracting more operations on derived page table class * Run auto-format on KPageTableBase * Managed to make TryConvertVaToPa private, few uses remains now * Implement guest physical pages ref counting, remove manual freeing * Make DoMmuOperation private and call new abstract methods only from the base class * Pass pages count rather than size on Map/UnmapMemory * Change memory managers to take host pointers * Fix a guest memory leak and simplify KPageTable * Expose new methods for host range query and mapping * Some refactoring of MapPagesFromClientProcess to allow proper page ref counting and mapping without KPageLists * Remove more uses of AddVaRangeToPageList, now only one remains (shared memory page checking) * Add a SharedMemoryStorage class, will be useful for host mapping * Sayonara AddVaRangeToPageList, you served us well * Start to implement host memory mapping (WIP) * Support memory tracking through host exception handling * Fix some access violations from HLE service guest memory access and CPU * Fix memory tracking * Fix mapping list bugs, including a race and a error adding mapping ranges * Simple page table for memory tracking * Simple "volatile" region handle mode * Update UBOs directly (experimental, rough) * Fix the overlap check * Only set non-modified buffers as volatile * Fix some memory tracking issues * Fix possible race in MapBufferFromClientProcess (block list updates were not locked) * Write uniform update to memory immediately, only defer the buffer set. * Fix some memory tracking issues * Pass correct pages count on shared memory unmap * Armeilleure Signal Handler v1 + Unix changes Unix currently behaves like windows, rather than remapping physical * Actually check if the host platform is unix * Fix decommit on linux. * Implement windows 10 placeholder shared memory, fix a buffer issue. * Make PTC version something that will never match with master * Remove testing variable for block count * Add reference count for memory manager, fix dispose Can still deadlock with OpenAL * Add address validation, use page table for mapped check, add docs Might clean up the page table traversing routines. * Implement batched mapping/tracking. * Move documentation, fix tests. * Cleanup uniform buffer update stuff. * Remove unnecessary assignment. * Add unsafe host mapped memory switch On by default. Would be good to turn this off for untrusted code (homebrew, exefs mods) and give the user the option to turn it on manually, though that requires some UI work. * Remove C# exception handlers They have issues due to current .NET limitations, so the meilleure one fully replaces them for now. * Fix MapPhysicalMemory on the software MemoryManager. * Null check for GetHostAddress, docs * Add configuration for setting memory manager mode (not in UI yet) * Add config to UI * Fix type mismatch on Unix signal handler code emit * Fix 6GB DRAM mode. The size can be greater than `uint.MaxValue` when the DRAM is >4GB. * Address some feedback. * More detailed error if backing memory cannot be mapped. * SetLastError on all OS functions for consistency * Force pages dirty with UBO update instead of setting them directly. Seems to be much faster across a few games. Need retesting. * Rebase, configuration rework, fix mem tracking regression * Fix race in FreePages * Set memory managers null after decrementing ref count * Remove readonly keyword, as this is now modified. * Use a local variable for the signal handler rather than a register. * Fix bug with buffer resize, and index/uniform buffer binding. Should fix flickering in games. * Add InvalidAccessHandler to MemoryTracking Doesn't do anything yet * Call invalid access handler on unmapped read/write. Same rules as the regular memory manager. * Make unsafe mapped memory its own MemoryManagerType * Move FlushUboDirty into UpdateState. * Buffer dirty cache, rather than ubo cache Much cleaner, may be reusable for Inline2Memory updates. * This doesn't return anything anymore. * Add sigaction remove methods, correct a few function signatures. * Return empty list of physical regions for size 0. * Also on AddressSpaceManager Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2021-05-24Improve accuracy of reciprocal step instructions (#2305)gdkchan
* Improve accuracy of reciprocal step instructions * Fix small mistake on RECPE rounding, nits, PTC version bump
2021-05-24Fix value of constant vertex attributes (#2307)gdkchan
2021-05-24Compare aligned size for largest mip level when considering sampler resize ↵riperiperi
(#2306) * Compare aligned size for largest mip level when considering sampler resize When selecting a texture that's a view for a sampler resize, we should take care that resizing it doesn't change the aligned size of any larger mip levels. This PR covers two cases: - When creating a view of the texture, we check that the aligned size of the view shifted up to level 0 still matches the aligned size of the container. If it does not, a copy dependency is created rather than resizing. - When searching for a texture for sampler, textures that do _not_ match our aligned size when both are shifted up by its base level are not considered an exact match, as resizing the found texture will cause the mip 0 aligned size to change. It will create a copy dependency view instead. Fixes graphical errors and crashes (on flush) in various Unity games that use render-to-texture. * Move shared code to its own method.
2021-05-22Use a different method for out of bounds blit (#2302)gdkchan
* Use a different method for out of bounds blit * This is not needed
2021-05-22Add another Depth32F texture format (#2304)gdkchan
2021-05-22Fix non-independent blend state not being updated (#2303)gdkchan
* Fix non-independent blend state not being updated * Actually, this is not needed
2021-05-21Extend info printed when guest crashes/breaks execution (#1845)Somebody Whoisbored
* Add CPU register printout when guest crashes/breaks execution * Print out registers when undefined instruction is hit * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Fixes after rebase * Address gdkchan's comments Co-authored-by: Ac_K <Acoustik666@gmail.com> Co-authored-by: Mary <me@thog.eu>
2021-05-21input: Implement a SDL2 keyboard backend (#2277)Mary
* input: Implement a SDL2 keyboard backend Add a new keyboard backend to the Ryujinx.Input.SDL2 project. This is currently unused. * Address Ac_k's comments * Address gdkchan's comments
2021-05-21Fix dimensions check for scale eligibility (#2301)riperiperi
2021-05-20Fix buffer and texture uses not being propagated for vertex A/B shaders (#2300)gdkchan
* Fix buffer and texture uses not being propagated for vertex A/B shaders * Shader cache version bump
2021-05-20Fix constant buffer array size when indexing is used and other buffer ↵gdkchan
descriptor and resolution scale regressions (#2298) * Fix constant buffer array size when indexing is used * Change default QueryConstantBufferUse value * Fix more regressions * Ensure proper order