aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-11-28GPU: Always draw polygon topology as triangle fan (#3932)riperiperi
Polygon topology wasn't really supported and would only work on OpenGL on drivers that haven't removed it. As an alternative, this PR makes all cases of polygon topology use triangle fan. The topology type and transform feedback type have not been changed, as I don't think geo shader/tfb should be used with polygons. The OpenGL spec states: Only convex polygons are guaranteed to be drawn correctly by the GL. For convex polygons, triangle fan is equivalent to polygon. I imagine this is probably how it works on device, as this get-out-of-jail-free card is too enticing to pass up. This fixes the stat display in Pokemon S/V.
2022-11-28amadeus: Fixes and initial 15.0.0 support (#3908)Mary-nyan
* amadeus: Allow OOB read of GC-ADPCM coefficients Fixes "Ninja Gaiden Sigma 2" and possibly "NINJA GAIDEN 3: Razor's Edge" * amadeus: Fix wrong variable usage in delay effect We should transform the delay line values, not the input. * amadeus: Update GroupedBiquadFilterCommand documentation * amadeus: Simplify PoolMapper alignment checks * amadeus: Update Surround delay effect matrix to REV11 * amadeus: Add drop parameter support and use 32 bits integers for estimate time Also implement accurate ExecuteAudioRendererRendering stub. * Address gdkchan's comments * Address gdkchan's other comments * Address gdkchan's comment
2022-11-28sfdnsres; Fix deserializer of AddrInfoSerialized when addresses are empty ↵Ac_K
(#3924)
2022-11-27bsd: Fix eventfd broken logic (#3647)Mary-nyan
* bsd: Fix eventfd broken logic This commit fix eventfd logic being broken. The following changes were made: - EventFd IPC definition had argument inverted - EventFd events weren't fired correctly - Poll logic was wrong and unfinished for eventfd - Reintroduce workaround from #3385 but in a safer way, and spawn 4 threads. * ipc: Rework a bit for multithreads * Clean up debug logs * Make server thread yield when managed lock isn't availaible * Fix replyTargetHandle not being added in the proper locking scope * Simplify some scopes * Address gdkchan's comments * Revert IPC workaround for now * Reintroduce the EventFileDescriptor workaround
2022-11-27Unbreak bug_report.md (#3915)&Olga
* Unbreak bug_report.md * Update bug_report.md
2022-11-27HLE: fix small issue in IPsmSession (#3909)Luminoso-256
2022-11-26Avalonia: Fix OpenGL crashing on Linux (#3902)TSRBerry
* ava: Fix OpenGL crashing on Linux Fixes a regression from #3901 * Fix formatting
2022-11-25ava: Fix invisible vulkan window on Linux (#3901)TSRBerry
Co-authored-by: emmauss <emmausssss@gmail.com> Co-authored-by: emmauss <emmausssss@gmail.com>
2022-11-25ava: Refactor Title Update Manager window (#3898)Ac_K
* ava: Refactor TitleUpdate Manager window * Update locale
2022-11-25Fix CB0 alignment with addresses used for 8/16-bit LDG/STG (#3897)riperiperi
This replacement is meant to be done with the original identified byteOffset, not the one assigned later on by the below conditionals (that already has the constant offset added, for instance). This fixes videos being pixelated in Xenoblade 3, and other regressions that might have happened since #3847.
2022-11-25chore: Update Avalonia related dependencies (#3891)Mary-nyan
2022-11-25ava: Rework DLC Manager, Add various fixes and cleanup (#3896)Ac_K
* Fixes Everything Part.2 * Change sorting, fix remove and heading
2022-11-24nuget: bump SharpZipLib from 1.3.3 to 1.4.1 (#3893)dependabot[bot]
Bumps [SharpZipLib](https://github.com/icsharpcode/SharpZipLib) from 1.3.3 to 1.4.1. - [Release notes](https://github.com/icsharpcode/SharpZipLib/releases) - [Changelog](https://github.com/icsharpcode/SharpZipLib/blob/master/docs/Changes.txt) - [Commits](https://github.com/icsharpcode/SharpZipLib/compare/v1.3.3...v1.4.1) --- updated-dependencies: - dependency-name: SharpZipLib dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-24chore: Update Ryujinx.SDL2-CS to 2.24.2 (#3892)Mary-nyan
* chore: Update Ryujinx.SDL2-CS to 2.24.2 * Disable SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS
2022-11-24GPU: Don't trigger uploads for redundant buffer updates (#3828)riperiperi
* Initial implementation * Actually do The Thing * Add remark about performance to IVirtualMemoryManager
2022-11-24Reduce usage of Marshal.PtrToStructure and Marshal.StructureToPtr (#3805)Mary-nyan
* common: Make BinaryReaderExtensions Read & Write take unamanged types This allows us to not rely on Marshal.PtrToStructure and Marshal.StructureToPtr for those. * common: Make MemoryHelper Read & Write takes unamanged types * Update Marshal.SizeOf => Unsafe.SizeOf when appropriate and start moving software applet to unmanaged types
2022-11-24ui: Fixes disposing on GTK/Avalonia and Firmware Messages on Avalonia (#3885)Ac_K
* ui: Only wait on _exitEvent when MainLoop is active under GTK This fixes a dispose issue under Horizon/GTK, we don't check if the ApplicationClient is null so it throw NCE. We don't check if the main loop is active and waiting an event which is set in the main loop... So that could lead to a freeze. Everything works fine in GTK now. Related issue: https://github.com/Ryujinx/Ryujinx/issues/3873 As a side note, same kind of issue appear in Avalonia UI too. Firmware's popup doesn't show anything and the emulator just freeze. * TSRBerry's change Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Fix Avalonia crashing/freezing * Add Avalonia OpenGL fixes * Fix firmware popup on windows * Fixes everything * Add _initialized bool to VulkanRenderer and OpenGL Window Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
2022-11-24Ryujinx.Ava: Add missing redefinition of app name (#3890)Mary-nyan
Before this, Ryujinx would possibly report as "Avalonia Application".
2022-11-24Fix NRE on Avalonia for error applets with unknown error message (#3888)gdkchan
2022-11-24GAL: Send all buffer assignments at once rather than individually (#3881)riperiperi
* GAL: Send all buffer assignments at once rather than individually The `(int first, BufferRange[] ranges)` method call has very significant performance implications when the bindings are spread out, which they generally always are in Vulkan. This change makes it so that these methods are only called a maximum of one time per draw. Significantly improves GPU thread performance in Pokemon Scarlet/Violet. * Address Feedback Removed SetUniformBuffers(int first, ReadOnlySpan<BufferRange> buffers)
2022-11-24GPU: Access non-prefetch command buffers directly (#3882)riperiperi
* GPU: Access non-prefetch command buffers directly Saves allocating new arrays for them constantly - they can be quite small so it can be very wasteful. About 0.4% of GPU thread in SMO, but was a bit higher in S/V when I checked. Assumes that non-prefetch command buffers won't be randomly clobbered before they finish executing, though that's probably a safe bet. * Small change while I'm here * Address feedback
2022-11-24GPU: Relax locking on Buffer Cache (#3883)riperiperi
I did this on ncbuffer2 when we were using it for LDN 3, but I noticed that it can apply to the current buffer manager too, and it's an easy performance win. The only buffer access that can come from another thread is the overlap search for buffers that have been unmapped. Everything else, including modifications, come from the main GPU thread. That means we only need to lock the range list when it's being modified, as that's the only time where we'll cause a race with the unmapped handler. This has a significant performance improvements in situations where FIFO is high, like the other two PRs. Joined together they give a nice boost (73.6 master -> 79 -> 83 fps in SMO).
2022-11-24nuget: bump Avalonia from 0.10.15 to 0.10.18 (#3817)dependabot[bot]
Bumps [Avalonia](https://github.com/AvaloniaUI/Avalonia) from 0.10.15 to 0.10.18. - [Release notes](https://github.com/AvaloniaUI/Avalonia/releases) - [Commits](https://github.com/AvaloniaUI/Avalonia/compare/0.10.15...0.10.18) --- updated-dependencies: - dependency-name: Avalonia dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-23ava: Fix JsonSerializer warnings (#3884)Ac_K
Since we move to .NET7, JsonSerializer now needs to have explicit options as arguments, which leads to some warnings in Avalonia project. This is fixed by using our `JsonHelper` class.
2022-11-23Update to LibHac 0.17.0 (#3878)Alex Barney
* Update to LibHac 0.17.0 * Don't clear SD card saves when starting the emulator This was an old workaround for errors that happened when a user's SD card encryption seed changed. SD card saves have been unencrypted for over a year, so we should be fine to remove the workaround.
2022-11-23Stub IFriendService: 1 (Cancel) (#3841)WilliamWsyHK
* Add friend/Cancel. Closes #3824 * Update according to review comments. * Add comment base on request * Update Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/IFriendService.cs Co-authored-by: Ac_K <Acoustik666@gmail.com>
2022-11-23remove redundant logs (#3877)Emmanuel Hansen
2022-11-21Do not update shader state for DrawTextures (#3876)gdkchan
2022-11-20Use upstream unicorn for Ryujinx.Tests.Unicorn (#3771)TSRBerry
* unicorn: Add modified ver of unicorns const gen * unicorn: Use upstream consts These consts were generated from the dev branch of unicorn * unicorn: Split common consts into multiple enums * unicorn: Remove arch prefix from consts * unicorn: Add new windows dll Windows 10 - MSVC x64 shared build * unicorn: Use absolute path for const generation * unicorn: Remove fspcr patch * unicorn: Fix using the wrong file extension For some reason _NativeLibraryExtension evaluates to ".so" even on Windows. * unicorn: Add linux shared object again * unicron: Add DllImportResolver * unicorn: Try to import unicorn using an absolute path * unicorn: Add clean target * unicorn: Replace IsUnicornAvailable() methods * unicorn: Skip tests instead of silently passing them if unicorn is missing * unicorn: Write error message to stderr * unicorn: Make Interface static * unicron: Include prefixed unicorn libs (libunicorn.so) Co-authored-by: merry <git@mary.rs> * unicorn: Add lib prefix to shared object for linux Co-authored-by: merry <git@mary.rs>
2022-11-20Reword the description of the 6GB expand DRAM hack to be less tantalizing ↵EmulationFanatic
(#3870) * Reword the hack to something less tantalizing * Address feedback
2022-11-19Unsubscribe MemoryUnmappedHandler even when GPU channel is destroyed (#3872)gdkchan
2022-11-19Fix shader cache on Vulkan when geometry shaders are inserted (#3868)gdkchan
2022-11-18Move gl_Layer from vertex to geometry if GPU does not support it on vertex ↵gdkchan
(#3866) * Move gl_Layer from vertex to geometry if GPU does not support it on vertex * Shader cache version bump * PR feedback
2022-11-18Vulkan: Clear dummy texture to (0,0,0,0) on creation (#3867)riperiperi
This might fix an issue with AMD gpus on linux where the data could contain random garbage data. On the switch, it always samples as 0.
2022-11-18Gpu: Fix thread safety of ReregisterRanges (#3865)riperiperi
A quick fix to prevent reading the wrong value of Count when reregistering ranges for a new target buffer. Buffer flushes from another thread can modify the range list when the lock isn't active, which can change the count. This prevents some crashes in Pokemon Scarlet/Violet. It's probably likely that buffer migration during flush is causing some other issues in this game, but this at least prevents the crashing.
2022-11-18Vulkan: Don't create preload command buffer outside a render pass (#3864)riperiperi
* Vulkan: Don't create preload buffer outside a render pass The preload command buffer is used to avoid render pass splits and barriers when updating buffer data. However, when a render pass is not active (for example, at the start of a pass, or during compute invocations) buffer uploads can be performed at any time, so the optimization isn't as useful. This PR makes it so that the preload command buffer is only used for buffer updates outside of a render pass. It's still used for textures as I don't want to shake things up right now regarding how the preload buffer is obtained before some other changes, and texture updates are a lot rarer anyways. Improves performance slightly in Pokemon Scarlet/Violet (43 -> 48), as it was switching to compute, writing a bunch of buffers inline, then dispatching, then flushing commands... It uses 1 command buffer instead of 2 every time it does this now. Maybe it would be nice to find a faster way to sync without creating so many command buffers in a short period of time. * Address feedback
2022-11-18Prune ForceDirty and CheckModified caches on unmap (#3862)riperiperi
* Prune ForceDirty and CheckModified caches on unmap Since we're now using this for modified checks on the HLE indirect draw method, I'm worried that leaving these to forever gather cache entries isn't the best idea for performance in the long term, and it could keep old buffer objects alive for longer than they should be. This PR adds the ability to prune invalid entries before checking these caches, and queues it whenever gpu memory is unmapped. It also aligns modified checks to the page size, as I figured it would be possible for a huge number of overlapping over a game's runtime. This prevents Super Mario Odyssey from having 10s of thousands of entries in the modified cache in Metro Kingdom, and them duplicating when entering and leaving a building (should be cleared, as they were unmapped). * Address Feedback
2022-11-18am: Stub GetSaveDataSizeMax (#3857)TSRBerry
* am: Stub GetSaveDataSizeMax() * am: Remove todo comment for GetSaveDataSizeMax() * am: saveDataSize & journalDataSize should be of type long * am: Add explanation for returning default values in GetSaveDataSizeMax()
2022-11-18Use ReadOnlySpan<byte> compiler optimization in more places (#3853)Berkan Diler
* Use ReadOnlySpan<byte> compiler optimization in more places * Revert changes in ShaderBinaries.cs * Remove unused using; * Use ReadOnlySpan<byte> compiler optimization in more places
2022-11-18Allow _volatile to be set from MultiRegionHandle checks again (#3830)riperiperi
* Allow _volatile to be set from MultiRegionHandle checks again Tracking handles have a `_volatile` flag which indicates that the resource being tracked is modified every time it is used under a new sequence number. This is used to reduce the time spent reprotecting memory for tracking writes to commonly modified buffers, like constant buffers. This optimisation works by detecting if a buffer is modified every time a check happens. If a buffer is checked but it is not dirty, then that data is likely not modified every sequence number, and should use memory protection for write tracking. If the opposite is the case all the time, it is faster to just assume it's dirty as we'd just be wasting time protecting the memory. The new MultiRegionBitmap could not notify handles that they had been checked as part of the fast bitmap lookup, so bindings larger than 4096 bytes wouldn't trigger it at all. This meant that they would be subject to a ton of reprotection if they were modified often. This does mean there are two separate sources for a _volatile set: VolatileOrDirty + _checkCount, and the bitmap check. These shouldn't interfere with each other, though. This fixes performance regressions from #3775 in Pokemon Sword, and hopefully Yu-Gi-Oh! RUSH DUEL: Dawn of the Battle Royale. May affect other games. * Fix stupid mistake
2022-11-18SPIR-V: Fix unscaling helper not being able to find Array textures (#3863)riperiperi
The type in the `texOp` in the textureSize instruction doesn't have the exact type on SPIR-V (for example, it is missing the Array flag). This PR gives it the proper type before giving it to the unscaling helper. This fixes the ground textures being broken on Pokemon Scarlet/Violet when scaling. It wasn't finding the texture, so the descriptor index it provided was -1...
2022-11-17GPU: Eliminate CB0 accesses when storage buffer accesses are resolved (#3847)riperiperi
* Eliminate CB0 accesses Still some work to do, decouple from hle? * Forgot the important part somehow * Fix and improve alignment test * Address Feedback * Remove some complexity when checking storage buffer alignment * Update Ryujinx.Graphics.Shader/Translation/Optimizations/GlobalToStorage.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2022-11-17ci: Clean up Actions leftovers (#3859)Mary-nyan
As title say. Fix Avalonia build versions for PRs. Also ensure that the --self-contained doesn't warn at build.
2022-11-17Capitalization to be consistent (#3860)Matthew Wells
Thread ID Register, Floating-point Control Register, and Floating-point Status Register all had Register capitalized, so the Register in Processor State register should be capitalized.
2022-11-17Allow to start Ryujinx in wayland environment (#3516)Alberto Fanjul
PrimaryMonitor is only available on X11 At some point it will be deprecated, this change support wayland
2022-11-17Fix Fedora support (#3815)Mary-nyan
For some reasons, my fresh installation of Fedora 36 (KDE) doesn't have a symlink for libX11.so. This commit fixes this by trying to import the library with its major version or fallback to the normal way.
2022-11-16Prevent raw Unicode control codes from showing on software keyboard applet. ↵Logan Stromberg
(#3845) * Revert "Add support for releasing a semaphore to DmaClass (#2926)" This reverts commit 521a07e6125d3a5d9781512639387a9be5f09107. * Revert "Revert "Add support for releasing a semaphore to DmaClass (#2926)"" This reverts commit ec8a5fd05362f04cc77436ee3e45a9188777f75e. * Strip non-visible control codes from strings before they are sent to the software keyboard to prevent ugly unicode blocks from being shown on the UI. * remove debugging junk * Initialize stringbuilder capacity at the start to prevent resizing (a tiny tiny microoptimization) * Update remarks documentation. Remove unneeded imports. * Removing a test that's actually just redundant Co-authored-by: Logan Stromberg <lostromb@microsoft.com>
2022-11-16Update units of memory from decimal to binary prefixes (#3716)Wunk
`MB` and `GB` can either be interpreted as having base-10 units, or base-2. `MiB` and `GiB` removes this discrepancy so that units of memory are always interpreted using base-2 units.
2022-11-16Use new C# 11 u8 string literals (#3854)Berkan Diler
2022-11-16Make use of Random.Shared (#3852)Berkan Diler