Commit graph

2882 commits

Author SHA1 Message Date
riperiperi
cdbb624d6e Update performance mode when docked mode changes. (#1696) 2024-02-22 19:15:19 -05:00
gdkchan
42a3d5bc24 Do not report unmapped pages as dirty (#1672)
* Do not report unmapped pages as dirty

* Make tests pass again

* PR feedback
2024-02-22 19:15:19 -05:00
riperiperi
b5329b93c9 Size hints for copy regions and viewport dimensions to avoid data loss (#1686)
* Size hints for copy regions and viewport dimensions to avoid data loss

* Reword comment.

* Use info for the rule rather than calculating aligned size.

* Reorder min/max, remove spaces
2024-02-22 19:15:19 -05:00
gdkchan
af62d3260b Implement ATOM shader instruction (#1687)
* Implement ATOM shader instruction

* Fix reduction type decoding
2024-02-22 19:15:19 -05:00
gdkchan
55cfb97c13 Simplify logic for bindless texture handling (#1667)
* Simplify logic for bindless texture handling

* Nits
2024-02-22 19:15:19 -05:00
Ac_K
ef64b7ad1f apm/am: Refactoring/Unstub services (#1662)
* apm: Refactoring/Unstub service

This PR implement some IPC calls of apm service:
- nn::apm::IManager is fully implemented.
- nn::apm::ISession is fully implemented (close #1633).
- nn::apm::ISystemManager is partially implemented.

nn::appletAE::ICommonStateGetter have some calls which are just a layer of apm IPC calls. What we did in some calls was wrong, it's fixed now!

Everything is checked with RE.

* abstract Apm *Server as Thog requested

* abstract ISession and fix other classes

* Address gdkchan feedback

* Fix class

* Fix Logging
2024-02-22 19:15:19 -05:00
gdkchan
6254881097 Use explicit buffer and texture bindings on shaders (#1666)
* Use explicit buffer and texture bindings on shaders

* More XML docs and other nits
2024-02-22 19:15:19 -05:00
riperiperi
d4f14b456c Synchronize Rasterizer State before Clear (#1680) 2024-02-22 19:15:19 -05:00
riperiperi
42539db295 Only report that GPU commands are available when the queue is not empty. (#1656)
* Only report that commands are available when the queue is not empty.

* Address Feedback

Co-authored-by: FICTURE7 <FICTURE7@gmail.com>

Co-authored-by: FICTURE7 <FICTURE7@gmail.com>
2024-02-22 19:15:19 -05:00
EmulationFanatic
4287751989 Update game compatibility list info in README.md (#1675)
* Update game compatibility list info in README.md

* clarity on playable games
2024-02-22 19:15:19 -05:00
Ac_K
247c677f26 Loaders: Log extra NSO informations (#1661)
NSO files can contains useful informations who aren't currently logged.
This PR fix that by logging Module name, Libraries and SDK Version when they are available.
2024-02-22 19:15:19 -05:00
Mary
f720d8a90b updater: Ignore first commandline argument when passing commandline to updated binary (#1674)
Fix a regression caused by #1643.
2024-02-22 19:15:19 -05:00
gdkchan
eb86433ffb Support single precision contants for double precision operations (#1673) 2024-02-22 19:15:19 -05:00
riperiperi
91ca9aa34c Do not align sizes for buffer texture targets. (#1671)
This should fix a random crash in Hyrule Warriors, and potentially other games that use buffer textures.
2024-02-22 19:15:19 -05:00
gdkchan
02f2f03bc3 Correct BPP of buffer to texture copies (#1670) 2024-02-22 19:15:19 -05:00
gdkchan
1097d33518 Separate zeta from color formats (#1647) 2024-02-22 19:15:19 -05:00
FICTURE7
91f543a8f9 Fix LiveInterval.Split (#1660)
Before when splitting intervals, the end of the range would be included
in the split check, this can produce empty ranges in the child split.

This in turn can affect spilling decisions since the child split will
have a different start position and this empty range will get a register
and move to the active set for a brief moment.

For example:

  A = [153, 172[; [1899, 1916[; [1991, 2010[; [2397, 2414[; ...

  Split(A, 1916)

  A0 = [153, 172[; [1899, 1916[
  A1 = [1916, 1916[; [1991, 2010[; [2397, 2414[; ...
2024-02-22 19:15:19 -05:00
riperiperi
8f749f510e Add seamless cubemap flag in sampler parameters. (#1658)
* Add seamless cubemap flag in sampler parameters.

* Check for the extension
2024-02-22 19:15:18 -05:00
riperiperi
913d1ffbe0 Support res scale on images, correctly blacklist for SUST, move logic out of backend. (#1657)
* Support res scale on images, correctly blacklist for SUST, move logic
out of backend.

* Fix Typo
2024-02-22 19:15:18 -05:00
gdkchan
be5a83540d Support 3D BC4 and BC5 compressed textures (#1655)
* Support 3D BC4 and BC5 compressed textures

* PR feedback

* Fix some typos
2024-02-22 19:15:18 -05:00
gdkchan
8e59c5c1bb Fix compressed to non-compressed texture copy size (#1649) 2024-02-22 19:15:18 -05:00
gdkchan
2ebf0ad310 Remove unused texture and sampler pool invalidation code (#1648) 2024-02-22 19:15:18 -05:00
CeruleanSky
08ad8372fc Preserve command line arguments when updater restarts Ryujinx (#1643)
Command line arguements are not preserved by the updater, and this causes an issue when the updater restarts Ryujinx in portable mode as it will create/use/modify its default directory instead.

This simple pull addresses the first part of #1594 

As far as the second part of the issue, where the updater perhaps overzealously deletes everything but log files and folders, which causes problems in portable installs with a user subfolder or something else inside the Ryujinx folder. 

Perhaps an UpdateList.txt containing a list of files that the updater deletes is included in the ryujinx.zip/tar.gz/etc and placed in the upacked directory for the updater to use upon the next upgrade.

The build system can run something like `forfiles /s /m *.txt /c "cmd /c echo @relpath"` or the correct command for the OS and include it in the distribution, or it could be generated by the updater itself.
2024-02-22 19:15:18 -05:00
gdkchan
0905ce132d Scale texture resolution before sending to backend (#1646)
* Work

* Propagate scale factor to copy temp. Not really needed, just here for consistency

* PR feedback
2024-02-22 19:15:18 -05:00
riperiperi
a1814ee43c Add scaling for Texture2DArray when using TexelFetch. (#1645)
* Add scaling for Texture2DArray when using TexelFetch.

* Should only really trigger for Texture2D. (do not emit texelfetch for
TextureBufferArray(?) and Texture1DArray)

* Address nit.
2024-02-22 19:15:18 -05:00
gdkchan
725ae83560 Avoid sampler conflicts on bindless samplers with the same name (#1642) 2024-02-22 19:15:18 -05:00
emmauss
8f3d1dfb92 Motion Fixes (#1589)
* fix stalling when server is offline

* add retry timer to fail server connections, fix alt slot number

* fix alt slot key issue

* fix crash when saving controller config with empty fields

* code fixes

* add index check in motion hid update, made HandleResponse async

Co-authored-by: Emmanuel <nhv3@localhost.localdomain>
2024-02-22 19:15:18 -05:00
gdkchan
f74c05fa0f Fix vertex buffer handle null check (#1638) 2024-02-22 19:15:18 -05:00
gdkchan
04f60adaf2 Fix transform feedback errors caused by host pause/resume and multiple uses (#1634)
* Fix transform feedback errors caused by host pause/resume

* Fix TFB being used as something else issue with copies

* This is supposed to be StreamCopy
2024-02-22 19:15:18 -05:00
gdkchan
89e98e8c9c Improve the speed of redundant ASTC texture data updates (#1636) 2024-02-22 19:15:18 -05:00
gdkchan
109c253f6e Implement CAL and RET shader instructions (#1618)
* Add support for CAL and RET shader instructions

* Remove unused stuff

* Fix a bug that could cause the wrong values to be passed to a function

* Avoid repopulating function id dictionary every time

* PR feedback

* Fix vertex shader A/B merge
2024-02-22 19:15:18 -05:00
gdkchan
1aab3f1218 Fix shader image load/store array index register (#1637)
* Fix shader image load/store array index register

* Y should come before the array index
2024-02-22 19:15:18 -05:00
gdkchan
8a1ec56496 Get rid of Reflection.Emit dependency on CPU and Shader projects (#1626)
* Get rid of Reflection.Emit dependency on CPU and Shader projects

* Remove useless private sets

* Missed those due to the alignment
2024-02-22 19:15:18 -05:00
gdkchan
de5d3eedc6 Add missing null check on image binding (#1632) 2024-02-22 19:15:17 -05:00
gdkchan
0de77e981e Fix image binding format (#1625)
* Fix image binding format

* XML doc
2024-02-22 19:15:17 -05:00
riperiperi
0c843c403d Ensure storage is set for Buffer Textures when binding an Image. (#1627) 2024-02-22 19:15:17 -05:00
gdkchan
0e6b0f1342 Fix gl_in being used with built-in variables that are not per-vertex (#1624) 2024-02-22 19:15:17 -05:00
riperiperi
28972489be Memory Read/Write Tracking using Region Handles (#1272)
* WIP Range Tracking

- Texture invalidation seems to have large problems
- Buffer/Pool invalidation may have problems
- Mirror memory tracking puts an additional `add` in compiled code, we likely just want to make HLE access slower if this is the final solution.
- Native project is in the messiest possible location.
- [HACK] JIT memory access always uses native "fast" path
- [HACK] Trying some things with texture invalidation and views.

It works :)

Still a few hacks, messy things, slow things

More work in progress stuff (also move to memory project)

Quite a bit faster now.
- Unmapping GPU VA and CPU VA will now correctly update write tracking regions, and invalidate textures for the former.
- The Virtual range list is now non-overlapping like the physical one.
- Fixed some bugs where regions could leak.
- Introduced a weird bug that I still need to track down (consistent invalid buffer in MK8 ribbon road)

Move some stuff.

I think we'll eventually just put the dll and so for this in a nuget package.

Fix rebase.

[WIP] MultiRegionHandle variable size ranges

- Avoid reprotecting regions that change often (needs some tweaking)
- There's still a bug in buffers, somehow.
- Might want different api for minimum granularity

Fix rebase issue

Commit everything needed for software only tracking.

Remove native components.

Remove more native stuff.

Cleanup

Use a separate window for the background context, update opentk. (fixes linux)

Some experimental changes

Should get things working up to scratch - still need to try some things with flush/modification and res scale.

Include address with the region action.

Initial work to make range tracking work

Still a ton of bugs

Fix some issues with the new stuff.

* Fix texture flush instability

There's still some weird behaviour, but it's much improved without this. (textures with cpu modified data were flushing over it)

* Find the destination texture for Buffer->Texture full copy

Greatly improves performance for nvdec videos (with range tracking)

* Further improve texture tracking

* Disable Memory Tracking for view parents

This is a temporary approach to better match behaviour on master (where invalidations would be soaked up by views, rather than trigger twice)

The assumption is that when views are created to a texture, they will cover all of its data anyways. Of course, this can easily be improved in future.

* Introduce some tracking tests.

WIP

* Complete base tests.

* Add more tests for multiregion, fix existing test.

* Cleanup Part 1

* Remove unnecessary code from memory tracking

* Fix some inconsistencies with 3D texture rule.

* Add dispose tests.

* Use a background thread for the background context.

Rather than setting and unsetting a context as current, doing the work on a dedicated thread with signals seems to be a bit faster.

Also nerf the multithreading test a bit.

* Copy to texture with matching alignment

This extends the copy to work for some videos with unusual size, such as tutorial videos in SMO. It will only occur if the destination texture already exists at XCount size.

* Track reads for buffer copies. Synchronize new buffers before copying overlaps.

* Remove old texture flushing mechanisms.

Range tracking all the way, baby.

* Wake the background thread when disposing.

Avoids a deadlock when games are closed.

* Address Feedback 1

* Separate TextureCopy instance for background thread

Also `BackgroundContextWorker.InBackground` for a more sensible idenfifier for if we're in a background thread.

* Add missing XML docs.

* Address Feedback

* Maybe I should start drinking coffee.

* Some more feedback.

* Remove flush warning, Refocus window after making background context
2024-02-22 19:15:17 -05:00
gdkchan
32c135fc3b Fix LOP3 (cbuf) shader instruction encoding (#1616) 2024-02-22 19:15:17 -05:00
riperiperi
91f491c638 Replace Host FPS with GPU command queue load ("Fifo %") (#1585)
* Replace Host FPS with FIFO%

* Change measurement order. Improve calculation.

Now at 100% when FIFO is blocking game exectution, rather than "0".

* Address feedback (1)

* Remove Host FPS

* FIFO rather than Fifo

* Address Ac_k feedback

* Rebase
2024-02-22 19:15:17 -05:00
LDj3SNuD
ad7ac73905 Add Umaal & Vabd_I, Vabdl_I, Vaddl_I, Vhadd, Vqshrn, Vshll inst.s (slow paths). (#1577)
* Add Umaal & Vabd_I, Vabdl_I, Vaddl_I, Vhadd, Vqshrn, Vshll inst.s (slow paths).

No test provided (i.e. draft).

* Ptc InternalVersion = 1577
2024-02-22 19:15:17 -05:00
gdkchan
3c14befd0b Fix incorrect GPU GL blend func values (#1612) 2024-02-22 19:15:17 -05:00
gdkchan
612132bce5 Fix output component register on pixel shaders (#1613)
* Fix output component register on pixel shaders

* Clean up usings

* Do not advance if no component is enabled for the target, this keeps the previous behavior
2024-02-22 19:15:17 -05:00
gdkchan
df7ebe2e24 Fix error when dual source blend is used (#1610)
* Fix error when dual source blend is used

* Ensure framebuffer
2024-02-22 19:15:17 -05:00
gdkchan
fc9992b230 Implement LEA.HI shader instruction (#1609) 2024-02-22 19:15:17 -05:00
gdkchan
1c7b401fec Add support for shader constant buffer slot indexing (#1608)
* Add support for shader constant buffer slot indexing

* Fix typo
2024-02-22 19:15:16 -05:00
gdkchan
dde784b71e Fix H264 output frame size when decoding videos of different sizes (#1606) 2024-02-22 19:15:16 -05:00
Mary
6c36755704 surfaceflinger: Disable async buffer (#1603)
This fix a mistake I made during my original reimplementation of SurfaceFlinger by disabling async buffer.

This fix a memory corruption on Super Mario All-Stars 3D (Super Mario Sunshine & Super
Mario Galaxy now go ingame).

Thanks to @gdkchan for tracing the memory corruption.
2024-02-22 19:15:16 -05:00
Thog
ff39843389 Rollback the CreateExitDialog function that was lost with auto updater 2024-02-22 19:15:16 -05:00
Xpl0itR
ea9e25baf5 Show confirmation dialog when attempting to close while a game is loaded (#1582) 2024-02-22 19:15:16 -05:00