diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 6606351b62..d208eac776 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -19,7 +19,6 @@ #include "Emu/Cell/lv2/sys_event.h" #include "Emu/Cell/lv2/sys_time.h" #include "Emu/Cell/Modules/cellGcmSys.h" -#include "Emu/Memory/vm_reservation.h" #include "util/serialization_ext.hpp" #include "Overlays/overlay_perf_metrics.h" #include "Overlays/overlay_debug_overlay.h" @@ -3115,19 +3114,8 @@ namespace rsx } } - CellGcmReportData report_data{ timestamp(), value, 0}; - - if (sink < label_addr || sink >= label_addr + sizeof(RsxReports::report)) - { - vm::light_op(vm::_ref>(sink), [&](atomic_t& data) - { - data.release(report_data); - }); - } - else - { - vm::_ref>(sink).store(report_data); - } + rsx::reservation_lock lock(sink, 16); + vm::_ref>(sink).store({timestamp(), value, 0}); } u32 thread::copy_zcull_stats(u32 memory_range_start, u32 memory_range, u32 destination) diff --git a/rpcs3/Emu/RSX/RSXZCULL.cpp b/rpcs3/Emu/RSX/RSXZCULL.cpp index c2dc58a5a7..d1a0b07806 100644 --- a/rpcs3/Emu/RSX/RSXZCULL.cpp +++ b/rpcs3/Emu/RSX/RSXZCULL.cpp @@ -1,7 +1,6 @@ #include "stdafx.h" #include "Core/RSXEngLock.hpp" #include "Core/RSXReservationLock.hpp" -#include "Emu/Memory/vm_reservation.h" #include "RSXThread.h" namespace rsx @@ -352,21 +351,9 @@ namespace rsx break; } - const u32 label_addr = rsx::get_current_renderer()->label_addr; - - CellGcmReportData report_data{ timestamp, value, 0 }; - - if (sink < label_addr || sink >= label_addr + sizeof(RsxReports::report)) - { - vm::light_op(*vm::get_super_ptr>(sink), [&](atomic_t& data) - { - data.release(report_data); - }); - } - else - { - vm::get_super_ptr>(sink)->store(report_data); - } + rsx::reservation_lock lock(sink, 16); + auto report = vm::get_super_ptr>(sink); + report->store({timestamp, value, 0}); } void ZCULL_control::write(queued_report_write* writer, u64 timestamp, u32 value)