vk: Cleaner approach to object lifetime management

This commit is contained in:
kd-11 2023-06-07 00:31:54 +03:00 committed by kd-11
parent 872aa2b358
commit 27349c5c69
1 changed files with 13 additions and 8 deletions

View File

@ -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: