[VK] Refine VRAM allocation strategy for improved stability and performance
All checks were successful
eden-license / license-header (pull_request) Successful in 21s
All checks were successful
eden-license / license-header (pull_request) Successful in 21s
These adjustments enhance memory management, While increasing shader performance across all GPU types, including iGPUs. This commit fixes a bug in Super Mario Odyssey where loading into a new area or pausing the game Would cause the whole game to slow down (Most noticable on RDNA 2 GPUs like the Steam Deck) Thank you to all of our testers for helping eliminate this bug, And thank you to Camille and Zephyron for adressing this in Citron.
This commit is contained in:
parent
9fae048a5a
commit
2aff940c41
1 changed files with 4 additions and 4 deletions
|
@ -1378,13 +1378,13 @@ void Device::CollectPhysicalMemoryInfo() {
|
|||
device_access_memory += mem_properties.memoryHeaps[element].size;
|
||||
}
|
||||
if (!is_integrated) {
|
||||
const u64 reserve_memory = std::min<u64>(device_access_memory / 8, 1_GiB);
|
||||
const u64 reserve_memory = std::min<u64>(device_access_memory / 4, 2_GiB);
|
||||
device_access_memory -= reserve_memory;
|
||||
|
||||
if (Settings::values.vram_usage_mode.GetValue() != Settings::VramUsageMode::Aggressive) {
|
||||
// Account for resolution scaling in memory limits
|
||||
const size_t normal_memory = 6_GiB;
|
||||
const size_t scaler_memory = 1_GiB * Settings::values.resolution_info.ScaleUp(1);
|
||||
const size_t normal_memory = 8_GiB;
|
||||
const size_t scaler_memory = 2_GiB * Settings::values.resolution_info.ScaleUp(1);
|
||||
device_access_memory =
|
||||
std::min<u64>(device_access_memory, normal_memory + scaler_memory);
|
||||
}
|
||||
|
@ -1393,7 +1393,7 @@ void Device::CollectPhysicalMemoryInfo() {
|
|||
}
|
||||
const s64 available_memory = static_cast<s64>(device_access_memory - device_initial_usage);
|
||||
device_access_memory = static_cast<u64>(std::max<s64>(
|
||||
std::min<s64>(available_memory - 8_GiB, 4_GiB), std::min<s64>(local_memory, 4_GiB)));
|
||||
std::min<s64>(available_memory - 4_GiB, 6_GiB), std::min<s64>(local_memory, 6_GiB)));
|
||||
}
|
||||
|
||||
void Device::CollectToolingInfo() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue