From 657d20d36e9b97deec5c9810abf2a97ee1a62d10 Mon Sep 17 00:00:00 2001 From: TJnotJT Date: Thu, 12 Jun 2025 11:03:08 -0400 Subject: [PATCH] GS: Small fix/addition to info dumping. --- pcsx2/CMakeLists.txt | 1 + pcsx2/GS/GSDrawingContext.cpp | 67 +++++++------- pcsx2/GS/GSDrawingEnvironment.cpp | 147 ++++++++++++++++++++++++++++++ pcsx2/GS/GSDrawingEnvironment.h | 139 +--------------------------- pcsx2/GS/GSState.cpp | 23 +++-- pcsx2/GS/GSUtil.cpp | 20 ++++ pcsx2/GS/GSUtil.h | 3 + pcsx2/pcsx2.vcxproj | 3 +- pcsx2/pcsx2.vcxproj.filters | 5 +- 9 files changed, 226 insertions(+), 182 deletions(-) create mode 100644 pcsx2/GS/GSDrawingEnvironment.cpp diff --git a/pcsx2/CMakeLists.txt b/pcsx2/CMakeLists.txt index 111c20e08f..62ccb0a94b 100644 --- a/pcsx2/CMakeLists.txt +++ b/pcsx2/CMakeLists.txt @@ -487,6 +487,7 @@ set(pcsx2GSSources GS/GSCapture.cpp GS/GSClut.cpp GS/GSDrawingContext.cpp + GS/GSDrawingEnvironment.cpp GS/GSDump.cpp GS/GSLocalMemory.cpp GS/GSLzma.cpp diff --git a/pcsx2/GS/GSDrawingContext.cpp b/pcsx2/GS/GSDrawingContext.cpp index b8aa57ecd0..d1507ab717 100644 --- a/pcsx2/GS/GSDrawingContext.cpp +++ b/pcsx2/GS/GSDrawingContext.cpp @@ -171,29 +171,29 @@ void GSDrawingContext::Dump(const std::string& filename) fprintf(fp, "XYOFFSET\n" - "\tX:%u\n" - "\tY:%u\n\n", - XYOFFSET.OFX, XYOFFSET.OFY); + "\tOFX:%.4f\n" + "\tOFY:%.4f\n\n", + XYOFFSET.OFX / 16.0f, XYOFFSET.OFY / 16.0f); fprintf(fp, "MIPTBP1\n" - "\tBP1:0x%x\n" - "\tBW1:%u\n" - "\tBP2:0x%x\n" - "\tBW2:%u\n" - "\tBP3:0x%x\n" - "\tBW3:%u\n\n", + "\tTBP1:0x%x\n" + "\tTBW1:%u\n" + "\tTBP2:0x%x\n" + "\tTBW2:%u\n" + "\tTBP3:0x%x\n" + "\tTBW3:%u\n\n", static_cast(MIPTBP1.TBP1), static_cast(MIPTBP1.TBW1), static_cast(MIPTBP1.TBP2), static_cast(MIPTBP1.TBW2), static_cast(MIPTBP1.TBP3), static_cast(MIPTBP1.TBW3)); fprintf(fp, "MIPTBP2\n" - "\tBP4:0x%x\n" - "\tBW4:%u\n" - "\tBP5:0x%x\n" - "\tBW5:%u\n" - "\tBP6:0x%x\n" - "\tBW6:%u\n\n", + "\tTBP4:0x%x\n" + "\tTBW4:%u\n" + "\tTBP5:0x%x\n" + "\tTBW5:%u\n" + "\tTBP6:0x%x\n" + "\tTBW6:%u\n\n", static_cast(MIPTBP2.TBP4), static_cast(MIPTBP2.TBW4), static_cast(MIPTBP2.TBP5), static_cast(MIPTBP2.TBW5), static_cast(MIPTBP2.TBP6), static_cast(MIPTBP2.TBW6)); @@ -201,17 +201,17 @@ void GSDrawingContext::Dump(const std::string& filename) "TEX0\n" "\tTBP0:0x%x\n" "\tTBW:%u\n" - "\tPSM:0x%x\n" + "\tPSM:0x%x (%s)\n" "\tTW:%u\n" "\tTH:%u\n" "\tTCC:%u\n" "\tTFX:%u\n" "\tCBP:0x%x\n" - "\tCPSM:0x%x\n" + "\tCPSM:0x%x (%s)\n" "\tCSM:%u\n" "\tCSA:%u\n" "\tCLD:%u\n\n", - TEX0.TBP0, TEX0.TBW, TEX0.PSM, TEX0.TW, static_cast(TEX0.TH), TEX0.TCC, TEX0.TFX, TEX0.CBP, TEX0.CPSM, TEX0.CSM, TEX0.CSA, TEX0.CLD); + TEX0.TBP0, TEX0.TBW, TEX0.PSM, GSUtil::GetPSMName(TEX0.PSM), TEX0.TW, static_cast(TEX0.TH), TEX0.TCC, TEX0.TFX, TEX0.CBP, TEX0.CPSM, GSUtil::GetPSMName(TEX0.CPSM), TEX0.CSM,TEX0.CSA, TEX0.CLD); fprintf(fp, "TEX1\n" @@ -226,21 +226,20 @@ void GSDrawingContext::Dump(const std::string& filename) fprintf(fp, "CLAMP\n" - "\tWMS:%u\n" - "\tWMT:%u\n" + "\tWMS:%u (%s)\n" + "\tWMT:%u (%s)\n" "\tMINU:%u\n" "\tMAXU:%u\n" "\tMAXV:%u\n" "\tMINV:%u\n\n", - CLAMP.WMS, CLAMP.WMT, CLAMP.MINU, CLAMP.MAXU, CLAMP.MAXV, static_cast(CLAMP.MINV)); + CLAMP.WMS, GSUtil::GetWMName(CLAMP.WMS), CLAMP.WMT,GSUtil::GetWMName(CLAMP.WMT), CLAMP.MINU, CLAMP.MAXU, CLAMP.MAXV, static_cast(CLAMP.MINV)); - // TODO mimmap? (yes I'm lazy) fprintf(fp, "SCISSOR\n" - "\tX0:%u\n" - "\tX1:%u\n" - "\tY0:%u\n" - "\tY1:%u\n\n", + "\tSCAX0:%u\n" + "\tSCAX1:%u\n" + "\tSCAY0:%u\n" + "\tSCAY1:%u\n\n", SCISSOR.SCAX0, SCISSOR.SCAX1, SCISSOR.SCAY0, SCISSOR.SCAY1); fprintf(fp, @@ -258,14 +257,14 @@ void GSDrawingContext::Dump(const std::string& filename) fprintf(fp, "TEST\n" "\tATE:%u\n" - "\tATST:%s\n" + "\tATST:%u (%s)\n" "\tAREF:%u\n" - "\tAFAIL:%s\n" + "\tAFAIL:%u (%s)\n" "\tDATE:%u\n" "\tDATM:%u\n" "\tZTE:%u\n" - "\tZTST:%u\n\n", - TEST.ATE, GSUtil::GetATSTName(TEST.ATST), TEST.AREF, GSUtil::GetAFAILName(TEST.AFAIL), TEST.DATE, TEST.DATM, TEST.ZTE, TEST.ZTST); + "\tZTST:%u (%s)\n\n", + TEST.ATE, TEST.ATST, GSUtil::GetATSTName(TEST.ATST), TEST.AREF, TEST.AFAIL, GSUtil::GetAFAILName(TEST.AFAIL), TEST.DATE, TEST.DATM, TEST.ZTE, TEST.ZTST, GSUtil::GetZTSTName(TEST.ZTST)); fprintf(fp, "FBA\n" @@ -276,16 +275,16 @@ void GSDrawingContext::Dump(const std::string& filename) "FRAME\n" "\tFBP (*32):0x%x\n" "\tFBW:%u\n" - "\tPSM:0x%x\n" + "\tPSM:0x%x (%s)\n" "\tFBMSK:0x%x\n\n", - FRAME.FBP * 32, FRAME.FBW, FRAME.PSM, FRAME.FBMSK); + FRAME.FBP * 32, FRAME.FBW, FRAME.PSM, GSUtil::GetPSMName(FRAME.PSM), FRAME.FBMSK); fprintf(fp, "ZBUF\n" "\tZBP (*32):0x%x\n" - "\tPSM:0x%x\n" + "\tPSM:0x%x (%s)\n" "\tZMSK:%u\n\n", - ZBUF.ZBP * 32, ZBUF.PSM, ZBUF.ZMSK); + ZBUF.ZBP * 32, ZBUF.PSM, GSUtil::GetPSMName(ZBUF.PSM), ZBUF.ZMSK); fclose(fp); } diff --git a/pcsx2/GS/GSDrawingEnvironment.cpp b/pcsx2/GS/GSDrawingEnvironment.cpp new file mode 100644 index 0000000000..7249ca97cc --- /dev/null +++ b/pcsx2/GS/GSDrawingEnvironment.cpp @@ -0,0 +1,147 @@ +// SPDX-FileCopyrightText: 2002-2025 PCSX2 Dev Team +// SPDX-License-Identifier: GPL-3.0+ + +#include "GS/GSGL.h" +#include "GS/GS.h" +#include "GS/GSUtil.h" +#include "GS/GSDrawingContext.h" +#include "GS/GSDrawingEnvironment.h" + +void GSDrawingEnvironment::Reset() +{ + memset(&PRIM, 0, sizeof(PRIM)); + memset(&PRMODE, 0, sizeof(PRMODE)); + memset(&PRMODECONT, 0, sizeof(PRMODECONT)); + memset(&TEXCLUT, 0, sizeof(TEXCLUT)); + memset(&SCANMSK, 0, sizeof(SCANMSK)); + memset(&TEXA, 0, sizeof(TEXA)); + memset(&FOGCOL, 0, sizeof(FOGCOL)); + memset(&DIMX, 0, sizeof(DIMX)); + memset(&DTHE, 0, sizeof(DTHE)); + memset(&COLCLAMP, 0, sizeof(COLCLAMP)); + memset(&PABE, 0, sizeof(PABE)); + memset(&BITBLTBUF, 0, sizeof(BITBLTBUF)); + memset(&TRXDIR, 0, sizeof(TRXDIR)); + memset(&TRXPOS, 0, sizeof(TRXPOS)); + memset(&TRXREG, 0, sizeof(TRXREG)); + + CTXT[0].Reset(); + CTXT[1].Reset(); +} + +void GSDrawingEnvironment::Dump(const std::string& filename) const +{ + FILE* fp = fopen(filename.c_str(), "wt"); + if (!fp) + return; + + fprintf(fp, "PRIM\n" + "\tPRIM:%u (%s)\n" + "\tIIP:%u\n" + "\tTME:%u\n" + "\tFGE:%u\n" + "\tABE:%u\n" + "\tAA1:%u\n" + "\tFST:%u\n" + "\tCTXT:%u\n" + "\tFIX:%u\n\n", + PRIM.PRIM, GSUtil::GetPrimName(PRIM.PRIM), PRIM.IIP, PRIM.TME, PRIM.FGE, PRIM.ABE, PRIM.AA1, PRIM.FST, PRIM.CTXT, PRIM.FIX); + + fprintf(fp, "PRMODE (when AC=0)\n" + "\t_PRIM:%u (%s)\n" + "\tIIP:%u\n" + "\tTME:%u\n" + "\tFGE:%u\n" + "\tABE:%u\n" + "\tAA1:%u\n" + "\tFST:%u\n" + "\tCTXT:%u\n" + "\tFIX:%u\n\n", + PRMODE._PRIM, GSUtil::GetPrimName(PRMODE._PRIM), PRMODE.IIP, PRMODE.TME, PRMODE.FGE, PRMODE.ABE, PRMODE.AA1, PRMODE.FST, PRMODE.CTXT, PRMODE.FIX); + + fprintf(fp, "PRMODECONT\n" + "\tAC:%u\n\n", + PRMODECONT.AC); + + fprintf(fp, "TEXCLUT\n" + "\tCOU:%u\n" + "\tCBW:%u\n" + "\tCOV:%u\n\n", + TEXCLUT.COU, TEXCLUT.CBW, TEXCLUT.COV); + + fprintf(fp, "SCANMSK\n" + "\tMSK:%u\n\n", + SCANMSK.MSK); + + fprintf(fp, "TEXA\n" + "\tAEM:%u\n" + "\tTA0:%u\n" + "\tTA1:%u\n\n", + TEXA.AEM, TEXA.TA0, TEXA.TA1); + + fprintf(fp, "FOGCOL\n" + "\tFCG:%u\n" + "\tFCB:%u\n" + "\tFCR:%u\n\n", + FOGCOL.FCG, FOGCOL.FCB, FOGCOL.FCR); + + fprintf(fp, "DIMX\n" + "\tDM22:%d\n" + "\tDM23:%d\n" + "\tDM31:%d\n" + "\tDM02:%d\n" + "\tDM21:%d\n" + "\tDM12:%d\n" + "\tDM03:%d\n" + "\tDM01:%d\n" + "\tDM33:%d\n" + "\tDM30:%d\n" + "\tDM11:%d\n" + "\tDM10:%d\n" + "\tDM20:%d\n" + "\tDM32:%d\n" + "\tDM00:%d\n" + "\tDM13:%d\n\n", + DIMX.DM22, DIMX.DM23, DIMX.DM31, DIMX.DM02, DIMX.DM21, DIMX.DM12, DIMX.DM03, DIMX.DM01, DIMX.DM33, DIMX.DM30, DIMX.DM11, DIMX.DM10, DIMX.DM20, DIMX.DM32, DIMX.DM00, DIMX.DM13); + + fprintf(fp, "DTHE\n" + "\tDTHE:%u\n\n", + DTHE.DTHE); + + fprintf(fp, "COLCLAMP\n" + "\tCLAMP:%u\n\n", + COLCLAMP.CLAMP); + + fprintf(fp, "PABE\n" + "\tPABE:%u\n\n", + PABE.PABE); + + fprintf(fp, "BITBLTBUF\n" + "\tSBW:%u\n" + "\tSBP:0x%x\n" + "\tSPSM:%u (%s)\n" + "\tDBW:%u\n" + "\tDPSM:%u (%s)\n" + "\tDBP:0x%x\n\n", + BITBLTBUF.SBW, BITBLTBUF.SBP, BITBLTBUF.SPSM, GSUtil::GetPSMName(BITBLTBUF.SPSM), BITBLTBUF.DBW, BITBLTBUF.DPSM, GSUtil::GetPSMName(BITBLTBUF.DPSM), BITBLTBUF.DBP); + + fprintf(fp, "TRXDIR\n" + "\tXDIR:%u\n\n", + TRXDIR.XDIR); + + fprintf(fp, "TRXPOS\n" + "\tDIRY:%u\n" + "\tSSAY:%u\n" + "\tSSAX:%u\n" + "\tDIRX:%u\n" + "\tDSAX:%u\n" + "\tDSAY:%u\n\n", + TRXPOS.DIRY, TRXPOS.SSAY, TRXPOS.SSAX, TRXPOS.DIRX, TRXPOS.DSAX, TRXPOS.DSAY); + + fprintf(fp, "TRXREG\n" + "\tRRH:%u\n" + "\tRRW:%u\n\n", + TRXREG.RRH, TRXREG.RRW); + + fclose(fp); +} \ No newline at end of file diff --git a/pcsx2/GS/GSDrawingEnvironment.h b/pcsx2/GS/GSDrawingEnvironment.h index 762c55d4e9..58d8bbe13f 100644 --- a/pcsx2/GS/GSDrawingEnvironment.h +++ b/pcsx2/GS/GSDrawingEnvironment.h @@ -23,142 +23,7 @@ public: GIFRegTRXREG TRXREG; GSDrawingContext CTXT[2]; - void Reset() - { - memset(&PRIM, 0, sizeof(PRIM)); - memset(&PRMODE, 0, sizeof(PRMODE)); - memset(&PRMODECONT, 0, sizeof(PRMODECONT)); - memset(&TEXCLUT, 0, sizeof(TEXCLUT)); - memset(&SCANMSK, 0, sizeof(SCANMSK)); - memset(&TEXA, 0, sizeof(TEXA)); - memset(&FOGCOL, 0, sizeof(FOGCOL)); - memset(&DIMX, 0, sizeof(DIMX)); - memset(&DTHE, 0, sizeof(DTHE)); - memset(&COLCLAMP, 0, sizeof(COLCLAMP)); - memset(&PABE, 0, sizeof(PABE)); - memset(&BITBLTBUF, 0, sizeof(BITBLTBUF)); - memset(&TRXDIR, 0, sizeof(TRXDIR)); - memset(&TRXPOS, 0, sizeof(TRXPOS)); - memset(&TRXREG, 0, sizeof(TRXREG)); + void Reset(); - CTXT[0].Reset(); - CTXT[1].Reset(); - } - - void Dump(const std::string& filename) const - { - FILE* fp = fopen(filename.c_str(), "wt"); - if (!fp) - return; - - fprintf(fp, "PRIM\n" - "\tPRIM:%u\n" - "\tIIP:%u\n" - "\tTME:%u\n" - "\tFGE:%u\n" - "\tABE:%u\n" - "\tAA1:%u\n" - "\tFST:%u\n" - "\tCTXT:%u\n" - "\tFIX:%u\n\n" - , PRIM.PRIM, PRIM.IIP, PRIM.TME, PRIM.FGE, PRIM.ABE, PRIM.AA1, PRIM.FST, PRIM.CTXT, PRIM.FIX); - - fprintf(fp, "PRMODE (when AC=0)\n" - "\t_PRIM:%u\n" - "\tIIP:%u\n" - "\tTME:%u\n" - "\tFGE:%u\n" - "\tABE:%u\n" - "\tAA1:%u\n" - "\tFST:%u\n" - "\tCTXT:%u\n" - "\tFIX:%u\n\n" - , PRMODE._PRIM, PRMODE.IIP, PRMODE.TME, PRMODE.FGE, PRMODE.ABE, PRMODE.AA1, PRMODE.FST, PRMODE.CTXT, PRMODE.FIX); - - fprintf(fp, "PRMODECONT\n" - "\tAC:%u\n\n" - , PRMODECONT.AC); - - fprintf(fp, "TEXCLUT\n" - "\tCOU:%u\n" - "\tCBW:%u\n" - "\tCOV:%u\n\n" - , TEXCLUT.COU, TEXCLUT.CBW, TEXCLUT.COV); - - fprintf(fp, "SCANMSK\n" - "\tMSK:%u\n\n" - , SCANMSK.MSK); - - fprintf(fp, "TEXA\n" - "\tAEM:%u\n" - "\tTA0:%u\n" - "\tTA1:%u\n\n" - , TEXA.AEM, TEXA.TA0, TEXA.TA1); - - fprintf(fp, "FOGCOL\n" - "\tFCG:%u\n" - "\tFCB:%u\n" - "\tFCR:%u\n\n" - , FOGCOL.FCG, FOGCOL.FCB, FOGCOL.FCR); - - fprintf(fp, "DIMX\n" - "\tDM22:%d\n" - "\tDM23:%d\n" - "\tDM31:%d\n" - "\tDM02:%d\n" - "\tDM21:%d\n" - "\tDM12:%d\n" - "\tDM03:%d\n" - "\tDM01:%d\n" - "\tDM33:%d\n" - "\tDM30:%d\n" - "\tDM11:%d\n" - "\tDM10:%d\n" - "\tDM20:%d\n" - "\tDM32:%d\n" - "\tDM00:%d\n" - "\tDM13:%d\n\n" - , DIMX.DM22, DIMX.DM23, DIMX.DM31, DIMX.DM02, DIMX.DM21, DIMX.DM12, DIMX.DM03, DIMX.DM01, DIMX.DM33, DIMX.DM30, DIMX.DM11, DIMX.DM10, DIMX.DM20, DIMX.DM32, DIMX.DM00, DIMX.DM13); - - fprintf(fp, "DTHE\n" - "\tDTHE:%u\n\n" - , DTHE.DTHE); - - fprintf(fp, "COLCLAMP\n" - "\tCLAMP:%u\n\n" - , COLCLAMP.CLAMP); - - fprintf(fp, "PABE\n" - "\tPABE:%u\n\n" - , PABE.PABE); - - fprintf(fp, "BITBLTBUF\n" - "\tSBW:%u\n" - "\tSBP:0x%x\n" - "\tSPSM:%u\n" - "\tDBW:%u\n" - "\tDPSM:%u\n" - "\tDBP:0x%x\n\n" - , BITBLTBUF.SBW, BITBLTBUF.SBP, BITBLTBUF.SPSM, BITBLTBUF.DBW, BITBLTBUF.DPSM, BITBLTBUF.DBP); - - fprintf(fp, "TRXDIR\n" - "\tXDIR:%u\n\n", - TRXDIR.XDIR); - - fprintf(fp, "TRXPOS\n" - "\tDIRY:%u\n" - "\tSSAY:%u\n" - "\tSSAX:%u\n" - "\tDIRX:%u\n" - "\tDSAX:%u\n" - "\tDSAY:%u\n\n" - , TRXPOS.DIRY, TRXPOS.SSAY, TRXPOS.SSAX, TRXPOS.DIRX, TRXPOS.DSAX, TRXPOS.DSAY); - - fprintf(fp, "TRXREG\n" - "\tRRH:%u\n" - "\tRRW:%u\n\n" - , TRXREG.RRH, TRXREG.RRW); - - fclose(fp); - } + void Dump(const std::string& filename) const; }; diff --git a/pcsx2/GS/GSState.cpp b/pcsx2/GS/GSState.cpp index 6c500c2ab0..cbd5a91758 100644 --- a/pcsx2/GS/GSState.cpp +++ b/pcsx2/GS/GSState.cpp @@ -520,22 +520,27 @@ void GSState::DumpVertices(const std::string& filename) file << std::endl; - file << "TRACER" << std::endl; + file << "TRACER" << std::dec << std::endl; GSVector4i v = m_vt.m_min.c; - file << "\tmin c (x,y,z,w): " << v.x << DEL << v.y << DEL << v.z << DEL << v.w << std::endl; + file << "\tmin c (r,g,b,a): " << v.x << DEL << v.y << DEL << v.z << DEL << v.w << std::endl; v = m_vt.m_max.c; - file << "\tmax c (x,y,z,w): " << v.x << DEL << v.y << DEL << v.z << DEL << v.w << std::endl; + file << "\tmax c (r,g,b,a): " << v.x << DEL << v.y << DEL << v.z << DEL << v.w << std::endl; GSVector4 v2 = m_vt.m_min.p; - file << "\tmin p (x,y,z,w): " << v2.x << DEL << v2.y << DEL << v2.z << DEL << v2.w << std::endl; + file << "\tmin p (x,y,z,f): " << v2.x << DEL << v2.y << DEL << v2.z << DEL << (u32)v2.w << std::endl; v2 = m_vt.m_max.p; - file << "\tmax p (x,y,z,w): " << v2.x << DEL << v2.y << DEL << v2.z << DEL << v2.w << std::endl; - v2 = m_vt.m_min.t; - file << "\tmin t (x,y,z,w): " << v2.x << DEL << v2.y << DEL << v2.z << DEL << v2.w << std::endl; - v2 = m_vt.m_max.t; - file << "\tmax t (x,y,z,w): " << v2.x << DEL << v2.y << DEL << v2.z << DEL << v2.w << std::endl; + file << "\tmax p (x,y,z,f): " << v2.x << DEL << v2.y << DEL << v2.z << DEL << (u32)v2.w << std::endl; + v2 = m_vt.m_min.t; + file << "\tmin t (u,v,q): " << v2.x << DEL << v2.y << DEL << v2.z << std::endl; + v2 = m_vt.m_max.t; + file << "\tmax t (u,v,q): " << v2.x << DEL << v2.y << DEL << v2.z << std::endl; + + file << std::endl; + file << "\teq c (r,g,b,a): " << (m_vt.m_eq.r & 1) << DEL << (m_vt.m_eq.g & 1) << DEL << (m_vt.m_eq.b & 1) << DEL << (m_vt.m_eq.a & 1) << std::endl; + file << "\teq p (x,y,z,f): " << (m_vt.m_eq.x & 1) << DEL << (m_vt.m_eq.y & 1) << DEL << (m_vt.m_eq.z & 1) << DEL << (m_vt.m_eq.f & 1) << std::endl; + file << "\teq t (u,v,q) : " << (m_vt.m_eq.s & 1) << DEL << (m_vt.m_eq.t & 1) << DEL << (m_vt.m_eq.q & 1) << std::endl; file.close(); } diff --git a/pcsx2/GS/GSUtil.cpp b/pcsx2/GS/GSUtil.cpp index 17a00f4143..7282f9e8f3 100644 --- a/pcsx2/GS/GSUtil.cpp +++ b/pcsx2/GS/GSUtil.cpp @@ -94,6 +94,26 @@ const char* GSUtil::GetAFAILName(u32 afail) return (afail < std::size(names)) ? names[afail] : ""; } +const char* GSUtil::GetWMName(u32 wm) +{ + static constexpr const char* names[] = {"REPEAT", "CLAMP", "REGION_CLAMP", "REGION_REPEAT"}; + return (wm < std::size(names)) ? names[wm] : ""; +} + +const char* GSUtil::GetZTSTName(u32 ztst) +{ + static constexpr const char* names[] = { + "NEVER", "ALWAYS", "GEQUAL", "GREATER"}; + return (ztst < std::size(names)) ? names[ztst] : ""; +} + +const char* GSUtil::GetPrimName(u32 prim) +{ + static constexpr const char* names[] = { + "POINT", "LINE", "LINESTRIP", "TRIANGLE", "TRIANGLESTRIP", "TRIANGLEFAN", "SPRITE", "INVALID"}; + return (prim < std::size(names)) ? names[prim] : ""; +} + const u32* GSUtil::HasSharedBitsPtr(u32 dpsm) { return s_maps.SharedBitsField[dpsm]; diff --git a/pcsx2/GS/GSUtil.h b/pcsx2/GS/GSUtil.h index 4a285ec390..6fcd73763b 100644 --- a/pcsx2/GS/GSUtil.h +++ b/pcsx2/GS/GSUtil.h @@ -12,6 +12,9 @@ public: static const char* GetATSTName(u32 atst); static const char* GetAFAILName(u32 afail); static const char* GetPSMName(int psm); + static const char* GetWMName(u32 wm); + static const char* GetZTSTName(u32 ztst); + static const char* GetPrimName(u32 prim); static const u32* HasSharedBitsPtr(u32 dpsm); static bool HasSharedBits(u32 spsm, const u32* ptr); diff --git a/pcsx2/pcsx2.vcxproj b/pcsx2/pcsx2.vcxproj index 8875c8465e..1875a886df 100644 --- a/pcsx2/pcsx2.vcxproj +++ b/pcsx2/pcsx2.vcxproj @@ -204,6 +204,7 @@ + @@ -1031,4 +1032,4 @@ - + \ No newline at end of file diff --git a/pcsx2/pcsx2.vcxproj.filters b/pcsx2/pcsx2.vcxproj.filters index 5265c0fb1e..8ede454a21 100644 --- a/pcsx2/pcsx2.vcxproj.filters +++ b/pcsx2/pcsx2.vcxproj.filters @@ -1446,6 +1446,9 @@ System\Ps2\Iop\SIO\PAD + + System\Ps2\GS\Renderers\Software + @@ -2436,4 +2439,4 @@ System\Ps2\GS - + \ No newline at end of file