Metal: Residency sets and barriers - #46
Conversation
9f1a08c to
c501f8e
Compare
4c4063e to
736e045
Compare
234c89c to
2053cb4
Compare
a2e0d7d to
8bbcc86
Compare
8bbcc86 to
164dfd4
Compare
Co-authored-by: Isaac Marovitz <isaacryu@icloud.com>
Co-authored-by: Isaac Marovitz <isaacryu@icloud.com>
164dfd4 to
2e983a4
Compare
|
Getting this when using it via RT64 and Zelda:
|
Dealing with 32 set limit per command buffer
Updated to only use residency sets on large descriptor sets, to avoid hitting limit. |
dcvz
left a comment
There was a problem hiding this comment.
LGTM 👍 works on Zelda and left one small comment
DarioSamo
left a comment
There was a problem hiding this comment.
Spotted some race conditions that should be addressed.
d559303 to
f3b0f9a
Compare
|
Addressed the locking concerns. |
* Metal: Residency sets Co-authored-by: Isaac Marovitz <isaacryu@icloud.com> * Metal: Manual barriers Co-authored-by: Isaac Marovitz <isaacryu@icloud.com> * Metal: Use residency set only for large descriptor sets Dealing with 32 set limit per command buffer * Metal: Cache supportsResidencySets and fix up bufferDeviceAddress capability. * Metal: Lock accesses to gpuAddressableResources * Metal: Add missing nullptr init --------- Co-authored-by: Isaac Marovitz <isaacryu@icloud.com>
Based on #25, plus:
useResidencySetandcommitcalls on residency set.I've tested this with UnleashedRecomp and MarathonRecomp and seem to be working okay with my changes added.
EDIT: Fixes #10 (not directly but makes it not necessary).