Commit Graph
20 Commits
Author SHA1 Message Date
jduncanatorandGitHub 9e923b1473 Implement IIrSensorServer GetIrsensorSharedMemoryHandle (#664)
* Implement IIrSensorServer GetIrsensorSharedMemoryHandle

Resolves #620

* Set _irsSharedMem
2019-04-20 12:23:13 +10:00
jduncanatorandGitHub bea73895f5 Implement IIrSensorServer GetNpadIrCameraHandle (#663)
* Implement IIrSensorServer GetNpadIrCameraHandle

Resolves #618

* Throw ArgumentOutOfRange instead of IOE

* Revise for changes in later firmware

Based on RE work from 6.1.0

* Nits
2019-04-20 11:56:55 +10:00
jduncanatorandGitHub af65ed3930 Add missing TextureCubeMapArray texture type entry (#657)
* Add missing TextureCubeMapArray texture type entry

* Duplicate comment from other Create path
2019-04-11 23:19:49 +10:00
jduncanatorandGitHub efebd8f94d Print Guest Stack Trace in ServiceNotImplemented Exception (#650)
* Print Guest Stack Trace in ServiceNotImplemented Exception

* Remove PrintGuestStackTrace

* Print Process Name and PID at the start of guest stack trace
2019-03-15 14:37:54 +11:00
jduncanatorandGitHub dd00a4b62d Update CpuTestMisc.cs (#593) 2019-02-18 15:17:50 +11:00
jduncanatorandGitHub f8a9faa1b9 Config: Correct MulticoreSched casing (#588) 2019-02-16 19:37:22 +11:00
jduncanatorandGitHub fec8e3489d Vi: Implement ConvertScalingMode (#581)
* Vi: Implement ConvertScalingMode

For now, it seems Nintendo just map 1:1 between the two enums.

* Resolve style nits

* Vi: Correct mapping order
2019-02-15 15:47:40 +11:00
jduncanatorandGitHub c734137f41 Audio: Select a shared audio device by default (#574)
* Audio: Select a shared audio device by default

This ensures that a non-raw audio device is selected wherever possible.

* Audio: Resolve libsoundio version mismatch between bindings and binaries

It turns out we were using bindings generated with libsoundio 1.1.0 git source, but the binaries we were using were built from master git source. I've rebuilt both binaries and bindings to ensure they are version matched.

This should resolve all outstanding issues with libsoundio (including the Linux segfault issue, and the "cannot open device" Windows issue).

* Audio: Reformat MarshalExtensions

* Resolve code indentation issues
2019-02-13 12:59:26 +11:00
jduncanatorandgdkchan f73c11744e Config: Resolve config and file log to application directory (#580) 2019-02-12 20:24:11 -03:00
jduncanatorandgdkchan d306115750 Logger and Configuration Refactoring (#573)
* Logging: Refactor log targets into Ryujinx.Common

* Logger: Implement JSON Log Target

* Logger: Optimize Console/File logging targets

Implement a simple ObjectPool to pool up StringBuilders to avoid causing excessive GCing of gen1/2 items when large amounts of log entries are being generated.

We can also pre-determine the async overflow action at initialization time, allowing for an easy optimization in the message enqueue function, avoiding a number of comparisons.

* Logger: Implement LogFormatters

* Config: Refactor configuration file and loading

* Config: Rename to .jsonc to avoid highlighting issues in VSC and GitHub

* Resolve style nits

* Config: Resolve incorrect default key binding

* Config: Also update key binding default in schema

* Tidy up namespace imports

* Config: Update CONFIG.md to reflect new Config file
2019-02-11 09:00:32 -03:00
jduncanatorandgdkchan 1af6c31dc0 Resolve build merge conflict (#559) 2019-01-21 00:04:52 -02:00
jduncanatorandAc_K 8406ec6272 Refactor Ryujinx.Common and HLE Stub Logging (#537)
* Refactor Ryujinx.Common and HLE Stub Logging

* Resolve review comments

* Rename missed loop variable

* Optimize PrintStub logging function

* Pass the call-sites Thread ID through to the logger

* Remove superfluous lock from ConsoleLog

* Process logged data objects in the logger target

Pass the data object all the way to the output logger targets, to allow them to "serialize" this in whatever appropriate format they're logging in.

* Use existing StringBuilder to build the properties string

* Add a ServiceNotImplemented Exception

Useful for printing debug information about unimplemented service calls

* Resolve Style Nits

* Resolve Merge Issues

* Fix typo and align declarations
2019-01-11 01:11:46 +01:00
jduncanatorandgdkchan 9b22e8af5e Normalize all the line endings (#518) 2018-11-29 00:01:19 -02:00
jduncanatorandgdkchan 76e2d48eee GPU: Allow depth textures to be loaded (#511)
Allow depth textures to be loaded when their component types do not match.
2018-11-21 04:27:33 -02:00
jduncanatorandAc_K df5960023e Audio: Track and Call ReleaseCallbacks in the Dummy Audio Output (#508)
We need to signal the guest process when buffers are released to avoid a softlock.
2018-11-19 02:24:15 +01:00
jduncanatorandAc_K 26e09474a9 ContentServices: Handle null LocationEntry Path in VerifyContentType (#506)
When `LocationEntry.ContentPath` is `null`, we can always return `false` as it can't possibly be a valid `ContentType`
2018-11-19 01:20:17 +01:00
jduncanatorandAc_K 5829e36a5c Audio: Properly implements audio fallback for SoundIO (#500)
* Audio: Properly implements audio fallback for SoundIO

Given some drivers have issues with SoundIO (for the time being), this attempts to detect if SoundIO can open the default audio device, and then return false in IsSupported if it can't.

* Audio: Handle the backend disconnected event

libsoundio panics by default when a backend disconnects, this catches that event and gracefully handles it.

* Audio: Fix styling nits

* Audio: Fix nits

Because Ac_K. 😫
2018-11-17 04:35:15 +01:00
jduncanatorandAc_K 8275bc3c08 Implement libsoundio as an alternative audio backend (#406)
* Audio: Implement libsoundio as an alternative audio backend

libsoundio will be preferred over OpenAL if it is available on the machine. If neither are available, it will fallback to a dummy audio renderer that outputs no sound.

* Audio: Fix SoundIoRingBuffer documentation

* Audio: Unroll and optimize the audio write callback

Copying one sample at a time is slow, this unrolls the most common audio channel layouts and manually copies the bytes between source and destination. This is over 2x faster than calling CopyBlockUnaligned every sample.

* Audio: Optimize the write callback further

This dramatically reduces the audio buffer copy time. When the sample size is one of handled sample sizes the buffer copy operation is almost 10x faster than CopyBlockAligned.

This works by copying full samples at a time, rather than the individual bytes that make up the sample. This allows for 2x or 4x faster copy operations depending on sample size.

* Audio: Fix typo in Stereo write callback

* Audio: Fix Surround (5.1) audio write callback

* Audio: Update Documentation

* Audio: Use built-in Unsafe.SizeOf<T>()

Built-in `SizeOf<T>()` is 10x faster than our `TypeSize<T>` helper. This also helps reduce code surface area.

* Audio: Keep fixed buffer style consistent

* Audio: Address styling nits

* Audio: More style nits

* Audio: Add additional documentation

* Audio: Move libsoundio bindings internal

As per discussion, moving the libsoundio native bindings into Ryujinx.Audio

* Audio: Bump Target Framework back up to .NET Core 2.1

* Audio: Remove voice mixing optimizations.

Leaves Saturation optimizations in place.
2018-11-15 03:22:50 +01:00
jduncanatorandgdkchan c1b7340023 Timing: Optimize Timestamp Aquisition (#479)
* Timing: Optimize Timestamp Aquisition

Currently, we make use of Environment.TickCount in a number of places. This has some downsides, mainly being that the TickCount is a signed 32-bit integer, and has an effective limit of ~25 days before overflowing and wrapping around. Due to the signed-ness of the value, this also caused issues with negative numbers. This resolves these issues by using a 64-bit tick count obtained from Performance Counters (via the Stopwatch class). This has a beneficial side effect of being significantly more accurate than the TickCount.

* Timing: Rename ElapsedTicks to ElapsedMilliseconds and expose TicksPerX

* Timing: Some style changes

* Timing: Align static variable initialization
2018-10-28 19:31:13 -03:00
jduncanatorandThomas Guillemard 76a3172f17 Asynchronously log messages to the Console window (#395)
* Logging: Asynchronously log messages to the Console window

Writing to the Console blocks until the write completes. This has the potential to block any code path that logs to the application logger.

By queuing up log messages in an asynchronous queue and returning without blocking, we can speed up code paths that heavily log to the console (for example stubbed services like ServiceHid).

From testing this results in a roughly 8% time decrease between Ryujinx startup and the splash screen in Super Mario Odyssey on my system - 00:03:19.591 down to
00:03:04.354. Depending on your system, YMMV.

* Logging: Resolve code styling issues
2018-09-04 02:15:41 +02:00