aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-09-14Periodically Flush Commands for Vulkan (#3689)riperiperi
* Periodically Flush Commands for Vulkan NVIDIA's OpenGL driver has a built-in mechanism to automatically flush commands to GPU when a lot have been queued. It's also pretty inconsistent, but we'll ignore that for now. Our Vulkan implementation only submits a command buffer (flush equivalent) when it needs to. This is typically when another command buffer needs to be sequenced after it, presenting a frame, or an edge case where we flush around GPU queries to get results sooner. This difference in flush behaviour causes a notable difference between Vulkan and OpenGL when we have to wait for commands. In the worst case, we will wait for a sync point that has just been created. In Vulkan, this sync point is created by flushing the command buffer, and storing a waitable fence that signals its completion. Our command buffer contains _every command that we queued since the last submit_, which could be an entire frame's worth of draws. This has a huge effect on CPU <-> GPU latency. The more commands in a command buffer, the longer we have to wait for it to complete, which results in wasted time. Because we don't know when the guest will force us to wait, we always want the smallest possible latency. By periodically flushing, we ensure that each command buffer takes a more consistent, smaller amount of time to execute, and that the back of the GPU queue isn't as far away when we need to wait for something to happen. This also might reduce time that the GPU is left inactive while commands are being built. The main affected game is Pokemon Sword, which got significantly faster in overworld areas due to reduced waiting time when it flushes a shadow map from the main GPU thread. Another affected game is BOTW, which gets faster depending on the area. This game flushes textures/buffers from its game thread, which is the bottleneck. Flush latency and throughput may be improved on other games that are inexplicably slower than OpenGL. It's possible that certain games could have their performance _decreased_ slightly due to flushes not being free, but it is unlikely. Also, flushing to get query results sooner has been tweaked to improve the number of full draw skips that can be done. (tested in SMO) * Remove unused variable * Fix possible issue with early query flush
2022-09-14Fix partial unmap reprotection on Windows (#3702)gdkchan
2022-09-13Implement PLD and SUB (imm16) on T32, plus UADD8, SADD8, USUB8 and SSUB8 on ↵gdkchan
both A32 and T32 (#3693)
2022-09-13T32: Implement Asimd instructions (#3692)merry
2022-09-13Fix bindless 1D textures having a buffer type on the shader (#3697)gdkchan
* Fix bindless 1D textures having a buffer type on the shader * Shader cache version bump
2022-09-13Fix increment on Arm32 NEON VLDn/VSTn instructions with regs > 1 (#3695)gdkchan
* Fix increment on Arm32 NEON VLDn/VSTn instructions with regs > 1 * PPTC version bump * PR feedback
2022-09-13Fix R4G4B4A4 format on Vulkan (#3696)gdkchan
2022-09-11Scale SamplesPassed counter by RT scale on report (#3680)riperiperi
* Scale SamplesPassed counter by RT scale on report Adds a scale factor for samples passed counter report based on the render target scale at the time. This ensures that when a game reads this counter, it appears similar to the result at 1x. This doesn't cover cases where the the render target scale changes during the queried draws, though that might be better to handle along with other scope related issues in a future rework of counters. Games generally don't count for occlusion queries over render target changes anyways. Fixes an issue in the Splatoon games where the special charge would scale too quickly at high res, points at the end of the game would be broken (but still provide a correct winner), and playing at a low res would make it impossible to swim in ink. May also affect LOD scaling in The Witcher 3. * Update Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2022-09-11Implement VRINT (vector) Arm32 NEON instructions (#3691)gdkchan
2022-09-10T32: Add Vfp instructions (#3690)merry
2022-09-10Implement Thumb (32-bit) memory (ordered), multiply, extension and bitfield ↵gdkchan
instructions (#3687) * Implement Thumb (32-bit) memory (ordered), multiply and bitfield instructions * Remove public from interface * Fix T32 BL immediate and implement signed and unsigned extend instructions
2022-09-10Revert address space mirror changesgdk
2022-09-10Allocation free tree lookupgdk
2022-09-10Update several methods to use GetNode directly and avoid array allocationsgdk
2022-09-10Optimize PlaceholderManager.UnreserveRangegdk
2022-09-10Fix potential issue with partial unmapgdk
We must also do the unmap operation with the RWLock, otherwise faults on the unmapped region will cause crashes and the whole thing becomes pointless
2022-09-10Fix reprotection regressiongdk
2022-09-10Make RBTree node fields internal againgdk
Prevents someone from accidentaly messing with them and leaving the tree in a invalid state
2022-09-10Delete unused codegdk
2022-09-10Rewrite PlaceholderManager4KB to use intrusive RBTree, and to coalesce free ↵gdk
placeholders Also make the other placeholder manager use intrusive RBTree, allows the IntervalTree that was added just for this to be deleted
2022-09-10Defer address space mirror mapping and use it only if strictly neededgdk
2022-09-10Do not output ViewportIndex on SPIR-V if GPU does not support it (#3644)gdkchan
* Do not output ViewportIndex on SPIR-V if GPU does not support it * Bump shader cache version
2022-09-10Update README.MD verbiage and compatibilityEmulationFanatic
2022-09-10Rebind textures if format changes or they're buffer texturesriperiperi
2022-09-10Allocate work buffer for audio renderer instead of using guest supplied ↵gdkchan
memory (#3276) * Allocate work buffer for audio renderer instead of using guest supplied memory * Typo * Use GC.AllocateArray to allocate pinned array
2022-09-09Add ADD (zx imm12), NOP, MOV (rs), LDA, TBB, TBH, MOV (zx imm16) and CLZ ↵gdkchan
thumb instructions (#3683) * Add ADD (zx imm12), NOP, MOV (register shifted), LDA, TBB, TBH, MOV (zx imm16) and CLZ thumb instructions, fix LDRD, STRD, CBZ, CBNZ and BLX (reg) * Bump PPTC version
2022-09-09Implement VRSRA, VRSHRN, VQSHRUN, VQMOVN, VQMOVUN, VQADD, VQSUB, VRHADD, ↵gdkchan
VPADDL, VSUBL, VQDMULH and VMLAL Arm32 NEON instructions (#3677) * Implement VRSRA, VRSHRN, VQSHRUN, VQMOVN, VQMOVUN, VQADD, VQSUB, VRHADD, VPADDL, VSUBL, VQDMULH and VMLAL Arm32 NEON instructions * PPTC version * Fix VQADD/VQSUB * Improve MRC/MCR handling and exception messages In case data is being recompiled as code, we don't want to throw at emit stage, instead we should only throw if it actually tries to execute
2022-09-08Restride vertex buffer when stride causes attributes to misalign in Vulkan. ↵riperiperi
(#3679) * Vertex Buffer Alignment part 1 * Update CacheByRange * Add Stride Change compute shader, fix storage buffers in helpers * An AMD exclusive * Reword * Change rules - stride conversion when attrs misalign * Fix stupid mistake * Fix background pipeline compile * Improve a few things. * Fix some feedback * Address Feedback (the shader binary didn't change when i changed the source to use the subgroup size) * Fix bug where rewritten buffer would be disposed instantly.
2022-09-08Clean up rejit queue (#2751)FICTURE7
2022-09-08Implemented in IR the managed methods of the Saturating region ... (#3665)LDj3SNuD
* Implemented in IR the managed methods of the Saturating region ... ... of the SoftFallback class (the SatQ ones). The need to natively manage the Fpcr and Fpsr system registers is still a fact. Contributes to https://github.com/Ryujinx/Ryujinx/issues/2917 ; I will open another PR to implement in Intrinsics-branchless the methods of the Saturation region as well (the SatXXXToXXX ones). All instructions involved have been tested locally in both release and debug modes, in both lowcq and highcq. * Ptc.InternalVersion = 3665 * Addressed PR feedback.
2022-09-07Transform shader LDC into constant buffer access if offset is constant (#3672)gdkchan
* Transform shader LDC into constant buffer access if offset is constant * Shader cache version bump
2022-09-07bsd: improve socket pollMary
We should report errors even when not requested. This also ensure we only clear the bits that were requested on the output. Finally, this fix when input events is 0.
2022-09-07bsd: implement SendMMsg and RecvMMsg (#3660)Mary-nyan
* bsd: implement sendmmsg and recvmmsg * Fix wrong increment of vlen
2022-09-06Update bug report template (#3676)EmulationFanatic
Adds some verbiage to indicate that game-specific issues should be posted instead on the game compatibility list, unless it is a provable regression.
2022-09-01Bsd: Fix NullReferenceException in BsdSockAddr.FromIPEndPoint() (#3652)TSRBerry
* Bsd: Fix NullReferenceException in BsdSockAddr.FromIPEndPoint() Allows "Victor Vran Overkill Edition" to boot with guest internet access enabled. Thanks to EmulationFanatic for testing this for me! * Bsd: Return proper error code if RemoteEndPoint is null * Remove whitespace from empty line Co-authored-by: gdkchan <gab.dark.100@gmail.com> Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2022-09-01Change vsync signal to happen at 60hz, regardless of swap interval (#3642)riperiperi
* Change vsync signal to happen at 60hz, regardless of swap interval * Update Ryujinx.HLE/HOS/Services/SurfaceFlinger/SurfaceFlinger.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Fix softlock when toggling vsync Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2022-09-01bsd: Fix Poll(0) returning ETIMEDOUT instead of SUCCESSMary
This was an oversight of the implementation.
2022-09-01sfdsnres: fix endianess issue for port serialisationMary
2022-08-31Address gdkchan's commentMary
2022-08-31account: Implement LoadNetworkServiceLicenseKindAsyncMary
This is needed to run Pokemon Legends Arceus 1.1.1 with guest internet enabled. The game still get stuck at loading screen.
2022-08-28Bsd: Fix ArgumentOutOfRangeException in SetSocketOption (#3633)TSRBerry
* Bsd: Fix ArgumentOutOfRangeException in SetSocketOption * Ensure option level is Socket before checking for SoLinger
2022-08-28Replace image format magic numbers with enums (#3631)mageven
* Replace magic constants with enums * Extra formatting * Lower case ASTC dimensions * Use uint for VertexAttributeFormat
2022-08-27Updates Japanese localization for the Avalonia UI (#3635)txorion
2022-08-26Optimize kernel memory block lookup and consolidate RBTree implementations ↵gdkchan
(#3410) * Implement intrusive red-black tree, use it for HLE kernel block manager * Implement TreeDictionary using IntrusiveRedBlackTree * Implement IntervalTree using IntrusiveRedBlackTree * Implement IntervalTree (on Ryujinx.Memory) using IntrusiveRedBlackTree * Make PredecessorOf and SuccessorOf internal, expose Predecessor and Successor properties on the node itself * Allocation free tree node lookup
2022-08-26Update Turkish Translation (#3498)aegiff
Translated newly added lines and polished older entries.
2022-08-26Update de_DE.json (#3502)Niwu34
* Update de_DE.json * Update de_DE.json * Update de_DE.json * Update de_DE.json * Update de_DE.json * Update de_DE.json * Update de_DE.json * Another one * Update de_DE.json * addressed reviews Co-Authored-By: Miepee <38186597+Miepee@users.noreply.github.com> * welp Co-Authored-By: Miepee <38186597+Miepee@users.noreply.github.com> * Update de_DE.json * Update de_DE.json quick update with the latest changes Co-Authored-By: Miepee <38186597+Miepee@users.noreply.github.com> * Update de_DE.json Co-Authored-By: Miepee <38186597+Miepee@users.noreply.github.com> Co-authored-by: Miepee <38186597+Miepee@users.noreply.github.com> Co-authored-by: reloxx13 <reloxx@interia.pl>
2022-08-26Update zh_CN.json (#3598)Narugakuruga
* Update zh_CN.json * Update zh_CN.json * Update zh_CN.json * Update zh_CN.json * Delete zh_CN.json * fix crash * Update zh_CN.json * Update zh_CN.json * Update zh_CN.json * Update zh_CN.json * Update zh_CN.json
2022-08-26Avalonia - Add Polish Translation (#3569)Luna
* Update Ryujinx.Ava.csproj * Update MainWindow.axaml * Create pl_PL.json * Update pl_PL.json * Update pl_PL.json * Update pl_PL.json * Update pl_PL.json * PPTC wording changes adding PPTC changes Co-authored-by: Clara <moonbowjelly@gmail.com>
2022-08-26Avalonia - Display language names in their corresponding language under ↵MetrosexualGarbodor
"Change Language" (#3490) * change languages to their native names * fix Chinese language names * Update MainWindow.axaml
2022-08-26bsd: Fix Poll writting in input buffer (#3630)Mary-nyan
This is a very old oversight on our Poll implementation. This worked so far reliably because games and homebrews pass the same buffer as input and output.