diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 5dee294384..2f81d4ae70 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -2152,7 +2152,7 @@ namespace rsx if (g_cfg.video.disable_zcull_queries) return; - zcull_ctrl->clear(this); + zcull_ctrl->clear(this, type); } void thread::get_zcull_stats(u32 type, vm::addr_t sink) @@ -2928,8 +2928,14 @@ namespace rsx m_free_occlusion_pool.push(query); } - void ZCULL_control::clear(class ::rsx::thread* ptimer) + void ZCULL_control::clear(class ::rsx::thread* ptimer, u32 type) { + if (type != CELL_GCM_ZPASS_PIXEL_CNT) + { + // Other types do not generate queries at the moment + return; + } + if (!m_pending_writes.empty()) { //Remove any dangling/unclaimed queries as the information is lost anyway diff --git a/rpcs3/Emu/RSX/RSXThread.h b/rpcs3/Emu/RSX/RSXThread.h index a3fc758da1..45e494d545 100644 --- a/rpcs3/Emu/RSX/RSXThread.h +++ b/rpcs3/Emu/RSX/RSXThread.h @@ -434,7 +434,7 @@ namespace rsx void read_report(class ::rsx::thread* ptimer, vm::addr_t sink, u32 type); // Clears current stat block and increments stat_tag_id - void clear(class ::rsx::thread* ptimer); + void clear(class ::rsx::thread* ptimer, u32 type); // Forcefully flushes all void sync(class ::rsx::thread* ptimer);