Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rsx/vk: Implement dynamic sized memory heaps #6972

Merged
merged 7 commits into from
Nov 10, 2019
Merged

Conversation

kd-11
Copy link
Contributor

@kd-11 kd-11 commented Nov 9, 2019

Makes the data upload heaps growable which should avoid running out of memory. The old approach was that if the runtime did not predict running out of memory early enough, the allocator would crash with a "working buffer not big enough" error. Now, if there is an out-of-memory event, the heap is garbage collected and a new one takes its place transparently. The last commit in the sequence drastically lowers memory allocation sizes to trigger the out-of-memory condition easier in sensitive games and will be tweaked before merge.

Fixes #3343

@kd-11
Copy link
Contributor Author

kd-11 commented Nov 9, 2019

NOTE: My comment in the description was maybe not clear enough, performance loss may happen with the current setup, but that is only because I made allocations too small on purpose for testing. More concerned with stability or lack thereof for the moment.

@Silanda
Copy link

Silanda commented Nov 9, 2019

Seems to fix Bayonetta.

@kd-11 kd-11 force-pushed the rsx_volatile branch 2 times, most recently from 1f74c53 to f8d9c72 Compare November 10, 2019 09:53
@kd-11 kd-11 changed the title [TESTERS NEEDED] rsx/vk: Implement dynamic sized memory heaps rsx/vk: Implement dynamic sized memory heaps Nov 10, 2019
- The heaps will grow as desired, no need to overallocate to cater to
the most resource-hungry games
- The spec does not guarantee that queries are initialized. In fact, it
now says all queries must be reset before they are used for the first
time.
- Avoid referencing the old buffer in stale views. Status can be set
globally if requested during heap creation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Working buffer not big enough on several games with Vulkan
2 participants