mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-08-12 02:59:51 +00:00
vk: Cleaner approach to object lifetime management
This commit is contained in:
parent
872aa2b358
commit
27349c5c69
1 changed files with 13 additions and 8 deletions
|
@ -190,28 +190,33 @@ namespace vk
|
||||||
return false;
|
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)
|
if (rtt->frame_tag >= last_finished_frame)
|
||||||
{
|
{
|
||||||
// RTT itself still in use by the frame.
|
// RTT itself still in use by the frame.
|
||||||
return false;
|
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)
|
switch (memory_pressure)
|
||||||
{
|
{
|
||||||
case rsx::problem_severity::low:
|
case rsx::problem_severity::low:
|
||||||
return (rtt->unused_check_count() >= 2);
|
return (rtt->unused_check_count() >= 2);
|
||||||
case rsx::problem_severity::moderate:
|
case rsx::problem_severity::moderate:
|
||||||
case rsx::problem_severity::severe:
|
|
||||||
return (rtt->unused_check_count() >= 1);
|
return (rtt->unused_check_count() >= 1);
|
||||||
|
case rsx::problem_severity::severe:
|
||||||
case rsx::problem_severity::fatal:
|
case rsx::problem_severity::fatal:
|
||||||
// We're almost dead anyway. Remove forcefully.
|
// We're almost dead anyway. Remove forcefully.
|
||||||
rtt->clear_rw_barrier();
|
|
||||||
vk::get_resource_manager()->dispose(rtt);
|
vk::get_resource_manager()->dispose(rtt);
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue