lynxnb
dba191d2dc
Fix deadlock on settings in PresentationEngine
after callback
...
Accessing the settings class during the execution of the `OnChangedCallback` results in a deadlock, as accesses to values are protected by a mutex. Instead, we now keep a local copy of the relevant settings and update those with the new value.
2023-02-20 21:45:30 +00:00
lynxnb
fc9b34846c
Fix KtSettings JNI usage
...
* Use a global ref for NativeSettings JNI instance
* Always use the JNI env from the JNI call to ensure it's safe to use in the current thread
2023-02-20 21:45:30 +00:00
lynxnb
5b0a397165
Update native settings after toggling frame throttling
2023-02-20 21:45:30 +00:00
Matesic Darko
f850271e2d
toggle DisableFrameThrottling setting by clicking on FPS display
...
s/jSurface/vkSurface
2023-02-20 21:45:30 +00:00
TheASVigilante
3168e8efc0
Address review
2023-02-20 18:17:35 +00:00
TheASVigilante
b780e2b755
Deallocate Unmapped memory pages
...
Reduces memory usage buildup over time, may affect performance.
2023-02-20 18:17:35 +00:00
Billy Laws
7296f8503d
Enable always attempt to enable robustness
2023-02-20 18:01:49 +00:00
Billy Laws
d45f9e4d26
Loosen some texture WaR sync when possible
...
By keeping track of the stages reading the image we can do more fine-grained WaR prevention, as opposed to waiting for all commands to complete.
2023-02-20 18:01:49 +00:00
Billy Laws
6ee8a919e5
Use pipeline barriers, as opposed to an ext dependency for RP barrier
...
Allows for waiting on compute shaders, which are not a graphics stage.
2023-02-20 18:01:49 +00:00
Billy Laws
ee68facc5d
Apply RP barrier masks for every draw, rather than the 1st in RP
...
I missed that addSubpass was only called once-per-subpass, meaning that if a new barrier req was discovered several draws into the RP it wouldn't be applied. Split out barriers into a seperate function to avoid this.
2023-02-20 18:01:49 +00:00
Billy Laws
bb20b145a8
Hash subpass dependencies in RP cache
2023-02-20 18:01:49 +00:00
Billy Laws
99bf7dbb36
Implement usage based implicit renderpass barrier generation
...
Full pipeline barriers between every RP can be extremely expensive on HW, by analysing the inputs and outputs of a draw it's possible to construct a much more optimal barrier that only syncs what is neccessary.
2023-02-20 18:01:49 +00:00
Billy Laws
7a759326b3
Don't break RPs on view pointer changes
...
Sometimes view pointers may change despite the underlying Vulkan image view not actually changing, so use vk::ImageViews for tracking to keep RP breaks to a minimum.
2023-02-20 18:01:49 +00:00
Billy Laws
a02e1a2536
R.I.P. Subpasses
2023-02-20 18:01:49 +00:00
Billy Laws
a47f010653
Add an option to allow CPU writes when fast readback is used
2023-02-20 18:01:49 +00:00
Billy Laws
2d56ed053d
Implement all remaining ASTC formats
2023-02-20 18:01:49 +00:00
Billy Laws
d93c96de83
Fix sign error when decoding bc5s images
...
Using an unsigned loop counter caused an implicit conversion breaking the decoder logic.
2023-02-20 18:01:49 +00:00
Billy Laws
2d97b9fc2c
Keep track of buffer dirtiness within an execution
2023-02-20 18:01:49 +00:00
Billy Laws
6ea1483c9a
Fix a race with multiple threads pushing data into circular queue
...
If the 'end' changes when waiting for data to be consumed our 'waitNext' would be invalid leading to a deadlock.
2023-02-20 18:01:49 +00:00
Billy Laws
f55b135243
Assert on geometry stream usage
2023-02-20 18:01:49 +00:00
Billy Laws
2e64199640
Add host shader replacement and dumping support
...
This is useful for debugging, but shouldn't generally be used as bindings in SPIR-V etc are unstable.
2023-02-20 18:01:49 +00:00
Billy Laws
02786839a5
Flush pipeline after texture uploads
2023-02-20 18:01:49 +00:00
Billy Laws
ffdd50bdf3
Fix geometry and compute shaders on mali GPUs
2023-02-20 18:01:49 +00:00
mk73ds
cb62e15748
Ignore new layer creations instead of replacing previous ones while waiting for proper multiple layers support.
2023-02-18 12:06:37 +00:00
Erwin Spitaler
2855d12f31
quick and dirty implementation for GetFreeSpaceSize
2023-02-18 12:06:18 +00:00
Abandoned Cart
b20c6e9fc4
onBackPressed
-> onBackPressedDispatcher
2023-02-16 14:50:02 +01:00
MrPurple666
bc3c49bc28
Add TIC format: 0x58D24946
...
Cult of the Lamb must be in-game and should fix some textures in Bayonetta 3
Co-authored-by: neogan-bot <neogan-bot@users.noreply.github.com>
2023-02-13 12:10:29 +00:00
PixelyIon
3407f5a6d1
Fix Depth RT layer stride
...
The layer stride provided by the depth register in Maxwell3D needs to be shifted by 2, this caused the stride to be 1/4th of what it needed to be resulting in OOB access.
2023-02-13 12:02:29 +00:00
PixelyIon
df3b961d5d
Fix mipmapped GOB dimensions calculation
...
When calculating mip-level dimensions in terms of GOBs, they need to be divided by 2 while rounding upwards rather than downwards. This fixes corrupted textures and OOB access on lower mip levels across a substantial amount of titles, reducing arbitrary crashes as a result.
2023-02-13 12:02:29 +00:00
Billy Laws
bff232f326
Update edge names
2023-02-07 16:52:33 +00:00
Billy Laws
754a9dfd77
Avoid storing guest shader hash in generated spirv
...
This accidentally broke VK spec and could harm driver caching.
2023-02-07 16:50:46 +00:00
german77
9e1c9caa36
input: Fix motion orientation based on phone orientation
2023-02-07 16:16:41 +00:00
german77
56d43a70c0
Implement SixAxis sensor
2023-02-07 16:16:41 +00:00
lynxnb
bac4ec2977
Update Kotlin + Android dependencies
...
* Update Kotlin to 1.7.21
* Migrate Hilt to Gradle Plugin DSL and use updated package name
* Update dependencies
* Misc cleanup of build scripts
2023-02-06 15:04:20 +01:00
lynxnb
85a711c420
Suppress warnings in AndroidManifest
2023-02-06 15:04:20 +01:00
lynxnb
42e0cc4290
Update build.gradle to remove deprecated properties
2023-02-06 15:04:20 +01:00
PixelyIon
2cdff40bcb
Add debug log for SVC CancelSynchronization
...
This SVC was missing a log which makes it harder to trace issues to it, it has been added to assist with future debugging.
2023-02-05 18:07:11 +05:30
Billy Laws
7f1b6de1fe
Update hades
2023-02-04 23:10:45 +00:00
Billy Laws
94ac457ce0
Ensure mappings are always aligned to big page size when deallocated and
...
mapped
Since we align up when allocating, not doing so when deallocating would result in a gradual buildup of boundary pages that eventually fill the whole address space.
2023-02-04 23:10:45 +00:00
Billy Laws
d659b4f55e
Swap min and max depth when negative scale is used
...
Fixes Super Mario 3D All Stars rendering.
2023-02-04 23:10:45 +00:00
Billy Laws
198e9e8e48
Avoid page faults when using the fallback shader size
...
These occured in some homebrew otherwise.
2023-02-04 23:10:45 +00:00
Billy Laws
10e7e6272a
Pass in pipeline tessellation state to Vulkan
2023-02-04 23:10:45 +00:00
Billy Laws
12c88babd0
Fix address space allocator slow path to avoid OOB
2023-02-04 23:10:45 +00:00
Billy Laws
4a4f6df792
Stub GetBufferHistory transaction
2023-02-04 23:10:45 +00:00
Billy Laws
3795ecceff
Stub IdleTickCount GetInfo result
2023-02-04 23:10:45 +00:00
Billy Laws
3ef84b27c3
Avoid pipeline cache warning
2023-02-04 23:10:45 +00:00
Billy Laws
bb3baa888d
Add a hack to disable shader subgroup shuffles
...
These are about 100x as expensive on adreno than nvidia due to the lack of a dedicated instruction, since some games work fine without them add a hack to disable them.
2023-02-04 23:10:45 +00:00
Billy Laws
568306195f
Prevent Vulkan guest crashes by avoiding intermediate syncpt event signal state
...
The vulkan guest driver doesn't expect a 0xB return code from SyncptEventWait, even though this is valid when an event is being signalled. Just ignore the intermediate state instead as doing so avoids races without causing any more.
2023-02-04 23:10:45 +00:00
Billy Laws
fcb8f2a229
Apply texture shader compiler generated descriptor shifts
...
These were missed on a hades version upgrade.
2023-02-04 23:10:45 +00:00
Billy Laws
bbef006051
Simplify free descriptor set accounting and update ratios
...
Slightly reduces descriptor usage in Breath of The Wild
2023-02-04 23:10:45 +00:00
Billy Laws
5e862cf5f7
Bail out early if the new pipeline key matches that of the current one
...
Prevents the transition cache of some pipelines from getting full of copies of itself in cases where an update happens redundantly.
2023-02-04 23:10:45 +00:00
Billy Laws
3e971d4043
Wait for pipeline compilation to finish before loading the guest
...
The excessive blocking caused by initial compilation happening async to the guest caused issues in some cases, now we have a Vulkan pipeline cache to speed it up we can wait for a full compile before launch without too many issues.
2023-02-04 23:10:45 +00:00
Billy Laws
be6f08cd97
Add debug pipeline statistics recording for finding redundant pipelines
2023-02-04 23:10:45 +00:00
Billy Laws
6333a92b53
Only include active RTs in pipeline state key
...
This was causing a buildup of many redundant pipelines in SMO as a depth-only shader was being called without previous RTs being unbound.
2023-02-04 23:10:45 +00:00
Billy Laws
9d3a9f63d5
Move graphics piplines away from storing hades shader info struct
...
By only using what we need, and mirroring the descriptor structs to allow for much tighter packing (while keeping the same member names) we can reduce pipeline memory to about 1/3 of what it was before.
2023-02-04 23:10:45 +00:00
Billy Laws
dd92cb1536
Implement support for (de)serialising VkPipelineCaches to/from storage
...
Significantly improves launch times in games with many shader combinations, giving an 5x speedup in some cases.
2023-02-04 23:10:45 +00:00
Billy Laws
db173083d7
Update edge credits
2023-02-04 23:10:45 +00:00
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