Commit Graph

1799 Commits

Author SHA1 Message Date
PixelyIon a1bf5d27a0 Add information about Skyline Edge to Contributing Guidelines 2023-01-30 20:31:30 +05:30
PabloG02 35617930d5 Fix rebase 2023-01-28 11:57:19 +00:00
PabloG02 8b9d6f79ab Add option to enable/disable shader cache 2023-01-28 11:57:19 +00:00
PixelyIon 8bfda0d84d Fix hole punching in mappings with SVC `UnmapPhysicalMemory`
Certain titles such as Super Smash Bros Ultimate can use SVC `UnmapPhysicalMemory` to punch holes into physical memory mappings, this wasn't handled correctly as we completely deleted the portion after the hole. It has now been fixed which results in these titles which depend on this behavior to work now.
2023-01-23 21:28:59 +00:00
hacobot.dev ff1e62df7a deleted unnecessary convertion 2023-01-23 21:28:49 +00:00
hacobot.dev 75f6f5e31c pull request requested changes 2023-01-23 21:28:49 +00:00
hacobot.dev 7cd13916a3 Main activity is now refreshing when the group checkbox is changed 2023-01-23 21:28:49 +00:00
hacobot.dev b67bfe3848 Added functionality to make optional to group games by format and sort 2023-01-23 21:28:49 +00:00
Billy Laws 6b9be2edd4 Add note about circular queue append contiguosity guarantees 2023-01-20 21:19:04 +00:00
PabloG02 535eafb57a Add Android 13 themed icon 2023-01-20 21:08:33 +00:00
PabloG02 d544ccf5ea Stub INotificationServicesForApplication 2023-01-20 21:08:12 +00:00
PabloG02 2fa5ea451e Stub IPrepoService::SaveReportWithUserOld2 2023-01-20 21:08:12 +00:00
PabloG02 7327cdbde9 Stub some functions in IDeliveryCacheStorageService 2023-01-20 21:08:12 +00:00
PabloG02 c53d99d393 Stub IDeliveryCacheFileService and IDeliveryCacheDirectoryService 2023-01-20 21:08:12 +00:00
PabloG02 299d11d86f Stub IApplicationFunctions::GetNotificationStorageChannelEvent 2023-01-20 21:08:12 +00:00
Billy Laws 7c623f8301 Use a spinlock for thread waiter mutex
Since the waitermutex is only ever locked for a short amount of time, spinning in contention-heavy scenarios ends up quite a bit more efficient than a kernel wait.
2023-01-20 21:07:59 +00:00
Billy Laws e2463b7619 Adjust gpfifo WFI to only do a pipeline barrier 2023-01-20 21:07:59 +00:00
Billy Laws 2b282ece1a Add more fine-grained buffer recreation locking 2023-01-20 21:07:59 +00:00
Billy Laws 85a23e73ba Implement a shared spinlock and use it for GPU VMM 2023-01-20 21:07:59 +00:00
Billy Laws fd5c141dbf Correct GetNpadIrCameraHandle return value 2023-01-20 21:07:59 +00:00
Billy Laws a8b32c3cef Cleanup helper pipeline cache code 2023-01-20 21:07:59 +00:00
Billy Laws 1f99d63a80 Incr transition cache size 2023-01-20 21:07:59 +00:00
Billy Laws 262f92900d Ensure unmapped VMM ranges return an invalid span 2023-01-20 21:07:59 +00:00
Billy Laws 0a608fb4b2 Update to latest hades 2023-01-20 21:07:59 +00:00
Billy Laws 44f6aada18 Always set blend state for all colour attachments 2023-01-20 21:07:59 +00:00
Billy Laws 177925be93 Avoid OOB memory acceses when trying to read OOB TICs
Some games pass in invalid texture handles (0xffff) when they don't need the texture so return the null texture in this case.
2023-01-20 21:07:59 +00:00
Billy Laws d8a4a2b08d Use a spinlock for GPU waiter thread 2023-01-20 21:07:59 +00:00
Billy Laws f1aed86177 Add a workaround for split-mapping shaders
Some games split shaders across multiple mappings and *also* miss the end header, so read a suitably large amount and hope that's enough for now.
2023-01-20 21:07:59 +00:00
Billy Laws 704660bbeb Store render nodes in a linearly allocated linked list
This is much faster in reldebug builds than boost::stable_vector while still providing iterator stability
2023-01-20 21:07:59 +00:00
Billy Laws 326c05a5de Add guest shader replacement and dumping support 2023-01-20 21:07:59 +00:00
Billy Laws 2f6d27e8d7 Rework circular queue locking
Should now be (hopefully) race-free, also switch to a spinlock to avoid any locking overhead.
2023-01-20 21:07:59 +00:00
lynxnb 5d527cb965 Add `CNTFRQ_EL0` workaround value for Exynos 1280 2023-01-15 10:16:01 +00:00
PabloG02 ea0217de47 Add TIC format: 0x78D24952 2023-01-13 18:05:22 +00:00
Abandoned Cart 88b3f371f4 Display a preview of the current profile picture
This removes the need to concatenate the variable multiple times, recycles the scaled bitmap after it has been stored, addresses the Android Studio complaint about that method name, and generates a preview of the current profile image as the preference icon.
2023-01-13 14:28:20 +01:00
lynxnb aa36c591c6 Exclude Home button from controller setup guide 2023-01-11 20:51:18 +00:00
Maccraft123 c3924e0f08 Stub out InlineKeyboard instead of throwing an error 2023-01-11 20:47:39 +00:00
lynxnb 2a421e7146 Run emulation in a separate process for release builds only 2023-01-11 23:38:57 +05:30
lynxnb 950438bf58 Enable `VK_KHR_image_format_list` during device init
`VK_KHR_image_format_list` is a requirement for `VK_KHR_imageless_framebuffer`, which we use.
2023-01-11 23:38:57 +05:30
PixelyIon d39112e9b9 Enable `IApplicationDisplayService::ConvertScalingMode` implementation
The implementation for this service function wasn't added to the service function table. Additionally, the type for the output `ScalingMode` was implicitly `int` as it was unspecified in the `enum class` which has now been corrected to `u64` as it should be.
2023-01-11 23:38:57 +05:30
PixelyIon 45d0558d00 Check for no Vulkan physical devices
Due to broken drivers, it's possible to find no Vulkan physical devices but this can lead to a cryptic segfault. This explicitly checks for it instead and throws an exception which will be emitted into logcat thus can be easily caught.
2023-01-11 23:38:57 +05:30
PixelyIon f882b613bc Fix `.hook` section being allocated without any hooked symbols
Due to the trampoline and save/load context functions, `GetHookSectionSize` returned a non-zero size for when there were no hooked symbols supplied to it. This is problematic as it isn't required and hooking is currently not stable so it can lead to crashes or freezes in certain titles.
2023-01-11 00:13:15 +05:30
PixelyIon 3fa314f6cb Always print thread IDs rather than handles for SVC logs
Handles are rather arbitrary and difficult to reference, as a result, we've moved to thread IDs across the board for logs.
2023-01-11 00:13:15 +05:30
PixelyIon e192d4e5c1 Warn when `RemoveThread` is called on a non-inserted thread 2023-01-11 00:13:15 +05:30
PixelyIon 3a6f205e6f Clear `insertThreadOnResume` in `RemoveThread`
A thread can be paused while it is in a synchronization primitive which will do `RemoveThread`, we need to update the state of `insertThreadOnResume` in this case by clearing it so it isn't incorrectly reinserted on resuming the thread.
2023-01-11 00:13:15 +05:30
PixelyIon 7fef849594 Make `UpdateCore`'s locking `coreMigrationMutex` requirement explicit
`Scheduler::UpdateCore` implicitly depended on `KThread::coreMigrationMutex` being locked during calls to it, this requirement has now been made explicit to avoid confusion.
2023-01-11 00:13:15 +05:30
PixelyIon c4b4532222 Check `waitThread` rather than `waitMutex` during condvar timeouts
When a timeout occurs in `ConditionVariableWait`, we used to check `waitMutex` which is cleared by `MutexUnlock` but when we hit the CAS case in `ConditionVariableSignal` then we don't clear `waitMutex`. It's far more reliable to check `waitThread` as an indication for if the thread has already been unlocked as it's cleared at the start of `ConditionVariableWait` and would implicitly stay cleared in the CAS case while being set in `MutexLock` and being unset in `MutexUnlock`.
2023-01-11 00:13:15 +05:30
PixelyIon 2525bafe06 Consolidate thread yielding in `Scheduler`
There's multiple locations where a thread is yielded in the scheduler and all of them repeat the code of checking for `pendingYield` and signalling with an optional optimization of checking if the thread being yielded is the calling thread.

All this functionality has now been consolidated into `Scheduler::YieldThread` which checks for `pendingYield` and does the calling thread yield optimization. This should lead to better readability and better performance in cases where `UpdatePriority` would signal the calling thread.
2023-01-11 00:13:15 +05:30
PixelyIon 8b973a3de3 Always set `forceYield` for running threads in `PauseThread`
`forceYield` was incorrectly not set when pausing running threads if the thread already had `pendingYield` set. This could lead to cases where `Rotate` would later throw an exception due to it being unset.
2023-01-11 00:13:15 +05:30
PixelyIon 6645692288 Don't block while inserting paused threads
Blocking while inserting a paused thread can lead to deadlocks where the inserting thread later resumes the paused thread.

Co-authored-by: Billy Laws <blaws05@gmail.com>
2023-01-11 00:13:15 +05:30
Billy Laws 643f4cf864 Ensure thread doesn't migrate during `InsertThread`
As we didn't hold `coreMigrationMutex`, the thread could simply migrate during `InsertThread` which would lead to the thread potentially never waking up as it's been inserted on a non-resident core.

Co-authored-by: PixelyIon <pixelyion@protonmail.com>
2023-01-11 00:13:15 +05:30