mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-18 13:21:09 +00:00
vk: Cleaner approach to object lifetime management
This commit is contained in:
parent
872aa2b358
commit
27349c5c69
@ -190,28 +190,33 @@ namespace vk
|
||||
return false;
|
||||
}
|
||||
|
||||
if (rtt->resolve_surface && memory_pressure >= rsx::problem_severity::moderate)
|
||||
{
|
||||
// We do not need to keep resolve targets around.
|
||||
vk::get_resource_manager()->dispose(rtt->resolve_surface);
|
||||
}
|
||||
|
||||
if (rtt->frame_tag >= last_finished_frame)
|
||||
{
|
||||
// RTT itself still in use by the frame.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!rtt->old_contents.empty())
|
||||
{
|
||||
rtt->clear_rw_barrier();
|
||||
}
|
||||
|
||||
if (rtt->resolve_surface && memory_pressure >= rsx::problem_severity::moderate)
|
||||
{
|
||||
// We do not need to keep resolve targets around.
|
||||
// TODO: We should surrender this to an image cache immediately for reuse.
|
||||
vk::get_resource_manager()->dispose(rtt->resolve_surface);
|
||||
}
|
||||
|
||||
switch (memory_pressure)
|
||||
{
|
||||
case rsx::problem_severity::low:
|
||||
return (rtt->unused_check_count() >= 2);
|
||||
case rsx::problem_severity::moderate:
|
||||
case rsx::problem_severity::severe:
|
||||
return (rtt->unused_check_count() >= 1);
|
||||
case rsx::problem_severity::severe:
|
||||
case rsx::problem_severity::fatal:
|
||||
// We're almost dead anyway. Remove forcefully.
|
||||
rtt->clear_rw_barrier();
|
||||
vk::get_resource_manager()->dispose(rtt);
|
||||
return true;
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user