mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-20 22:05:12 +00:00
vk: Improve video memory manager to attempt recovery in out of memory situations
This commit is contained in:
parent
4d8de282f9
commit
b0c7ca6d1f
11 changed files with 244 additions and 49 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#include "stdafx.h"
|
||||
#include "VKResourceManager.h"
|
||||
#include "VKGSRender.h"
|
||||
|
||||
namespace vk
|
||||
{
|
||||
|
|
@ -75,4 +76,36 @@ namespace vk
|
|||
g_vmm_memory_usage.clear();
|
||||
g_vmm_allocations.clear();
|
||||
}
|
||||
|
||||
bool vmm_handle_memory_pressure(rsx::problem_severity severity)
|
||||
{
|
||||
if (auto vkthr = dynamic_cast<VKGSRender*>(rsx::get_current_renderer()))
|
||||
{
|
||||
return vkthr->on_vram_exhausted(severity);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void vmm_check_memory_usage()
|
||||
{
|
||||
const auto vmm_load = get_current_mem_allocator()->get_memory_usage();
|
||||
rsx::problem_severity load_severity = rsx::problem_severity::low;
|
||||
|
||||
if (vmm_load > 90.f)
|
||||
{
|
||||
rsx_log.warning("Video memory usage exceeding 90%. Will attempt to reclaim resources.");
|
||||
load_severity = rsx::problem_severity::severe;
|
||||
}
|
||||
else if (vmm_load > 75.f)
|
||||
{
|
||||
rsx_log.notice("Video memory usage exceeding 75%. Will attempt to reclaim resources.");
|
||||
load_severity = rsx::problem_severity::moderate;
|
||||
}
|
||||
|
||||
if (load_severity >= rsx::problem_severity::moderate)
|
||||
{
|
||||
vmm_handle_memory_pressure(load_severity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue