Memory: Correct Normal Memory Protections and only use accelerated read on fastmem.

This commit is contained in:
Fernando Sahmkow
2022-03-20 22:39:27 +01:00
parent 7e134351d8
commit c4f389eeb8
3 changed files with 5 additions and 2 deletions
+1 -1
View File
@@ -322,7 +322,7 @@ struct Memory::Impl {
}
if (Settings::IsFastmemEnabled()) {
const bool is_read_enable = Settings::IsGPULevelHigh() || !cached;
const bool is_read_enable = !Settings::IsGPULevelExtreme() || !cached;
system.DeviceMemory().buffer.Protect(vaddr, size, is_read_enable, !cached);
}
+2 -1
View File
@@ -30,6 +30,7 @@ Maxwell3D::Maxwell3D(Core::System& system_, MemoryManager& memory_manager_)
upload_state{memory_manager, regs.upload} {
dirty.flags.flip();
InitializeRegisterDefaults();
accelerated_reads = Settings::IsFastmemEnabled();
}
Maxwell3D::~Maxwell3D() = default;
@@ -696,7 +697,7 @@ void Maxwell3D::RecalculateVertexArrayLimit() {
auto maybe_ptr = memory_manager.GpuToHostPointer(start_address + offset);
u8* ptr;
if (maybe_ptr) {
if (accelerated_reads && maybe_ptr) {
ptr = *maybe_ptr;
} else {
vn_state.index_buffer_cache.resize(Common::DivideUp(expected_size, sizeof(u32)));
+2
View File
@@ -1506,6 +1506,8 @@ public:
std::vector<u32> index_buffer_cache;
} vertex_num_approx_state;
bool accelerated_reads{};
private:
void InitializeRegisterDefaults();