diff options
| author | 2019-02-27 23:22:47 +0100 | |
|---|---|---|
| committer | 2019-02-27 17:22:47 -0500 | |
| commit | ef84c70d222eb2b8ea56e67b793cc459b90cdd74 (patch) | |
| tree | 0a8df14569fbdf75cffa029859000cd0b6e11934 /src | |
| parent | Merge pull request #2176 from lioncash/com (diff) | |
| download | yuzu-ef84c70d222eb2b8ea56e67b793cc459b90cdd74.tar.gz yuzu-ef84c70d222eb2b8ea56e67b793cc459b90cdd74.tar.xz yuzu-ef84c70d222eb2b8ea56e67b793cc459b90cdd74.zip | |
Speed up memory page mapping (#2141)
- Memory::MapPages total samplecount was reduced from 4.6% to 1.06%.
- From main menu into the game from 1.03% to 0.35%
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/memory.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index e9166dbd9..f809567b6 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -71,15 +71,20 @@ static void MapPages(PageTable& page_table, VAddr base, u64 size, u8* memory, Pa | |||
| 71 | FlushMode::FlushAndInvalidate); | 71 | FlushMode::FlushAndInvalidate); |
| 72 | 72 | ||
| 73 | VAddr end = base + size; | 73 | VAddr end = base + size; |
| 74 | while (base != end) { | 74 | ASSERT_MSG(end <= page_table.pointers.size(), "out of range mapping at {:016X}", |
| 75 | ASSERT_MSG(base < page_table.pointers.size(), "out of range mapping at {:016X}", base); | 75 | base + page_table.pointers.size()); |
| 76 | 76 | ||
| 77 | page_table.attributes[base] = type; | 77 | std::fill(page_table.attributes.begin() + base, page_table.attributes.begin() + end, type); |
| 78 | page_table.pointers[base] = memory; | ||
| 79 | 78 | ||
| 80 | base += 1; | 79 | if (memory == nullptr) { |
| 81 | if (memory != nullptr) | 80 | std::fill(page_table.pointers.begin() + base, page_table.pointers.begin() + end, memory); |
| 81 | } else { | ||
| 82 | while (base != end) { | ||
| 83 | page_table.pointers[base] = memory; | ||
| 84 | |||
| 85 | base += 1; | ||
| 82 | memory += PAGE_SIZE; | 86 | memory += PAGE_SIZE; |
| 87 | } | ||
| 83 | } | 88 | } |
| 84 | } | 89 | } |
| 85 | 90 | ||