summaryrefslogtreecommitdiffstats
path: root/src/audio_core/renderer/command/effect/aux_.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio_core/renderer/command/effect/aux_.cpp')
-rw-r--r--src/audio_core/renderer/command/effect/aux_.cpp82
1 files changed, 19 insertions, 63 deletions
diff --git a/src/audio_core/renderer/command/effect/aux_.cpp b/src/audio_core/renderer/command/effect/aux_.cpp
index c5650effa..a3e12b3e7 100644
--- a/src/audio_core/renderer/command/effect/aux_.cpp
+++ b/src/audio_core/renderer/command/effect/aux_.cpp
@@ -21,23 +21,13 @@ static void ResetAuxBufferDsp(Core::Memory::Memory& memory, const CpuAddr aux_in
}
AuxInfo::AuxInfoDsp info{};
- auto info_ptr{&info};
- bool host_safe{(aux_info & Core::Memory::YUZU_PAGEMASK) <=
- (Core::Memory::YUZU_PAGESIZE - sizeof(AuxInfo::AuxInfoDsp))};
+ memory.ReadBlockUnsafe(aux_info, &info, sizeof(AuxInfo::AuxInfoDsp));
- if (host_safe) [[likely]] {
- info_ptr = memory.GetPointer<AuxInfo::AuxInfoDsp>(aux_info);
- } else {
- memory.ReadBlockUnsafe(aux_info, info_ptr, sizeof(AuxInfo::AuxInfoDsp));
- }
+ info.read_offset = 0;
+ info.write_offset = 0;
+ info.total_sample_count = 0;
- info_ptr->read_offset = 0;
- info_ptr->write_offset = 0;
- info_ptr->total_sample_count = 0;
-
- if (!host_safe) [[unlikely]] {
- memory.WriteBlockUnsafe(aux_info, info_ptr, sizeof(AuxInfo::AuxInfoDsp));
- }
+ memory.WriteBlockUnsafe(aux_info, &info, sizeof(AuxInfo::AuxInfoDsp));
}
/**
@@ -86,17 +76,9 @@ static u32 WriteAuxBufferDsp(Core::Memory::Memory& memory, CpuAddr send_info_,
}
AuxInfo::AuxInfoDsp send_info{};
- auto send_ptr = &send_info;
- bool host_safe = (send_info_ & Core::Memory::YUZU_PAGEMASK) <=
- (Core::Memory::YUZU_PAGESIZE - sizeof(AuxInfo::AuxInfoDsp));
-
- if (host_safe) [[likely]] {
- send_ptr = memory.GetPointer<AuxInfo::AuxInfoDsp>(send_info_);
- } else {
- memory.ReadBlockUnsafe(send_info_, send_ptr, sizeof(AuxInfo::AuxInfoDsp));
- }
+ memory.ReadBlockUnsafe(send_info_, &send_info, sizeof(AuxInfo::AuxInfoDsp));
- u32 target_write_offset{send_ptr->write_offset + write_offset};
+ u32 target_write_offset{send_info.write_offset + write_offset};
if (target_write_offset > count_max) {
return 0;
}
@@ -105,15 +87,9 @@ static u32 WriteAuxBufferDsp(Core::Memory::Memory& memory, CpuAddr send_info_,
u32 read_pos{0};
while (write_count > 0) {
u32 to_write{std::min(count_max - target_write_offset, write_count)};
- const auto write_addr = send_buffer + target_write_offset * sizeof(s32);
- bool write_safe{(write_addr & Core::Memory::YUZU_PAGEMASK) <=
- (Core::Memory::YUZU_PAGESIZE - (write_addr + to_write * sizeof(s32)))};
- if (write_safe) [[likely]] {
- auto ptr = memory.GetPointer(write_addr);
- std::memcpy(ptr, &input[read_pos], to_write * sizeof(s32));
- } else {
- memory.WriteBlockUnsafe(send_buffer + target_write_offset * sizeof(s32),
- &input[read_pos], to_write * sizeof(s32));
+ if (to_write > 0) {
+ const auto write_addr = send_buffer + target_write_offset * sizeof(s32);
+ memory.WriteBlockUnsafe(write_addr, &input[read_pos], to_write * sizeof(s32));
}
target_write_offset = (target_write_offset + to_write) % count_max;
write_count -= to_write;
@@ -121,13 +97,10 @@ static u32 WriteAuxBufferDsp(Core::Memory::Memory& memory, CpuAddr send_info_,
}
if (update_count) {
- send_ptr->write_offset = (send_ptr->write_offset + update_count) % count_max;
- }
-
- if (!host_safe) [[unlikely]] {
- memory.WriteBlockUnsafe(send_info_, send_ptr, sizeof(AuxInfo::AuxInfoDsp));
+ send_info.write_offset = (send_info.write_offset + update_count) % count_max;
}
+ memory.WriteBlockUnsafe(send_info_, &send_info, sizeof(AuxInfo::AuxInfoDsp));
return write_count_;
}
@@ -174,17 +147,9 @@ static u32 ReadAuxBufferDsp(Core::Memory::Memory& memory, CpuAddr return_info_,
}
AuxInfo::AuxInfoDsp return_info{};
- auto return_ptr = &return_info;
- bool host_safe = (return_info_ & Core::Memory::YUZU_PAGEMASK) <=
- (Core::Memory::YUZU_PAGESIZE - sizeof(AuxInfo::AuxInfoDsp));
+ memory.ReadBlockUnsafe(return_info_, &return_info, sizeof(AuxInfo::AuxInfoDsp));
- if (host_safe) [[likely]] {
- return_ptr = memory.GetPointer<AuxInfo::AuxInfoDsp>(return_info_);
- } else {
- memory.ReadBlockUnsafe(return_info_, return_ptr, sizeof(AuxInfo::AuxInfoDsp));
- }
-
- u32 target_read_offset{return_ptr->read_offset + read_offset};
+ u32 target_read_offset{return_info.read_offset + read_offset};
if (target_read_offset > count_max) {
return 0;
}
@@ -193,15 +158,9 @@ static u32 ReadAuxBufferDsp(Core::Memory::Memory& memory, CpuAddr return_info_,
u32 write_pos{0};
while (read_count > 0) {
u32 to_read{std::min(count_max - target_read_offset, read_count)};
- const auto read_addr = return_buffer + target_read_offset * sizeof(s32);
- bool read_safe{(read_addr & Core::Memory::YUZU_PAGEMASK) <=
- (Core::Memory::YUZU_PAGESIZE - (read_addr + to_read * sizeof(s32)))};
- if (read_safe) [[likely]] {
- auto ptr = memory.GetPointer(read_addr);
- std::memcpy(&output[write_pos], ptr, to_read * sizeof(s32));
- } else {
- memory.ReadBlockUnsafe(return_buffer + target_read_offset * sizeof(s32),
- &output[write_pos], to_read * sizeof(s32));
+ if (to_read > 0) {
+ const auto read_addr = return_buffer + target_read_offset * sizeof(s32);
+ memory.ReadBlockUnsafe(read_addr, &output[write_pos], to_read * sizeof(s32));
}
target_read_offset = (target_read_offset + to_read) % count_max;
read_count -= to_read;
@@ -209,13 +168,10 @@ static u32 ReadAuxBufferDsp(Core::Memory::Memory& memory, CpuAddr return_info_,
}
if (update_count) {
- return_ptr->read_offset = (return_ptr->read_offset + update_count) % count_max;
- }
-
- if (!host_safe) [[unlikely]] {
- memory.WriteBlockUnsafe(return_info_, return_ptr, sizeof(AuxInfo::AuxInfoDsp));
+ return_info.read_offset = (return_info.read_offset + update_count) % count_max;
}
+ memory.WriteBlockUnsafe(return_info_, &return_info, sizeof(AuxInfo::AuxInfoDsp));
return read_count_;
}