Commit graph

1282 commits

Author SHA1 Message Date
Xpl0itR
538fba826b
Improvements to input and input configuration in the GUI. ()
* Improvements to input and input configuration in the GUI

* Requested changes

* nits

* more nits
2020-05-03 04:00:53 +02:00
Xpl0itR
5f3558fd51
catch key errors () 2020-05-03 01:43:22 +02:00
Michael Kuklinski
9be4e4c766
Adding .editorconfig so code style can be consistent and localized ()
* Updated all NuGet packages to latest, and updated the framework from .NET Core 3.0 to 3.1.

* Updating appveyor settings for 3.1

Updating appveyor to use the netcoreapp3.1 path instead of 3.0.

* Removing unneeded NuGet package System.Runtime.CompilerServices.Unsafe.

* Removing unused NuGet package SharpFontCore.

* Removing unused NuGet package TimeZoneConverter.Posix

* Cleaning up by adding newline to a csproj.

* Simplfying a NuGet conditional include, and adding a warning disable for an annoying NuGet package.

* Adding .editorconfig so users have a consistent style setting regardless of their local settings.

* I'm not sure if .travis.yml is still used, but I'm updating its 'dotnet' version to the correct SDK.

* Making the runtime version into its own environment variable so it's a bit easier to change in the future.

* Removing OpenTK.NetStandard reference from Ryujinx.Common

* Fixing indentation in Common.csproj

* Updating the README to specify .NET Core 3.1.

* Reverting the update of the GTKSharp package so it doesn't block the PR.
2020-05-03 00:58:58 +02:00
Thog
764891e670
nvservice: add a lock around NvHostEvent and remove release fence on SFv2 ()
* nvservice: add a lock to NvHostEvent

* Disable surface flinger release fence and readd infinite timeout

* FenceAction: Add a timeout of 1 seconds as this shouldn't wait forever anyuway

* surfaceflinger: remove leftovers from the release fence

* Don't allow infinite timeout on syncpoint while printing all timeout for better debugging
2020-05-02 22:47:06 +02:00
VolcaEM
0a3b75ae2b
Add error code for denied internet request in Account ()
InternetRequestDenied (I can't find a better name) was taken from Switchbrew (switchbrew.org/wiki/Error_codes)
Regarding this error, SwitchBrew notes: "IsAnyInternetRequestAccepted with the output from GetClientId returned false."
2020-05-02 14:12:11 +02:00
VolcaEM
8a7c00c39a
Add various error codes to AM ()
* Add various error codes to AM

The error codes were taken from Switchbrew (https://switchbrew.org/wiki/Error_codes)

* TitleID -> TitleId
2020-05-02 13:45:45 +02:00
Thog
81cba3c3df
nvservices: mitigate abort with heavy load on the GPU processing thread ()
* nvservices: mitigate abort with heavy load on the GPU processing thread.

This should fix Mario Tennis and LM3 regressions with syncpoints.

NOTE: Mario Tennis seems to have another issue related to the texture
cache that happens randomly when starting a match.

PS: Also add a debug logger for all known ioctl call to facilitate
debugging and add a missing UpdateMin in EventSignal.

* Address LDj3SNuD's comment

* Address gdkchan's comment
2020-05-01 23:18:42 +02:00
Ficture Seven
71dbb38b9a
Do not compute dominance information when not in SSA () 2020-05-01 23:15:55 +02:00
Thog
a0c06103c9
am: add IsVrModeEnabled ()
* am: stub IsVrMode

Needed by SSBU 7.0.0

* Address Ac_K's comments
2020-05-01 18:51:00 +02:00
Alex Barney
ba7db8ccef
Update to LibHac 0.11.1 ()
- Adds EnumerateDeliveryCacheDirectory to BCAT
2020-05-01 00:11:10 +02:00
Thog
886e42fb19
Use the official JSON parser ()
This remove Utf8son and JsonPrettyPrinter dependencies.

NOTE: the standard JSON parser doesn't support configurable
indentation, as a result, all the pretty printed JSON are indented with 2
spaces.
2020-04-30 14:07:41 +02:00
Alex Barney
7ab3fccd4d
Add BCAT delivery cache support ()
* Initial bcat delivery cache support

* Use LibHac 0.11.0

* Add option to open the BCAT savedata directory
2020-04-30 14:58:19 +10:00
Thog
23170da5a0
audren: implement Renderer Info output informations ()
This implement the rendering information output informations of
RequestUpdate.

This is needed by some games to keep track of the count of update on the
DSP.
2020-04-30 13:03:05 +10:00
riperiperi
c2ac45adc5
Fix depth clamp enable bit, unit scale for polygon offset. ()
Verified with deko3d and opengl driver code.
2020-04-30 11:47:24 +10:00
Patrick Grabensteiner
ec620e2de0
Create log folder if not exists fixes ()
* Create log folder if not exists fixes 

* Fixed Format

Co-authored-by: Patrick Grabensteiner <patrick.grabensteiner@gmx.at>
2020-04-28 03:50:36 +02:00
Thog
486f3163f3
Fix hbl 2.3.1 and hbmenu 3.3.0 ()
* Fix hbl 2.3.1 and hbmenu 3.3.0

* log class: Add ServicePtm

* fix build issue

* do not cast titleId to byte

* Address Ac_K's comment
2020-04-28 11:44:29 +10:00
Xpl0itR
59145acd7c
Revert package include condition () 2020-04-27 23:08:13 +10:00
gdkchan
10a2b9dca3
Fix shadow RAM affecting MME methods () 2020-04-27 08:22:18 +10:00
Thog
3dfa4232f8 Fix building of previous commit 2020-04-25 16:17:22 +02:00
gdkchan
9261ec6bc8
Fix MME shadow RAM implementation () 2020-04-25 23:56:56 +10:00
gdkchan
1c9aba6de1
Fix mode and Reg08.H1 decoding on XMAD instruction () 2020-04-25 23:40:29 +10:00
gdkchan
34d19f381c
Fix texture level offset/size calculation when sparse tile width is > 1 ()
* Fix texture level offset/size calculation when sparse tile width is > 1

* Sparse tile width affects layer size alignment aswell
2020-04-25 23:40:20 +10:00
gdkchan
bcc5b0d21e
Fix kernel memory allocator block coalescing ()
* Fix kernel memory allocator block coalescing

* Fix and move clear bit logic to a separate method
2020-04-25 23:25:22 +10:00
Thog
74f8a9bd79
UI: Implement interactive search on GameTable ()
As I was unable to disable the ctrl + f keybinding, this implement
something to make it works with the default GTK code logic.

Also remove unused _treeView static member.
2020-04-25 23:02:44 +10:00
gdkchan
3cb1fa0e85
Implement texture buffers ()
* Implement texture buffers

* Throw NotSupportedException where appropriate
2020-04-25 23:02:18 +10:00
Xpl0itR
a065dc1626
Log Ryujinx Version, OS Name, CPU Name and RAM size ()
* Log Ryujinx version and OS

* Log total RAM size and CPU name

* Requested changes

* requested change

* jd's requested changes

* jd's requested changes
2020-04-25 23:01:32 +10:00
gdkchan
fe5bb439f1
Do temp constant copy for CompareAndSwap, other improvements to PreAllocator ()
* Do temp constant copy for CompareAndSwap, other improvements to PreAllocator

* Nit
2020-04-25 23:00:54 +10:00
mageven
a728610b40
Implement Constant Color blends ()
* Implement Constant Color blends and init blend states

* Address gdkchan's comments

Also adds Set methods to GpuState

* Fix descriptions of QueryModified
2020-04-25 23:00:43 +10:00
Thog
75ec30c962
SurfaceFlinger: fix SetPreallocatedBuffer correctness ()
Nintendo sets the buffer count in SetPreallocatedBuffer too.

This fix triple buffering on all games and finally fix SSBU flickering.
2020-04-25 12:08:50 +02:00
Thog
fba8651213
ui: Make ExtractSection supports updates ()
This adds update support to the section extractor.
2020-04-23 21:21:32 +02:00
Xpl0itR
72b560d15c
Fix metadata.json JsonParsingException crash ()
* Load defualt metadata if the metadata.json gets corrupt

* Write to disk immediately to decrease the chances of corruption
2020-04-23 14:01:23 +02:00
Thog
cdbb689b80
Add support for dynamic docking/undocking ()
* Add support for dynamic docking/undocking

As SurfaceFlinger is now working more accurately, we can now support
dynamic configuration of docking mode :)

* Simplify a bt the code

* Fix import ordering

* Remove unused argument
2020-04-23 13:59:11 +02:00
Thog
21a0b0ebeb
SurfaceFlinger: Invalid GraphicBuffer in SetPreallocatedBuffer ()
This invalidate the GraphicBuffer on the consumer side when
SetPreallocatedBuffer is called on a buffer slot.

This fix rendering issues on games with a dynamic resolution like Yoshi
Crafted World.
2020-04-22 21:18:53 +02:00
gdkchan
ff86494d68
Remove leftover of debugging code for shader texture format () 2020-04-22 16:02:07 +02:00
gdkchan
6bfe4715f0
Initial conditional rendering support ()
* Initial conditional rendering support

* Properly reset state

* Support conditional modes and skeleton a counter cache for future host conditional rendering

* Address PR feedback
2020-04-22 16:00:11 +10:00
Michael Kuklinski
c46edfab85
Update .NET Core to 3.1, and update NuGet Packages ()
* Updated all NuGet packages to latest, and updated the framework from .NET Core 3.0 to 3.1.

* Updating appveyor settings for 3.1

Updating appveyor to use the netcoreapp3.1 path instead of 3.0.

* Removing unneeded NuGet package System.Runtime.CompilerServices.Unsafe.

* Removing unused NuGet package SharpFontCore.

* Removing unused NuGet package TimeZoneConverter.Posix

* Cleaning up by adding newline to a csproj.

* Simplfying a NuGet conditional include, and adding a warning disable for an annoying NuGet package.

* I'm not sure if .travis.yml is still used, but I'm updating its 'dotnet' version to the correct SDK.

* Making the runtime version into its own environment variable so it's a bit easier to change in the future.

* Removing OpenTK.NetStandard reference from Ryujinx.Common

* Fixing indentation in Common.csproj

* Updating the README to specify .NET Core 3.1.

* Reverting the update of the GTKSharp package so it doesn't block the PR.
2020-04-22 14:13:41 +10:00
Thog
36749c358d
SurfaceFlinger v2 ()
* Rewrite SurfaceFlinger

Reimplement accurately SurfaceFlinger (based on my 8.1.0 reversing of it)

TODO: support swap interval properly and reintroduce disabled "game vsync" support.

* Some fixes for SetBufferCount

* uncomment a test from last commit

* SurfaceFlinger: don't free the graphic buffer in SetBufferCount

* SurfaceFlinger: Implement swap interval correctly

* SurfaceFlinger: Reintegrate Game VSync toggle

* SurfaceFlinger: do not push a fence on buffer release on the consumer side

* Revert "SurfaceFlinger: do not push a fence on buffer release on the consumer side"

This reverts commit 586b52b0bfab2d11f361f4b59ab7b7141020bbad.

* Make the game vsync toggle work dynamically again

* Unregister producer's Binder object when closing layer

* Address ripinperi's comments

* Add a timeout on syncpoint wait operation

Syncpoint aren't supposed to be waited on for more than a second.

This effectively workaround issues caused by not having a channel
scheduling in place yet.

PS: Also introduce Android WaitForever warning about fence being not
signaled for 3s

* Fix a print of previous commit

* Address Ac_K's comments

* Address gdkchan's comments

* Address final comments
2020-04-22 14:10:27 +10:00
gdkchan
03711dd7b5
Implement SULD shader instruction ()
* Implement SULD shader instruction

* Some nits
2020-04-22 09:35:28 +10:00
Cristallix
4738113f29
Suppress warnings from fields never used or never assigned (CS0169 and CS0649) ()
* chore : disable unwanted warnings and minor code cleanup

* chore : remove more warnings

* fix : reorder struct correctly

* fix : restore _isKernel and remove useless comment

* fix : copy/paste error

* fix : restore CallMethod call

* fix : whitespace

* chore : clean using

* feat : remove warnings

* fix : simplify warning removal on struct

* fix : revert fields deletion and code clean up

* fix : re-add RE value

* fix : typo
2020-04-21 07:59:59 +10:00
gdkchan
91fa1debd4
Report more realistic GPU timestamps when FastGpuTime is enabled () 2020-04-20 22:41:07 +10:00
Ficture Seven
ca8745fc8e
Avoid temporaries when pre-allocating Store %x, imm8/16/32 () 2020-04-20 22:40:13 +10:00
Thog
644de99e86
Implement GPU syncpoints ()
* Implement GPU syncpoints

This adds support for GPU syncpoints on the GPU backend & nvservices.

Everything that was implemented here is based on my researches,
hardware testing of the GM20B and reversing of nvservices (8.1.0).

Thanks to @fincs for the informations about some behaviours of the pusher
and for the initial informations about syncpoints.

* syncpoint: address gdkchan's comments

* Add some missing logic to handle SubmitGpfifo correctly

* Handle the NV event API correctly

* evnt => hostEvent

* Finish addressing gdkchan's comments

* nvservices: write the output buffer even when an error is returned

* dma pusher: Implemnet prefetch barrier

lso fix when the commands should be prefetch.

* Partially fix prefetch barrier

* Add a missing syncpoint check in QueryEvent of NvHostSyncPt

* Address Ac_K's comments and fix GetSyncpoint for ChannelResourcePolicy == Channel

* fix SyncptWait & SyncptWaitEx cmds logic

* Address ripinperi's comments

* Address gdkchan's comments

* Move user event management to the control channel

* Fix mm implementation, nvdec works again

* Address ripinperi's comments

* Address gdkchan's comments

* Implement nvhost-ctrl close accurately + make nvservices dispose channels when stopping the emulator

* Fix typo in MultiMediaOperationType
2020-04-19 11:25:57 +10:00
mageven
4960ab85f8
Implement Depth Clamping ()
* Implement Depth Clamping and add misc enums

* Fix formatting
2020-04-17 11:16:49 +10:00
CJ Bok
0a7c6caedf
System Time Offset Implementation ()
* System Time Offset Implementation

* Addressed @Thog's comments

* Addressed JD's comments

* Addressed @Thog's and @AcK77's comments

* formatting correction
2020-04-17 09:18:54 +10:00
Ficture Seven
e4ee61d6c3
Improve V128 ()
* Improve V128

* Use LayoutKind.Sequential instead

* Add As<T>, Get<T> & Set<T>

* Fix CpuTest

* Rename Get<T> & Set<T> to Extract<T> & Insert<T>

* Add XML documentation

* Nit
2020-04-17 08:19:20 +10:00
mageven
dfecbbe1f4
Fix oversight in depth range initialization from PR () 2020-04-16 13:21:58 +10:00
Alex Barney
6a94538b6d
Ensure account save data exists when launching an extracted game ()
Also fix a regression from cecbd256 where the dummy control data wouldn't be used
2020-04-15 10:10:27 +10:00
gdkchan
92cc37e365
Fix negation of HADD2 constant buffer source () 2020-04-15 09:01:26 +10:00
Xpl0itR
ad3d2fb5a9
Implement update loader and log loaded application info ()
* Implement update loader

* Add title version to titlebar and log loaded application info

* nits

* requested changes
2020-04-12 23:02:37 +02:00
Alex Barney
6052aa17f2
Print the result name in SetTerminateResult if possible () 2020-04-12 22:13:23 +10:00