diff options
| author | 2024-02-22 11:31:17 -0600 | |
|---|---|---|
| committer | 2024-02-22 11:31:17 -0600 | |
| commit | 984396a21ae8e82378b41f61f4f6a9745cde250a (patch) | |
| tree | 10488a984d58f26cf791b1ad67d2a0223ba28163 /src/video_core | |
| parent | Merge pull request #13075 from liamwhite/mali-having-a-bad-time (diff) | |
| parent | vulkan_device: don't use fixed cap for memory limits (diff) | |
| download | yuzu-984396a21ae8e82378b41f61f4f6a9745cde250a.tar.gz yuzu-984396a21ae8e82378b41f61f4f6a9745cde250a.tar.xz yuzu-984396a21ae8e82378b41f61f4f6a9745cde250a.zip | |
Merge pull request #13001 from liamwhite/scaled-availability
vulkan_device: don't use fixed cap for memory limits
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index d7216d349..b94924a58 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -1297,10 +1297,6 @@ u64 Device::GetDeviceMemoryUsage() const { | |||
| 1297 | } | 1297 | } |
| 1298 | 1298 | ||
| 1299 | void Device::CollectPhysicalMemoryInfo() { | 1299 | void Device::CollectPhysicalMemoryInfo() { |
| 1300 | // Account for resolution scaling in memory limits | ||
| 1301 | const size_t normal_memory = 6_GiB; | ||
| 1302 | const size_t scaler_memory = 1_GiB * Settings::values.resolution_info.ScaleUp(1); | ||
| 1303 | |||
| 1304 | // Calculate limits using memory budget | 1300 | // Calculate limits using memory budget |
| 1305 | VkPhysicalDeviceMemoryBudgetPropertiesEXT budget{}; | 1301 | VkPhysicalDeviceMemoryBudgetPropertiesEXT budget{}; |
| 1306 | budget.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT; | 1302 | budget.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT; |
| @@ -1331,7 +1327,15 @@ void Device::CollectPhysicalMemoryInfo() { | |||
| 1331 | if (!is_integrated) { | 1327 | if (!is_integrated) { |
| 1332 | const u64 reserve_memory = std::min<u64>(device_access_memory / 8, 1_GiB); | 1328 | const u64 reserve_memory = std::min<u64>(device_access_memory / 8, 1_GiB); |
| 1333 | device_access_memory -= reserve_memory; | 1329 | device_access_memory -= reserve_memory; |
| 1334 | device_access_memory = std::min<u64>(device_access_memory, normal_memory + scaler_memory); | 1330 | |
| 1331 | if (Settings::values.vram_usage_mode.GetValue() != Settings::VramUsageMode::Aggressive) { | ||
| 1332 | // Account for resolution scaling in memory limits | ||
| 1333 | const size_t normal_memory = 6_GiB; | ||
| 1334 | const size_t scaler_memory = 1_GiB * Settings::values.resolution_info.ScaleUp(1); | ||
| 1335 | device_access_memory = | ||
| 1336 | std::min<u64>(device_access_memory, normal_memory + scaler_memory); | ||
| 1337 | } | ||
| 1338 | |||
| 1335 | return; | 1339 | return; |
| 1336 | } | 1340 | } |
| 1337 | const s64 available_memory = static_cast<s64>(device_access_memory - device_initial_usage); | 1341 | const s64 available_memory = static_cast<s64>(device_access_memory - device_initial_usage); |