diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2024-02-06 16:25:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-06 16:25:03 +0100 |
commit | c10e720ba9cb979577b3af53adb1347f13ec4ad5 (patch) | |
tree | 45094c231d85f9ab51ffe8299cf893affb4e7be8 /src/core/hle/service/nvdrv | |
parent | Merge pull request #12928 from german77/motion-mp (diff) | |
parent | MemoryManager: Reduce the page table size based on last big page address. (diff) | |
download | yuzu-c10e720ba9cb979577b3af53adb1347f13ec4ad5.tar yuzu-c10e720ba9cb979577b3af53adb1347f13ec4ad5.tar.gz yuzu-c10e720ba9cb979577b3af53adb1347f13ec4ad5.tar.bz2 yuzu-c10e720ba9cb979577b3af53adb1347f13ec4ad5.tar.lz yuzu-c10e720ba9cb979577b3af53adb1347f13ec4ad5.tar.xz yuzu-c10e720ba9cb979577b3af53adb1347f13ec4ad5.tar.zst yuzu-c10e720ba9cb979577b3af53adb1347f13ec4ad5.zip |
Diffstat (limited to 'src/core/hle/service/nvdrv')
-rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp index e6646ba04..68fe38874 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp @@ -123,6 +123,8 @@ NvResult nvhost_as_gpu::AllocAsEx(IoctlAllocAsEx& params) { vm.va_range_end = params.va_range_end; } + const u64 max_big_page_bits = Common::Log2Ceil64(vm.va_range_end); + const auto start_pages{static_cast<u32>(vm.va_range_start >> VM::PAGE_SIZE_BITS)}; const auto end_pages{static_cast<u32>(vm.va_range_split >> VM::PAGE_SIZE_BITS)}; vm.small_page_allocator = std::make_shared<VM::Allocator>(start_pages, end_pages); @@ -132,8 +134,8 @@ NvResult nvhost_as_gpu::AllocAsEx(IoctlAllocAsEx& params) { static_cast<u32>((vm.va_range_end - vm.va_range_split) >> vm.big_page_size_bits)}; vm.big_page_allocator = std::make_unique<VM::Allocator>(start_big_pages, end_big_pages); - gmmu = std::make_shared<Tegra::MemoryManager>(system, 40, vm.big_page_size_bits, - VM::PAGE_SIZE_BITS); + gmmu = std::make_shared<Tegra::MemoryManager>(system, max_big_page_bits, vm.va_range_split, + vm.big_page_size_bits, VM::PAGE_SIZE_BITS); system.GPU().InitAddressSpace(*gmmu); vm.initialised = true; |