diff --git a/pcsx2/Config.h b/pcsx2/Config.h index cdd49113f8..d424b836a9 100644 --- a/pcsx2/Config.h +++ b/pcsx2/Config.h @@ -909,7 +909,7 @@ struct Pcsx2Config bool operator!=(const GSOptions& right) const; // Should we dump this draw/frame? - bool ShouldDump(int draw, int frame) const; + bool ShouldDump(u64 draw, int frame) const; }; struct SPU2Options diff --git a/pcsx2/GS/GSState.cpp b/pcsx2/GS/GSState.cpp index a21a73992f..cede02285c 100644 --- a/pcsx2/GS/GSState.cpp +++ b/pcsx2/GS/GSState.cpp @@ -19,9 +19,9 @@ #include #include -int GSState::s_n = 0; -int GSState::s_last_transfer_draw_n = 0; -int GSState::s_transfer_n = 0; +u64 GSState::s_n = 0; +u64 GSState::s_last_transfer_draw_n = 0; +u64 GSState::s_transfer_n = 0; static __fi bool IsAutoFlushEnabled() { @@ -444,7 +444,7 @@ void GSState::DumpDrawInfo(bool dump_regs, bool dump_verts, bool dump_transfers) // Dump Register state if (dump_regs) { - s = GetDrawDumpPath("%05d_context.txt", s_n); + s = GetDrawDumpPath("%05lld_context.txt", s_n); m_draw_env->Dump(s); m_context->Dump(s); @@ -453,14 +453,14 @@ void GSState::DumpDrawInfo(bool dump_regs, bool dump_verts, bool dump_transfers) // Dump vertices if (dump_verts) { - s = GetDrawDumpPath("%05d_vertex.txt", s_n); + s = GetDrawDumpPath("%05lld_vertex.txt", s_n); DumpVertices(s); } // Dump transfers if (dump_transfers) { - s = GetDrawDumpPath("%05d_transfers.txt", s_n); + s = GetDrawDumpPath("%05lld_transfers.txt", s_n); DumpTransferList(s); } } @@ -860,14 +860,14 @@ void GSState::DumpTransferImages() if (transfer.ee_to_gs || transfer.zero_clear) { // clear or EE->GS: only the destination info is relevant. - filename = GetDrawDumpPath("%05d_transfer%02d_%s_%04x_%d_%s_%d_%d_%d_%d.png", + filename = GetDrawDumpPath("%05lld_transfer%02d_%s_%04x_%d_%s_%d_%d_%d_%d.png", s_n, transfer_n++, (transfer.zero_clear ? "clear" : "EE_to_GS"), transfer.blit.DBP, transfer.blit.DBW, GSUtil::GetPSMName(transfer.blit.DPSM), transfer.rect.x, transfer.rect.y, transfer.rect.z, transfer.rect.w); } else { // GS->GS: the source and destination info are both relevant. - filename = GetDrawDumpPath("%05d_transfer%02d_GS_to_GS_%04x_%d_%s_%04x_%d_%s_%d_%d_%d_%d.bmp", + filename = GetDrawDumpPath("%05lld_transfer%02d_GS_to_GS_%04x_%d_%s_%04x_%d_%s_%d_%d_%d_%d.bmp", s_n, transfer_n++, transfer.blit.SBP, transfer.blit.SBW, GSUtil::GetPSMName(transfer.blit.SPSM), transfer.blit.DBP, transfer.blit.DBW, GSUtil::GetPSMName(transfer.blit.DPSM), transfer.rect.x, transfer.rect.y, transfer.rect.z, transfer.rect.w); @@ -2133,7 +2133,7 @@ void GSState::FlushPrim() if (GSConfig.SaveDrawStats) { m_perfmon_draw = g_perfmon - m_perfmon_draw; - m_perfmon_draw.Dump(GetDrawDumpPath("%05d_draw_stats.txt", s_n), GSIsHardwareRenderer()); + m_perfmon_draw.Dump(GetDrawDumpPath("%05lld_draw_stats.txt", s_n), GSIsHardwareRenderer()); m_perfmon_draw = g_perfmon; } } @@ -2381,7 +2381,7 @@ void GSState::Write(const u8* mem, int len) m_draw_transfers.push_back(new_transfer); } - GL_CACHE("Write! %u ... => 0x%x W:%d F:%s (DIR %d%d), dPos(%d %d) size(%d %d) draw %d", s_transfer_n, + GL_CACHE("Write! %u ... => 0x%x W:%d F:%s (DIR %d%d), dPos(%d %d) size(%d %d) draw %lld", s_transfer_n, blit.DBP, blit.DBW, GSUtil::GetPSMName(blit.DPSM), m_tr.m_pos.DIRX, m_tr.m_pos.DIRY, m_tr.x, m_tr.y, m_tr.w, m_tr.h, s_n); @@ -2442,7 +2442,7 @@ void GSState::InitReadFIFO(u8* mem, int len) if (GSConfig.SaveRT && GSConfig.ShouldDump(s_n, g_perfmon.GetFrame())) { const std::string s(GetDrawDumpPath( - "%05d_read_%05x_%d_%s_%d_%d_%d_%d.bmp", + "%05lld_read_%05x_%d_%s_%d_%d_%d_%d.bmp", s_n, (int)m_env.BITBLTBUF.SBP, (int)m_env.BITBLTBUF.SBW, GSUtil::GetPSMName(m_env.BITBLTBUF.SPSM), r.left, r.top, r.right, r.bottom)); @@ -2468,8 +2468,7 @@ void GSState::Read(u8* mem, int len) if (!m_tr.Update(w, h, bpp, len)) return; - const int draw = s_n; - + const u64 draw = s_n; if (draw != s_n) DevCon.Warning("Warning! Possible incorrect data download"); diff --git a/pcsx2/GS/GSState.h b/pcsx2/GS/GSState.h index 38299021c6..0527e949a5 100644 --- a/pcsx2/GS/GSState.h +++ b/pcsx2/GS/GSState.h @@ -215,7 +215,7 @@ public: { GIFRegBITBLTBUF blit; GSVector4i rect; - int draw; + u64 draw; bool zero_clear; bool ee_to_gs; }; @@ -262,9 +262,9 @@ public: GSVector4i m_r = {}; GSVector4i m_r_no_scissor = {}; - static int s_n; - static int s_last_transfer_draw_n; - static int s_transfer_n; + static u64 s_n; + static u64 s_last_transfer_draw_n; + static u64 s_transfer_n; GSPerfMon m_perfmon_frame; // Track stat across a frame. GSPerfMon m_perfmon_draw; // Track stat across a draw. diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.cpp b/pcsx2/GS/Renderers/Common/GSRenderer.cpp index 5281bad62b..ebd1c6ccd2 100644 --- a/pcsx2/GS/Renderers/Common/GSRenderer.cpp +++ b/pcsx2/GS/Renderers/Common/GSRenderer.cpp @@ -584,7 +584,7 @@ void GSRenderer::VSync(u32 field, bool registers_written, bool idle_frame) { if (GSConfig.SaveInfo) { - DumpGSPrivRegs(*m_regs, GetDrawDumpPath("%05d_f%05lld_vsync_gs_reg.txt", s_n, g_perfmon.GetFrame())); + DumpGSPrivRegs(*m_regs, GetDrawDumpPath("%05lld_f%05lld_vsync_gs_reg.txt", s_n, g_perfmon.GetFrame())); DumpDrawInfo(false, false, true); } @@ -595,7 +595,7 @@ void GSRenderer::VSync(u32 field, bool registers_written, bool idle_frame) if (GSConfig.SaveFrameStats) { m_perfmon_frame = g_perfmon - m_perfmon_frame; - m_perfmon_frame.Dump(GetDrawDumpPath("%05d_f%05lld_frame_stats.txt", s_n, g_perfmon.GetFrame()), GSIsHardwareRenderer()); + m_perfmon_frame.Dump(GetDrawDumpPath("%05lld_f%05lld_frame_stats.txt", s_n, g_perfmon.GetFrame()), GSIsHardwareRenderer()); m_perfmon_frame = g_perfmon; } } diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.h b/pcsx2/GS/Renderers/Common/GSRenderer.h index fd6e7c23d2..e27f635f02 100644 --- a/pcsx2/GS/Renderers/Common/GSRenderer.h +++ b/pcsx2/GS/Renderers/Common/GSRenderer.h @@ -21,8 +21,8 @@ private: u32 m_skipped_duplicate_frames = 0; // Tracking draw counters for idle frame detection. - int m_last_draw_n = 0; - int m_last_transfer_n = 0; + u64 m_last_draw_n = 0; + u64 m_last_transfer_n = 0; protected: GSVector2i m_real_size{0, 0}; @@ -51,7 +51,7 @@ public: virtual float GetTextureScaleFactor() { return 1.0f; } GSVector2i GetInternalResolution(); float GetModXYOffset(); - virtual int GetLastGPUCLUTDraw() { return GSState::s_n; } + virtual u64 GetLastGPUCLUTDraw() { return GSState::s_n; } virtual GSTexture* LookupPaletteSource(u32 CBP, u32 CPSM, u32 CBW, GSVector2i& offset, float* scale, const GSVector2i& size); diff --git a/pcsx2/GS/Renderers/HW/GSHwHack.cpp b/pcsx2/GS/Renderers/HW/GSHwHack.cpp index 441c5b20fd..30727f84a3 100644 --- a/pcsx2/GS/Renderers/HW/GSHwHack.cpp +++ b/pcsx2/GS/Renderers/HW/GSHwHack.cpp @@ -1066,7 +1066,7 @@ bool GSHwHack::OI_SonicUnleashed(GSRendererHW& r, GSTexture* rt, GSTexture* ds, if ((!rt) || (!RPRIM->TME) || (GSLocalMemory::m_psm[Texture.PSM].bpp != 16) || (GSLocalMemory::m_psm[Frame.PSM].bpp != 16) || (Texture.TBP0 == Frame.TBP0) || (Frame.TBW != 16 && Texture.TBW != 16)) return true; - GL_INS("OI_SonicUnleashed replace draw by a copy draw %d", r.s_n); + GL_INS("OI_SonicUnleashed replace draw by a copy draw %lld", r.s_n); GSTextureCache::Target* src = g_texture_cache->LookupTarget(Texture, GSVector2i(1, 1), r.GetTextureScaleFactor(), GSTextureCache::RenderTarget, true, 0, false, false, true, true, GSVector4i::zero(), true); @@ -1279,7 +1279,7 @@ static bool GetMoveTargetPair(GSRendererHW& r, GSTextureCache::Target** src, GST req_target, preserve_target); } -static int s_last_hacked_move_n = 0; +static u64 s_last_hacked_move_n = 0; bool GSHwHack::MV_Growlanser(GSRendererHW& r) { diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp index 670e60c243..909062f6c2 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp @@ -59,7 +59,7 @@ void GSRendererHW::ReadbackTextureCache() g_texture_cache->ReadbackAll(); } -int GSRendererHW::GetLastGPUCLUTDraw() +u64 GSRendererHW::GetLastGPUCLUTDraw() { return g_texture_cache->GetLastGPUCLUTDraw(); } @@ -185,7 +185,7 @@ GSTexture* GSRendererHW::GetOutput(int i, float& scale, int& y_offset) if (GSConfig.SaveFrame && GSConfig.ShouldDump(s_n, g_perfmon.GetFrame())) { - t->Save(GetDrawDumpPath("%05d_f%05lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), i, static_cast(TEX0.TBP0), GSUtil::GetPSMName(TEX0.PSM))); + t->Save(GetDrawDumpPath("%05lld_f%05lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), i, static_cast(TEX0.TBP0), GSUtil::GetPSMName(TEX0.PSM))); } } @@ -211,7 +211,7 @@ GSTexture* GSRendererHW::GetFeedbackOutput(float& scale) scale = rt->m_scale; if (GSConfig.SaveFrame && GSConfig.ShouldDump(s_n, g_perfmon.GetFrame())) - t->Save(GetDrawDumpPath("%05d_f%05lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), 3, static_cast(TEX0.TBP0), GSUtil::GetPSMName(TEX0.PSM))); + t->Save(GetDrawDumpPath("%05lld_f%05lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), 3, static_cast(TEX0.TBP0), GSUtil::GetPSMName(TEX0.PSM))); return t; } @@ -1924,7 +1924,7 @@ void GSRendererHW::Move() const int w = m_env.TRXREG.RRW; const int h = m_env.TRXREG.RRH; - GL_CACHE("HW: Starting Move! 0x%x W:%d F:%s => 0x%x W:%d F:%s (DIR %d%d), sPos(%d %d) dPos(%d %d) size(%d %d) draw %d", + GL_CACHE("HW: Starting Move! 0x%x W:%d F:%s => 0x%x W:%d F:%s (DIR %d%d), sPos(%d %d) dPos(%d %d) size(%d %d) draw %lld", m_env.BITBLTBUF.SBP, m_env.BITBLTBUF.SBW, GSUtil::GetPSMName(m_env.BITBLTBUF.SPSM), m_env.BITBLTBUF.DBP, m_env.BITBLTBUF.DBW, GSUtil::GetPSMName(m_env.BITBLTBUF.DPSM), m_env.TRXPOS.DIRX, m_env.TRXPOS.DIRY, @@ -2339,7 +2339,7 @@ void GSRendererHW::Draw() if (IsBadFrame()) { - GL_INS("HW: Warning skipping a draw call (%d)", s_n); + GL_INS("HW: Warning skipping a draw call (%lld)", s_n); return; } @@ -2373,7 +2373,7 @@ void GSRendererHW::Draw() { if (m_last_rt) { - //DevCon.Warning("Skipped %d draw %d was abort %d", num_skipped_channel_shuffle_draws, s_n, (int)m_channel_shuffle_abort); + //DevCon.Warning("Skipped %d draw %lld was abort %d", num_skipped_channel_shuffle_draws, s_n, (int)m_channel_shuffle_abort); // Some games like Tomb raider abort early, we're never going to know the real height, and the system doesn't work right for partials. // But it's good enough for games like Hitman Blood Money which only shuffle part of the screen const int width = std::max(static_cast(m_last_rt->m_TEX0.TBW) * 64, 64); @@ -2410,7 +2410,7 @@ void GSRendererHW::Draw() { const u64 frame = g_perfmon.GetFrame(); - std::string s = GetDrawDumpPath("%05d_f%05lld_rt1_%05x_(%05x)_%s.bmp", s_n - 1, frame, m_last_channel_shuffle_fbp, m_last_rt->m_TEX0.TBP0, GSUtil::GetPSMName(m_cached_ctx.FRAME.PSM)); + std::string s = GetDrawDumpPath("%05lld_f%05lld_rt1_%05x_(%05x)_%s.bmp", s_n - 1, frame, m_last_channel_shuffle_fbp, m_last_rt->m_TEX0.TBP0, GSUtil::GetPSMName(m_cached_ctx.FRAME.PSM)); m_last_rt->m_texture->Save(s); } @@ -2422,7 +2422,7 @@ void GSRendererHW::Draw() } #ifdef ENABLE_OGL_DEBUG if (num_skipped_channel_shuffle_draws > 0) - GL_CACHE("HW: Skipped %d channel shuffle draws ending at %d", num_skipped_channel_shuffle_draws, s_n); + GL_CACHE("HW: Skipped %d channel shuffle draws ending at %lld", num_skipped_channel_shuffle_draws, s_n); #endif num_skipped_channel_shuffle_draws = 0; @@ -2437,7 +2437,7 @@ void GSRendererHW::Draw() m_channel_shuffle_abort = false; m_channel_shuffle_src_valid = GSVector4i::zero(); - GL_PUSH("HW: Draw %d (Context %u)", s_n, PRIM->CTXT); + GL_PUSH("HW: Draw %lld (Context %u)", s_n, PRIM->CTXT); GL_INS("HW: FLUSH REASON: %s%s", GetFlushReasonString(m_state_flush_reason), (m_state_flush_reason != GSFlushReason::CONTEXTCHANGE && m_dirty_gs_regs) ? " AND POSSIBLE CONTEXT CHANGE" : ""); @@ -2596,7 +2596,7 @@ void GSRendererHW::Draw() // Draw is too small, just skip it. if (m_r.rempty()) { - GL_INS("HW: Draw %d skipped due to having an empty rect"); + GL_INS("HW: Draw %lld skipped due to having an empty rect", s_n); return; } @@ -2800,7 +2800,7 @@ void GSRendererHW::Draw() (fb_mask != 0 && (fb_mask >> 16) == (fb_mask & 0xFFFF) && ((fb_mask >> 8) & 0xFF) != (fb_mask & 0xFF)))) { - GL_CACHE("Clear 16bit with 32bit %d", s_n); + GL_CACHE("Clear 16bit with 32bit %lld", s_n); // May have already been resized through the split draw checks. if (!(m_cached_ctx.FRAME.PSM & 2)) @@ -3446,7 +3446,7 @@ void GSRendererHW::Draw() const u32 new_width = std::max(new_size.x, ds->m_unscaled_size.x); const u32 new_height = std::max(new_size.y, ds->m_unscaled_size.y); - //DevCon.Warning("HW: Resizing texture %d x %d draw %d", ds->m_unscaled_size.x, new_height, s_n); + //DevCon.Warning("HW: Resizing texture %d x %d draw %lld", ds->m_unscaled_size.x, new_height, s_n); ds->ResizeTexture(new_width, new_height); } else if ((IsPageCopy() || is_possible_mem_clear) && m_r.width() <= zbuf_psm.pgs.x && m_r.height() <= zbuf_psm.pgs.y) @@ -3743,7 +3743,7 @@ void GSRendererHW::Draw() const u32 new_width = std::max(new_size.x, rt->m_unscaled_size.x); const u32 new_height = std::max(new_size.y, rt->m_unscaled_size.y); - //DevCon.Warning("HW: Resizing texture %d x %d draw %d", rt->m_unscaled_size.x, new_height, s_n); + //DevCon.Warning("HW: Resizing texture %d x %d draw %lld", rt->m_unscaled_size.x, new_height, s_n); rt->ResizeTexture(new_width, new_height); } else if ((IsPageCopy() || is_possible_mem_clear) && m_r.width() <= frame_psm.pgs.x && m_r.height() <= frame_psm.pgs.y) @@ -3794,7 +3794,7 @@ void GSRendererHW::Draw() const GSVector4 sRect = GSVector4(((ds->m_valid.x + horizontal_offset) * ds->m_scale) / static_cast(g_texture_cache->GetTemporaryZ()->GetWidth()), static_cast((ds->m_valid.y + vertical_offset) * ds->m_scale) / static_cast(g_texture_cache->GetTemporaryZ()->GetHeight()), (((ds->m_valid.z + horizontal_offset) + (1.0f / ds->m_scale)) * ds->m_scale) / static_cast(g_texture_cache->GetTemporaryZ()->GetWidth()), static_cast((ds->m_valid.w + vertical_offset + (1.0f / ds->m_scale)) * ds->m_scale) / static_cast(g_texture_cache->GetTemporaryZ()->GetHeight())); - GL_CACHE("HW: RT in RT Z copy back draw %d z_vert_offset %d z_offset %d", s_n, z_vertical_offset, vertical_offset); + GL_CACHE("HW: RT in RT Z copy back draw %lld z_vert_offset %d z_offset %d", s_n, z_vertical_offset, vertical_offset); g_gs_device->StretchRect(g_texture_cache->GetTemporaryZ(), sRect, ds->m_texture, GSVector4(dRect), ShaderConvert::DEPTH_COPY, false); g_perfmon.Put(GSPerfMon::TextureCopies, 1); } @@ -3805,7 +3805,7 @@ void GSRendererHW::Draw() } else if (!m_r.rintersect(z_address_info.rect_since).rempty() && m_cached_ctx.TEST.ZTST > ZTST_ALWAYS) { - GL_CACHE("HW: RT in RT Updating Z copy on draw %d z_offset %d", s_n, z_address_info.offset); + GL_CACHE("HW: RT in RT Updating Z copy on draw %lld z_offset %d", s_n, z_address_info.offset); GSVector4 sRect = GSVector4(z_address_info.rect_since.x / static_cast(ds->m_unscaled_size.x), z_address_info.rect_since.y / static_cast(ds->m_unscaled_size.y), (z_address_info.rect_since.z + (1.0f / ds->m_scale)) / static_cast(ds->m_unscaled_size.x), (z_address_info.rect_since.w + (1.0f / ds->m_scale)) / static_cast(ds->m_unscaled_size.y)); GSVector4i dRect = GSVector4i((old_z_horizontal_offset + z_address_info.rect_since.x) * ds->m_scale, (old_z_vertical_offset + z_address_info.rect_since.y) * ds->m_scale, (old_z_horizontal_offset + z_address_info.rect_since.z + (1.0f / ds->m_scale)) * ds->m_scale, (old_z_vertical_offset + z_address_info.rect_since.w + (1.0f / ds->m_scale)) * ds->m_scale); @@ -3856,7 +3856,7 @@ void GSRendererHW::Draw() sRect.z = std::min(sRect.z, sRect.x + ((1.0f * ds->m_scale) + (static_cast(m_cached_ctx.FRAME.FBW * 64)) / static_cast(ds->m_unscaled_size.x))); dRect.z = std::min(dRect.z, dRect.x + static_cast(1 * ds->m_scale) + static_cast(static_cast(m_cached_ctx.FRAME.FBW * 64) * ds->m_scale)); - GL_CACHE("HW: RT in RT Z copy on draw %d z_vert_offset %d", s_n, page_offset); + GL_CACHE("HW: RT in RT Z copy on draw %lld z_vert_offset %d", s_n, page_offset); if (m_cached_ctx.TEST.ZTST > ZTST_ALWAYS || !dRect.rintersect(GSVector4i(GSVector4(m_r) * ds->m_scale)).eq(dRect)) { @@ -4613,7 +4613,7 @@ void GSRendererHW::Draw() if (GSConfig.SaveTexture && src) { - s = GetDrawDumpPath("%05d_f%05lld_itex_%s_%05x(%05x)_%s_%d%d_%02x_%02x_%02x_%02x.dds", + s = GetDrawDumpPath("%05lld_f%05lld_itex_%s_%05x(%05x)_%s_%d%d_%02x_%02x_%02x_%02x.dds", s_n, frame, (src->m_from_target ? "tgt" : "gs"), static_cast(m_cached_ctx.TEX0.TBP0), (src->m_from_target ? src->m_from_target->m_TEX0.TBP0 : src->m_TEX0.TBP0), GSUtil::GetPSMName(m_cached_ctx.TEX0.PSM), static_cast(m_cached_ctx.CLAMP.WMS), static_cast(m_cached_ctx.CLAMP.WMT), static_cast(m_cached_ctx.CLAMP.MINU), static_cast(m_cached_ctx.CLAMP.MAXU), @@ -4623,7 +4623,7 @@ void GSRendererHW::Draw() if (src->m_palette) { - s = GetDrawDumpPath("%05d_f%05lld_itpx_%05x_%s.dds", s_n, frame, m_cached_ctx.TEX0.CBP, GSUtil::GetPSMName(m_cached_ctx.TEX0.CPSM)); + s = GetDrawDumpPath("%05lld_f%05lld_itpx_%05x_%s.dds", s_n, frame, m_cached_ctx.TEX0.CBP, GSUtil::GetPSMName(m_cached_ctx.TEX0.CPSM)); src->m_palette->Save(s); } @@ -4631,7 +4631,7 @@ void GSRendererHW::Draw() if (rt && GSConfig.SaveRT) { - s = GetDrawDumpPath("%05d_f%05lld_rt0_%05x_(%05x)_%s.bmp", s_n, frame, m_cached_ctx.FRAME.Block(), rt->m_TEX0.TBP0, GSUtil::GetPSMName(m_cached_ctx.FRAME.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rt0_%05x_(%05x)_%s.bmp", s_n, frame, m_cached_ctx.FRAME.Block(), rt->m_TEX0.TBP0, GSUtil::GetPSMName(m_cached_ctx.FRAME.PSM)); if (rt->m_texture) rt->m_texture->Save(s); @@ -4639,7 +4639,7 @@ void GSRendererHW::Draw() if (ds && GSConfig.SaveDepth) { - s = GetDrawDumpPath("%05d_f%05lld_rz0_%05x_(%05x)_%s.bmp", s_n, frame, m_cached_ctx.ZBUF.Block(), ds->m_TEX0.TBP0, GSUtil::GetPSMName(m_cached_ctx.ZBUF.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rz0_%05x_(%05x)_%s.bmp", s_n, frame, m_cached_ctx.ZBUF.Block(), ds->m_TEX0.TBP0, GSUtil::GetPSMName(m_cached_ctx.ZBUF.PSM)); if (m_using_temp_z) g_texture_cache->GetTemporaryZ()->Save(s); @@ -4650,14 +4650,14 @@ void GSRendererHW::Draw() if (m_oi && !m_oi(*this, rt ? rt->m_texture : nullptr, ds ? ds->m_texture : nullptr, src)) { - GL_INS("HW: Warning skipping a draw call (%d)", s_n); + GL_INS("HW: Warning skipping a draw call (%lld)", s_n); CleanupDraw(true); return; } if (!OI_BlitFMV(rt, src, m_r)) { - GL_INS("HW: Warning skipping a draw call (%d)", s_n); + GL_INS("HW: Warning skipping a draw call (%lld)", s_n); CleanupDraw(true); return; } @@ -4776,7 +4776,7 @@ void GSRendererHW::Draw() ((real_rect.z + (1.0f / ds->m_scale)) * ds->m_scale) / static_cast(g_texture_cache->GetTemporaryZ()->GetWidth()), static_cast((real_rect.w + (1.0f / ds->m_scale)) * ds->m_scale) / static_cast(g_texture_cache->GetTemporaryZ()->GetHeight())); - GL_CACHE("HW: RT in RT Z copy back draw %d z_vert_offset %d rt_vert_offset %d z_horz_offset %d rt_horz_offset %d", s_n, z_vertical_offset, vertical_offset, z_horizontal_offset, horizontal_offset); + GL_CACHE("HW: RT in RT Z copy back draw %lld z_vert_offset %d rt_vert_offset %d z_horz_offset %d rt_horz_offset %d", s_n, z_vertical_offset, vertical_offset, z_horizontal_offset, horizontal_offset); g_gs_device->StretchRect(g_texture_cache->GetTemporaryZ(), sRect, ds->m_texture, GSVector4(dRect), ShaderConvert::DEPTH_COPY, false); g_perfmon.Put(GSPerfMon::TextureCopies, 1); } @@ -4789,7 +4789,7 @@ void GSRendererHW::Draw() (((ds->m_valid.z + horizontal_offset) + (1.0f / ds->m_scale)) * ds->m_scale) / static_cast(g_texture_cache->GetTemporaryZ()->GetWidth()), static_cast((ds->m_valid.w + vertical_offset + (1.0f / ds->m_scale)) * ds->m_scale) / static_cast(g_texture_cache->GetTemporaryZ()->GetHeight())); - GL_CACHE("HW: RT in RT Z copy back draw %d z_vert_offset %d z_offset %d", s_n, z_vertical_offset, vertical_offset); + GL_CACHE("HW: RT in RT Z copy back draw %lld z_vert_offset %d z_offset %d", s_n, z_vertical_offset, vertical_offset); g_gs_device->StretchRect(g_texture_cache->GetTemporaryZ(), sRect, ds->m_texture, GSVector4(dRect), ShaderConvert::DEPTH_COPY, false); g_perfmon.Put(GSPerfMon::TextureCopies, 1); } @@ -4830,14 +4830,14 @@ void GSRendererHW::Draw() if (rt && GSConfig.SaveRT && !m_last_rt) { - s = GetDrawDumpPath("%05d_f%05lld_rt1_%05x_(%05x)_%s.bmp", s_n, frame, m_cached_ctx.FRAME.Block(), rt->m_TEX0.TBP0, GSUtil::GetPSMName(m_cached_ctx.FRAME.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rt1_%05x_(%05x)_%s.bmp", s_n, frame, m_cached_ctx.FRAME.Block(), rt->m_TEX0.TBP0, GSUtil::GetPSMName(m_cached_ctx.FRAME.PSM)); rt->m_texture->Save(s); } if (ds && GSConfig.SaveDepth) { - s = GetDrawDumpPath("%05d_f%05lld_rz1_%05x_%s.bmp", s_n, frame, m_cached_ctx.ZBUF.Block(), GSUtil::GetPSMName(m_cached_ctx.ZBUF.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rz1_%05x_%s.bmp", s_n, frame, m_cached_ctx.ZBUF.Block(), GSUtil::GetPSMName(m_cached_ctx.ZBUF.PSM)); if (m_using_temp_z) g_texture_cache->GetTemporaryZ()->Save(s); @@ -5572,7 +5572,7 @@ __ri bool GSRendererHW::EmulateChannelShuffle(GSTextureCache::Target* src, bool { const bool req_offset = (m_cached_ctx.CLAMP.WMS != 3 || (m_cached_ctx.CLAMP.MAXU & ~0xF) == 0) && (m_cached_ctx.CLAMP.WMT != 3 || (m_cached_ctx.CLAMP.MAXV & ~0x3) == 0); - //DevCon.Warning("HW: Draw %d offset %d", s_n, frame_page_offset); + //DevCon.Warning("HW: Draw %lld offset %d", s_n, frame_page_offset); // Offset the frame but clear the draw offset if (req_offset) m_cached_ctx.FRAME.FBP += frame_page_offset; @@ -8295,7 +8295,7 @@ GSRendererHW::CLUTDrawTestResult GSRendererHW::PossibleCLUTDraw() // Debugging stuff.. //const u32 startbp = psm.info.bn(m_vt.m_min.p.x, m_vt.m_min.p.y, m_FRAME.Block(), m_FRAME.FBW); //const u32 endbp = psm.info.bn(m_vt.m_max.p.x, m_vt.m_max.p.y, m_FRAME.Block(), m_FRAME.FBW); - //DevCon.Warning("HW: Draw width %f height %f page width %f height %f TPSM %x TBP0 %x FPSM %x FBP %x CBP %x valid size %d Invalid %d DISPFB0 %x DISPFB1 %x start %x end %x draw %d", draw_width, draw_height, page_width, page_height, m_cached_ctx.TEX0.PSM, m_cached_ctx.TEX0.TBP0, m_FRAME.PSM, m_FRAME.Block(), m_mem.m_clut.GetCLUTCBP(), valid_size, m_mem.m_clut.IsInvalid(), m_regs->DISP[0].DISPFB.Block(), m_regs->DISP[1].DISPFB.Block(), startbp, endbp, s_n); + //DevCon.Warning("HW: Draw width %f height %f page width %f height %f TPSM %x TBP0 %x FPSM %x FBP %x CBP %x valid size %d Invalid %d DISPFB0 %x DISPFB1 %x start %x end %x draw %lld", draw_width, draw_height, page_width, page_height, m_cached_ctx.TEX0.PSM, m_cached_ctx.TEX0.TBP0, m_FRAME.PSM, m_FRAME.Block(), m_mem.m_clut.GetCLUTCBP(), valid_size, m_mem.m_clut.IsInvalid(), m_regs->DISP[0].DISPFB.Block(), m_regs->DISP[1].DISPFB.Block(), startbp, endbp, s_n); return CLUTDrawTestResult::CLUTDrawOnCPU; } @@ -9255,7 +9255,7 @@ int GSRendererHW::IsScalingDraw(GSTextureCache::Source* src, bool no_gaps) if (no_gaps_or_single_sprite && ((is_upscale && !m_context->ALPHA.IsOpaque()) || (is_downscale && (dst_discarded || (PRIM->ABE && m_context->ALPHA.C == 2 && m_context->ALPHA.FIX == 255))))) { - GL_INS("HW: %s draw detected - from %dx%d to %dx%d draw %d", is_downscale ? "Downscale" : "Upscale", tex_size.x, tex_size.y, draw_size.x, draw_size.y, s_n); + GL_INS("HW: %s draw detected - from %dx%d to %dx%d draw %lld", is_downscale ? "Downscale" : "Upscale", tex_size.x, tex_size.y, draw_size.x, draw_size.y, s_n); return is_upscale ? 2 : 1; } diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.h b/pcsx2/GS/Renderers/HW/GSRendererHW.h index 4194a6214e..9bae4fff90 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.h +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.h @@ -242,7 +242,7 @@ public: void PurgeTextureCache(bool sources, bool targets, bool hash_cache) override; void ReadbackTextureCache() override; - int GetLastGPUCLUTDraw() override; + u64 GetLastGPUCLUTDraw() override; GSTexture* LookupPaletteSource(u32 CBP, u32 CPSM, u32 CBW, GSVector2i& offset, float* scale, const GSVector2i& size) override; diff --git a/pcsx2/GS/Renderers/HW/GSTextureCache.cpp b/pcsx2/GS/Renderers/HW/GSTextureCache.cpp index 0ce75d3eb5..2e3770c4f1 100644 --- a/pcsx2/GS/Renderers/HW/GSTextureCache.cpp +++ b/pcsx2/GS/Renderers/HW/GSTextureCache.cpp @@ -430,7 +430,7 @@ GSVector4i GSTextureCache::TranslateAlignedRectByPage(u32 tbp, u32 tebp, u32 tbw // The width is mismatched to the page. if (!is_invalidation && GSConfig.UserHacks_TextureInsideRt < GSTextureInRtMode::MergeTargets) { - DevCon.Warning("Uneven pages mess up sbp %x dbp %x spgw %d dpgw %d src fmt %d dst fmt %d src_rect %d, %d, %d, %d draw %d", sbp, tbp, src_pgw, dst_pgw, spsm, tpsm, in_rect.x, in_rect.y, in_rect.z, in_rect.w, GSState::s_n); + DevCon.Warning("Uneven pages mess up sbp %x dbp %x spgw %d dpgw %d src fmt %d dst fmt %d src_rect %d, %d, %d, %d draw %lld", sbp, tbp, src_pgw, dst_pgw, spsm, tpsm, in_rect.x, in_rect.y, in_rect.z, in_rect.w, GSState::s_n); return GSVector4i::zero(); } @@ -1704,7 +1704,7 @@ GSTextureCache::Source* GSTextureCache::LookupSource(const bool is_color, const match = false; //if (!t_clean && can_convert) - // DevCon.Warning("Expected %x Got %x shuffle %d draw %d", psm, t_psm, possible_shuffle, GSState::s_n); + // DevCon.Warning("Expected %x Got %x shuffle %d draw %lld", psm, t_psm, possible_shuffle, GSState::s_n); if (match) { // It is a complex to convert the code in shader. As a reference, let's do it on the CPU, @@ -2321,7 +2321,7 @@ void GSTextureCache::CombineAlignedInsideTargets(Target* target, GSTextureCache: target->m_valid_alpha_high |= t->m_valid_alpha_high; target->m_valid_alpha_low |= t->m_valid_alpha_low; - GL_CACHE("Combining %x-%x in to %x-%x draw %d", t->m_TEX0.TBP0, t->m_end_block, target->m_TEX0.TBP0, target->m_end_block, GSState::s_n); + GL_CACHE("Combining %x-%x in to %x-%x draw %lld", t->m_TEX0.TBP0, t->m_end_block, target->m_TEX0.TBP0, target->m_end_block, GSState::s_n); if (target->m_type == RenderTarget) { @@ -2604,7 +2604,7 @@ GSTextureCache::Target* GSTextureCache::LookupTarget(GIFRegTEX0 TEX0, const GSVe } } - //DevCon.Warning("Here draw %d wanted %x PSM %x got %x PSM %x offset of %d pages width %d pages draw width %d", GSState::s_n, bp, TEX0.PSM, t->m_TEX0.TBP0, t->m_TEX0.PSM, (bp - t->m_TEX0.TBP0) >> 5, t->m_TEX0.TBW, draw_rect.width()); + //DevCon.Warning("Here draw %lld wanted %x PSM %x got %x PSM %x offset of %d pages width %d pages draw width %d", GSState::s_n, bp, TEX0.PSM, t->m_TEX0.TBP0, t->m_TEX0.PSM, (bp - t->m_TEX0.TBP0) >> 5, t->m_TEX0.TBW, draw_rect.width()); dst = t; dst->m_32_bits_fmt |= (psm_s.bpp != 16); @@ -3079,7 +3079,7 @@ GSTextureCache::Target* GSTextureCache::LookupTarget(GIFRegTEX0 TEX0, const GSVe t->m_texture = nullptr; } - GL_CACHE("TC: Deleting Z draw %d", GSState::s_n); + GL_CACHE("TC: Deleting Z draw %lld", GSState::s_n); InvalidateSourcesFromTarget(t); i = rev_list.erase(i); delete t; @@ -3273,12 +3273,12 @@ GSTextureCache::Target* GSTextureCache::CreateTarget(GIFRegTEX0 TEX0, const GSVe { if (type == DepthStencil) { - GL_CACHE("TC: Lookup Target(Depth) %dx%d, miss (0x%x, TBW %d, %s) draw %d", size.x, size.y, TEX0.TBP0, + GL_CACHE("TC: Lookup Target(Depth) %dx%d, miss (0x%x, TBW %d, %s) draw %lld", size.x, size.y, TEX0.TBP0, TEX0.TBW, GSUtil::GetPSMName(TEX0.PSM), g_gs_renderer->s_n); } else { - GL_CACHE("TC: Lookup %s(Color) %dx%d FBMSK %08x, miss (0x%x, TBW %d, %s) draw %d", is_frame ? "Frame" : "Target", + GL_CACHE("TC: Lookup %s(Color) %dx%d FBMSK %08x, miss (0x%x, TBW %d, %s) draw %lld", is_frame ? "Frame" : "Target", size.x, size.y, fbmask, TEX0.TBP0, TEX0.TBW, GSUtil::GetPSMName(TEX0.PSM), g_gs_renderer->s_n); } // Avoid making garbage targets (usually PCRTC). @@ -3654,7 +3654,7 @@ bool GSTextureCache::PreloadTarget(GIFRegTEX0 TEX0, const GSVector2i& size, cons if (texture_height > dst->m_unscaled_size.y && !dst->ResizeTexture(dst->m_unscaled_size.x, texture_height, true)) { // Resize failed, probably ran out of VRAM, better luck next time. Fall back to CPU. - DevCon.Warning("Failed to resize target on preload? Draw %d", GSState::s_n); + DevCon.Warning("Failed to resize target on preload? Draw %lld", GSState::s_n); i++; continue; } @@ -5150,7 +5150,7 @@ bool GSTextureCache::Move(u32 SBP, u32 SBW, u32 SPSM, int sx, int sy, u32 DBP, u // Make sure the copy doesn't go out of bounds (it shouldn't). if ((scaled_dx + scaled_w) > dst->m_texture->GetWidth() || (scaled_dy + scaled_h) > dst->m_texture->GetHeight()) return false; - GL_CACHE("TC: HW Move after draw %d 0x%x[BW:%u PSM:%s] to 0x%x[BW:%u PSM:%s] <%d,%d->%d,%d> -> <%d,%d->%d,%d>", GSState::s_n, SBP, SBW, + GL_CACHE("TC: HW Move after draw %lld 0x%x[BW:%u PSM:%s] to 0x%x[BW:%u PSM:%s] <%d,%d->%d,%d> -> <%d,%d->%d,%d>", GSState::s_n, SBP, SBW, GSUtil::GetPSMName(SPSM), DBP, DBW, GSUtil::GetPSMName(DPSM), sx, sy, sx + w, sy + h, dx, dy, dx + w, dy + h); const bool cover_whole_target = dst->m_type == RenderTarget && GSVector4i(dx, dy, dx + w, dy + h).rintersect(dst->m_valid).eq(dst->m_valid); @@ -5585,7 +5585,7 @@ GSVector2i GSTextureCache::GetTargetSize(u32 bp, u32 fbw, u32 psm, s32 min_width } } - DbgCon.WriteLn("TC: New size at %x %u %u: %ux%u draw %d", bp, fbw, psm, min_width, min_height, GSState::s_n); + DbgCon.WriteLn("TC: New size at %x %u %u: %ux%u draw %lld", bp, fbw, psm, min_width, min_height, GSState::s_n); m_target_heights.push_front(search); return GSVector2i(min_width, min_height); } @@ -7765,7 +7765,7 @@ void GSTextureCache::Target::Update(bool cannot_scale) const GSTextureCache::TempZAddress z_address_info = g_texture_cache->GetTemporaryZInfo(); if (m_TEX0.TBP0 == z_address_info.ZBP) { - //GL_CACHE("TC: RT in RT Updating Z copy on draw %d z_offset %d", s_n, z_address_info.offset); + //GL_CACHE("TC: RT in RT Updating Z copy on draw %lld z_offset %d", s_n, z_address_info.offset); const GSVector4i dRect = GSVector4i(total_rect.x * m_scale, (z_address_info.offset + total_rect.y) * m_scale, (total_rect.z + (1.0f / m_scale)) * m_scale, (z_address_info.offset + total_rect.w + (1.0f / m_scale)) * m_scale); g_gs_device->StretchRect(m_texture, GSVector4(total_rect.x / static_cast(m_unscaled_size.x), total_rect.y / static_cast(m_unscaled_size.y), (total_rect.z + (1.0f / m_scale)) / static_cast(m_unscaled_size.x), (total_rect.w + (1.0f / m_scale)) / static_cast(m_unscaled_size.y)), g_texture_cache->GetTemporaryZ(), GSVector4(dRect), ShaderConvert::DEPTH_COPY, false); g_perfmon.Put(GSPerfMon::TextureCopies, 1); diff --git a/pcsx2/GS/Renderers/HW/GSTextureCache.h b/pcsx2/GS/Renderers/HW/GSTextureCache.h index 71ae3bffd6..9eae4c8b34 100644 --- a/pcsx2/GS/Renderers/HW/GSTextureCache.h +++ b/pcsx2/GS/Renderers/HW/GSTextureCache.h @@ -232,7 +232,7 @@ public: bool m_valid_rgb = false; bool m_rt_alpha_scale = false; bool m_downscaled = false; - int m_last_draw = 0; + u64 m_last_draw = 0; bool m_is_frame = false; bool m_used = false; @@ -442,7 +442,7 @@ protected: TempZAddress m_temporary_z_info; Target* m_last_clut_target = nullptr; - int m_last_gpu_clut_draw = 0; + u64 m_last_gpu_clut_draw = 0; std::unique_ptr m_color_download_texture; std::unique_ptr m_uint16_download_texture; @@ -484,7 +484,7 @@ public: __fi u64 GetTotalHashCacheMemoryUsage() const { return (m_hash_cache_memory_usage + m_hash_cache_replacement_memory_usage); } __fi u64 GetSourceMemoryUsage() const { return m_source_memory_usage; } __fi u64 GetTargetMemoryUsage() const { return m_target_memory_usage; } - __fi int GetLastGPUCLUTDraw() { return m_last_gpu_clut_draw; }; + __fi u64 GetLastGPUCLUTDraw() { return m_last_gpu_clut_draw; }; void Read(Target* t, const GSVector4i& r); void Read(Source* t, const GSVector4i& r); diff --git a/pcsx2/GS/Renderers/SW/GSRendererSW.cpp b/pcsx2/GS/Renderers/SW/GSRendererSW.cpp index 1682ddb0c9..4872f70af5 100644 --- a/pcsx2/GS/Renderers/SW/GSRendererSW.cpp +++ b/pcsx2/GS/Renderers/SW/GSRendererSW.cpp @@ -181,7 +181,7 @@ GSTexture* GSRendererSW::GetOutput(int i, float& scale, int& y_offset) if (GSConfig.SaveFrame && GSConfig.ShouldDump(s_n, g_perfmon.GetFrame())) { - m_texture[index]->Save(GetDrawDumpPath("%05d_f%05lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), i, (int)curFramebuffer.Block(), GSUtil::GetPSMName(curFramebuffer.PSM))); + m_texture[index]->Save(GetDrawDumpPath("%05lld_f%05lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), i, (int)curFramebuffer.Block(), GSUtil::GetPSMName(curFramebuffer.PSM))); } } @@ -556,11 +556,11 @@ void GSRendererSW::Draw() if (texture_shuffle) { // Dump the RT in 32 bits format. It helps to debug texture shuffle effect - s = GetDrawDumpPath("%05d_f%05lld_itexraw_%05x_32bits.bmp", s_n, frame, (int)m_context->TEX0.TBP0); + s = GetDrawDumpPath("%05lld_f%05lld_itexraw_%05x_32bits.bmp", s_n, frame, (int)m_context->TEX0.TBP0); m_mem.SaveBMP(s, m_context->TEX0.TBP0, m_context->TEX0.TBW, 0, 1 << m_context->TEX0.TW, 1 << m_context->TEX0.TH); } - s = GetDrawDumpPath("%05d_f%05lld_itexraw_%05x_%s.bmp", s_n, frame, (int)m_context->TEX0.TBP0, GSUtil::GetPSMName(m_context->TEX0.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_itexraw_%05x_%s.bmp", s_n, frame, (int)m_context->TEX0.TBP0, GSUtil::GetPSMName(m_context->TEX0.PSM)); m_mem.SaveBMP(s, m_context->TEX0.TBP0, m_context->TEX0.TBW, m_context->TEX0.PSM, 1 << m_context->TEX0.TW, 1 << m_context->TEX0.TH); } @@ -570,17 +570,17 @@ void GSRendererSW::Draw() if (texture_shuffle) { // Dump the RT in 32 bits format. It helps to debug texture shuffle effect - s = GetDrawDumpPath("%05d_f%05lld_rt0_%05x_32bits.bmp", s_n, frame, m_context->FRAME.Block()); + s = GetDrawDumpPath("%05lld_f%05lld_rt0_%05x_32bits.bmp", s_n, frame, m_context->FRAME.Block()); m_mem.SaveBMP(s, m_context->FRAME.Block(), m_context->FRAME.FBW, 0, r.z, r.w); } - s = GetDrawDumpPath("%05d_f%05lld_rt0_%05x_%s.bmp", s_n, frame, m_context->FRAME.Block(), GSUtil::GetPSMName(m_context->FRAME.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rt0_%05x_%s.bmp", s_n, frame, m_context->FRAME.Block(), GSUtil::GetPSMName(m_context->FRAME.PSM)); m_mem.SaveBMP(s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, r.z, r.w); } if (GSConfig.SaveDepth) { - s = GetDrawDumpPath("%05d_f%05lld_rz0_%05x_%s.bmp", s_n, frame, m_context->ZBUF.Block(), GSUtil::GetPSMName(m_context->ZBUF.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rz0_%05x_%s.bmp", s_n, frame, m_context->ZBUF.Block(), GSUtil::GetPSMName(m_context->ZBUF.PSM)); m_mem.SaveBMP(s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, r.z, r.w); } @@ -594,17 +594,17 @@ void GSRendererSW::Draw() if (texture_shuffle) { // Dump the RT in 32 bits format. It helps to debug texture shuffle effect - s = GetDrawDumpPath("%05d_f%05lld_rt1_%05x_32bits.bmp", s_n, frame, m_context->FRAME.Block()); + s = GetDrawDumpPath("%05lld_f%05lld_rt1_%05x_32bits.bmp", s_n, frame, m_context->FRAME.Block()); m_mem.SaveBMP(s, m_context->FRAME.Block(), m_context->FRAME.FBW, 0, r.z, r.w); } - s = GetDrawDumpPath("%05d_f%05lld_rt1_%05x_%s.bmp", s_n, frame, m_context->FRAME.Block(), GSUtil::GetPSMName(m_context->FRAME.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rt1_%05x_%s.bmp", s_n, frame, m_context->FRAME.Block(), GSUtil::GetPSMName(m_context->FRAME.PSM)); m_mem.SaveBMP(s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, r.z, r.w); } if (GSConfig.SaveDepth) { - s = GetDrawDumpPath("%05d_f%05lld_rz1_%05x_%s.bmp", s_n, frame, m_context->ZBUF.Block(), GSUtil::GetPSMName(m_context->ZBUF.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rz1_%05x_%s.bmp", s_n, frame, m_context->ZBUF.Block(), GSUtil::GetPSMName(m_context->ZBUF.PSM)); m_mem.SaveBMP(s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, r.z, r.w); } @@ -687,14 +687,14 @@ void GSRendererSW::Sync(int reason) if (GSConfig.SaveRT) { - s = GetDrawDumpPath("%05d_f%05lld_rt1_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), m_context->FRAME.Block(), GSUtil::GetPSMName(m_context->FRAME.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_rt1_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), m_context->FRAME.Block(), GSUtil::GetPSMName(m_context->FRAME.PSM)); m_mem.SaveBMP(s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, PCRTCDisplays.GetFramebufferRect(-1).width(), 512); } if (GSConfig.SaveDepth) { - s = GetDrawDumpPath("%05d_f%05lld_zb1_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), m_context->ZBUF.Block(), GSUtil::GetPSMName(m_context->ZBUF.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_zb1_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), m_context->ZBUF.Block(), GSUtil::GetPSMName(m_context->ZBUF.PSM)); m_mem.SaveBMP(s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, PCRTCDisplays.GetFramebufferRect(-1).width(), 512); } @@ -706,7 +706,7 @@ void GSRendererSW::Sync(int reason) if constexpr (LOG) { - fprintf(s_fp, "sync n=%d r=%d t=%" PRIu64 " p=%d %c\n", s_n, reason, t, pixels, t > 10000000 ? '*' : ' '); + fprintf(s_fp, "sync n=%lld r=%d t=%" PRIu64 " p=%d %c\n", s_n, reason, t, pixels, t > 10000000 ? '*' : ' '); fflush(s_fp); } @@ -1656,14 +1656,14 @@ void GSRendererSW::SharedData::UpdateSource() { const GIFRegTEX0& TEX0 = g_gs_renderer->GetTex0Layer(i); - s = GetDrawDumpPath("%05d_f%05lld_itex%d_%05x_%s.bmp", g_gs_renderer->s_n, frame, i, TEX0.TBP0, GSUtil::GetPSMName(TEX0.PSM)); + s = GetDrawDumpPath("%05lld_f%05lld_itex%d_%05x_%s.bmp", g_gs_renderer->s_n, frame, i, TEX0.TBP0, GSUtil::GetPSMName(TEX0.PSM)); m_tex[i].t->Save(s); } if (global.clut) { - s = GetDrawDumpPath("%05d_f%05lld_itexp_%05x_%s.bmp", g_gs_renderer->s_n, frame, (int)g_gs_renderer->m_context->TEX0.CBP, GSUtil::GetPSMName(g_gs_renderer->m_context->TEX0.CPSM)); + s = GetDrawDumpPath("%05lld_f%05lld_itexp_%05x_%s.bmp", g_gs_renderer->s_n, frame, (int)g_gs_renderer->m_context->TEX0.CBP, GSUtil::GetPSMName(g_gs_renderer->m_context->TEX0.CPSM)); GSPng::Save((IsDevBuild || GSConfig.SaveAlpha) ? GSPng::RGB_A_PNG : GSPng::RGB_PNG, s, reinterpret_cast(global.clut), 256, 1, sizeof(u32) * 256, GSConfig.PNGCompressionLevel, false); } } diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp index 51ec1f788d..93acca27fd 100644 --- a/pcsx2/Pcsx2Config.cpp +++ b/pcsx2/Pcsx2Config.cpp @@ -1145,9 +1145,9 @@ bool Pcsx2Config::GSOptions::UseHardwareRenderer() const return (Renderer != GSRendererType::Null && Renderer != GSRendererType::SW); } -bool Pcsx2Config::GSOptions::ShouldDump(int draw, int frame) const +bool Pcsx2Config::GSOptions::ShouldDump(u64 draw, int frame) const { - int drawOffset = draw - SaveDrawStart; + int drawOffset = static_cast(draw - static_cast(SaveDrawStart)); int frameOffset = frame - SaveFrameStart; return DumpGSData && (drawOffset >= 0) && ((SaveDrawCount < 0) || (drawOffset < SaveDrawCount)) && (drawOffset % SaveDrawBy == 0) &&