Memory: Correct Normal Memory Protections and only use accelerated read on fastmem.
This commit is contained in:
+1
-1
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)));
|
||||
|
||||
@@ -1506,6 +1506,8 @@ public:
|
||||
std::vector<u32> index_buffer_cache;
|
||||
} vertex_num_approx_state;
|
||||
|
||||
bool accelerated_reads{};
|
||||
|
||||
private:
|
||||
void InitializeRegisterDefaults();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user