Browse Source
Merge pull request #2872 from FernandoS27/mem-gpu-opt
Core/Memory: Only FlushAndInvalidate GPU if the page is marked as RasterizerCachedMemory
pull/15/merge
David
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
7 additions and
2 deletions
-
src/core/memory.cpp
|
|
|
@ -43,8 +43,13 @@ static void MapPages(Common::PageTable& page_table, VAddr base, u64 size, u8* me |
|
|
|
|
|
|
|
// During boot, current_page_table might not be set yet, in which case we need not flush
|
|
|
|
if (Core::System::GetInstance().IsPoweredOn()) { |
|
|
|
Core::System::GetInstance().GPU().FlushAndInvalidateRegion(base << PAGE_BITS, |
|
|
|
size * PAGE_SIZE); |
|
|
|
auto& gpu = Core::System::GetInstance().GPU(); |
|
|
|
for (u64 i = 0; i < size; i++) { |
|
|
|
const auto page = base + i; |
|
|
|
if (page_table.attributes[page] == Common::PageType::RasterizerCachedMemory) { |
|
|
|
gpu.FlushAndInvalidateRegion(page << PAGE_BITS, PAGE_SIZE); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
VAddr end = base + size; |
|
|
|
|