yuzu-emu
/
yuzu-mainline
Archived
1
0
Fork 0

memory: Address lioncash's review

This commit is contained in:
yzct12345 2021-08-05 20:29:43 +00:00 committed by GitHub
parent 6df9611059
commit 4edfa6ad8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 7 deletions

View File

@ -1,4 +1,4 @@
// Copyright 2021 Citra Emulator Project // Copyright 2015 Citra Emulator Project
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
@ -235,7 +235,7 @@ struct Memory::Impl {
[&system = system, &dest_buffer](const VAddr current_vaddr, [&system = system, &dest_buffer](const VAddr current_vaddr,
const std::size_t copy_amount, const std::size_t copy_amount,
const u8* const host_ptr) { const u8* const host_ptr) {
if (!UNSAFE) { if constexpr (!UNSAFE) {
system.GPU().FlushRegion(current_vaddr, copy_amount); system.GPU().FlushRegion(current_vaddr, copy_amount);
} }
std::memcpy(dest_buffer, host_ptr, copy_amount); std::memcpy(dest_buffer, host_ptr, copy_amount);
@ -268,7 +268,7 @@ struct Memory::Impl {
}, },
[&system = system, &src_buffer](const VAddr current_vaddr, [&system = system, &src_buffer](const VAddr current_vaddr,
const std::size_t copy_amount, u8* const host_ptr) { const std::size_t copy_amount, u8* const host_ptr) {
if (!UNSAFE) { if constexpr (!UNSAFE) {
system.GPU().InvalidateRegion(current_vaddr, copy_amount); system.GPU().InvalidateRegion(current_vaddr, copy_amount);
} }
std::memcpy(host_ptr, src_buffer, copy_amount); std::memcpy(host_ptr, src_buffer, copy_amount);
@ -390,9 +390,10 @@ struct Memory::Impl {
} else { } else {
// Switch page type to uncached if now uncached // Switch page type to uncached if now uncached
switch (page_type) { switch (page_type) {
case Common::PageType::Unmapped: case Common::PageType::Unmapped: // NOLINT(bugprone-branch-clone)
// It is not necessary for a process to have this region mapped into its address // It is not necessary for a process to have this region mapped into its address
// space, for example, a system module need not have a VRAM mapping. // space, for example, a system module need not have a VRAM mapping.
break;
case Common::PageType::Memory: case Common::PageType::Memory:
// There can be more than one GPU region mapped per CPU region, so it's common // There can be more than one GPU region mapped per CPU region, so it's common
// that this area is already unmarked as cached. // that this area is already unmarked as cached.
@ -666,8 +667,8 @@ void Memory::UnmapRegion(Common::PageTable& page_table, VAddr base, u64 size) {
bool Memory::IsValidVirtualAddress(const VAddr vaddr) const { bool Memory::IsValidVirtualAddress(const VAddr vaddr) const {
const Kernel::KProcess& process = *system.CurrentProcess(); const Kernel::KProcess& process = *system.CurrentProcess();
const auto& pageTable = process.PageTable().PageTableImpl(); const auto& page_table = process.PageTable().PageTableImpl();
const auto [pointer, type] = pageTable.pointers[vaddr >> PAGE_BITS].PointerType(); const auto [pointer, type] = page_table.pointers[vaddr >> PAGE_BITS].PointerType();
return pointer != nullptr || type == Common::PageType::RasterizerCachedMemory; return pointer != nullptr || type == Common::PageType::RasterizerCachedMemory;
} }

View File

@ -1,4 +1,4 @@
// Copyright 2021 Citra Emulator Project // Copyright 2014 Citra Emulator Project
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.