Skip to content

Commit

Permalink
Merge pull request hrydgard#19718 from hrydgard/ge-debugger-new-state…
Browse files Browse the repository at this point in the history
…-viewer

ImGeDebugger: new state viewer
  • Loading branch information
hrydgard authored Dec 10, 2024
2 parents 9119942 + d378936 commit 034bf1f
Show file tree
Hide file tree
Showing 8 changed files with 409 additions and 209 deletions.
2 changes: 1 addition & 1 deletion GPU/Common/GPUDebugInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ class GPUDebugInterface {
virtual u32 GetRelativeAddress(u32 data) = 0;
virtual u32 GetVertexAddress() = 0;
virtual u32 GetIndexAddress() = 0;
virtual GPUgstate GetGState() = 0;
virtual const GPUgstate &GetGState() = 0;
// Needs to be called from the GPU thread.
// Calling from a separate thread (e.g. UI) may fail.
virtual void SetCmdValue(u32 op) = 0;
Expand Down
4 changes: 2 additions & 2 deletions GPU/Debugger/GECommandTable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ static constexpr GECmdInfo geCmdInfo[] = {
{ GE_CMD_LAC3, "light3ambient", GECmdFormat::RGB, "Light ambient 3", CMD_FMT_HEX, GE_CMD_LIGHTENABLE3 },
{ GE_CMD_LDC3, "light3diffuse", GECmdFormat::RGB, "Light diffuse 3", CMD_FMT_HEX, GE_CMD_LIGHTENABLE3 },
{ GE_CMD_LSC3, "light3specular", GECmdFormat::RGB, "Light specular 3", CMD_FMT_HEX, GE_CMD_LIGHTENABLE3 },
{ GE_CMD_CULL, "cullccw", GECmdFormat::FLAG, "Cull mode", CMD_FMT_FLAG, CMD_FMT_CULL, GE_CMD_CULLFACEENABLE},
{ GE_CMD_CULL, "cullccw", GECmdFormat::FLAG, "Cull mode", CMD_FMT_CULL, GE_CMD_CULLFACEENABLE},
{ GE_CMD_FRAMEBUFPTR, "fbptr", GECmdFormat::LOW_ADDR_ONLY, "Framebuffer", CMD_FMT_PTRWIDTH, 0, GE_CMD_FRAMEBUFWIDTH},
{ GE_CMD_FRAMEBUFWIDTH, "fbstride", GECmdFormat::STRIDE, "Framebuffer stride" },
{ GE_CMD_ZBUFPTR, "zbptr", GECmdFormat::LOW_ADDR_ONLY, "Depth buffer", CMD_FMT_PTRWIDTH, 0, GE_CMD_ZBUFWIDTH},
Expand Down Expand Up @@ -252,7 +252,7 @@ static constexpr GECmdInfo geCmdInfo[] = {
{ GE_CMD_MAXZ, "maxz", GECmdFormat::DATA16, "Max Z", CMD_FMT_HEX},
{ GE_CMD_COLORTEST, "ctestfunc", GECmdFormat::COLOR_TEST_FUNC, "Color test", CMD_FMT_COLORTEST, GE_CMD_COLORTESTENABLE, GE_CMD_COLORREF, GE_CMD_COLORTESTMASK},
{ GE_CMD_COLORREF, "ctestref", GECmdFormat::RGB, "Color test ref", CMD_FMT_HEX, },
{ GE_CMD_COLORTESTMASK, "ctestmask", GECmdFormat::RGB, "Color test mask", CMD_FMT_HEX},
{ GE_CMD_COLORTESTMASK, "ctestmask", GECmdFormat::RGB, "Color test mask", CMD_FMT_HEX, GE_CMD_COLORTESTENABLE},
{ GE_CMD_ALPHATEST, "atest", GECmdFormat::ALPHA_TEST, "Alpha test mask", CMD_FMT_ALPHATEST, GE_CMD_ALPHATESTENABLE},
{ GE_CMD_STENCILTEST, "stest", GECmdFormat::ALPHA_TEST, "Stencil test", CMD_FMT_STENCILTEST, GE_CMD_STENCILTESTENABLE},
{ GE_CMD_STENCILOP, "stencilop", GECmdFormat::STENCIL_OP, "Stencil op", CMD_FMT_STENCILOP, GE_CMD_STENCILTESTENABLE},
Expand Down
5 changes: 2 additions & 3 deletions GPU/Debugger/GECommandTable.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#pragma once

#include <cstdint>
#include <string_view>

#include "GPU/ge_constants.h"

Expand Down Expand Up @@ -120,9 +119,9 @@ enum CmdFormatType {

struct GECmdInfo {
GECommand cmd;
std::string_view name; // scripting / expression name
const char *name; // scripting / expression name
GECmdFormat cmdFmt;
std::string_view uiName; // friendly name
const char *uiName; // friendly name
CmdFormatType fmt;
uint8_t enableCmd;
uint8_t otherCmd;
Expand Down
182 changes: 0 additions & 182 deletions GPU/Debugger/State.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,188 +8,6 @@
#include "GPU/Common/VertexDecoderCommon.h"
#include "Core/System.h"

const GECommand g_stateFlagsRows[] = {
GE_CMD_LIGHTINGENABLE,
GE_CMD_LIGHTENABLE0,
GE_CMD_LIGHTENABLE1,
GE_CMD_LIGHTENABLE2,
GE_CMD_LIGHTENABLE3,
GE_CMD_DEPTHCLAMPENABLE,
GE_CMD_CULLFACEENABLE,
GE_CMD_TEXTUREMAPENABLE,
GE_CMD_FOGENABLE,
GE_CMD_DITHERENABLE,
GE_CMD_ALPHABLENDENABLE,
GE_CMD_ALPHATESTENABLE,
GE_CMD_ZTESTENABLE,
GE_CMD_STENCILTESTENABLE,
GE_CMD_ANTIALIASENABLE,
GE_CMD_PATCHCULLENABLE,
GE_CMD_COLORTESTENABLE,
GE_CMD_LOGICOPENABLE,
GE_CMD_ZWRITEDISABLE,
};
const size_t g_stateFlagsRowsSize = ARRAY_SIZE(g_stateFlagsRows);

const GECommand g_stateLightingRows[] = {
GE_CMD_AMBIENTCOLOR,
GE_CMD_AMBIENTALPHA,
GE_CMD_MATERIALUPDATE,
GE_CMD_MATERIALEMISSIVE,
GE_CMD_MATERIALAMBIENT,
GE_CMD_MATERIALDIFFUSE,
GE_CMD_MATERIALALPHA,
GE_CMD_MATERIALSPECULAR,
GE_CMD_MATERIALSPECULARCOEF,
GE_CMD_REVERSENORMAL,
GE_CMD_SHADEMODE,
GE_CMD_LIGHTMODE,
GE_CMD_LIGHTTYPE0,
GE_CMD_LIGHTTYPE1,
GE_CMD_LIGHTTYPE2,
GE_CMD_LIGHTTYPE3,
GE_CMD_LX0,
GE_CMD_LX1,
GE_CMD_LX2,
GE_CMD_LX3,
GE_CMD_LDX0,
GE_CMD_LDX1,
GE_CMD_LDX2,
GE_CMD_LDX3,
GE_CMD_LKA0,
GE_CMD_LKA1,
GE_CMD_LKA2,
GE_CMD_LKA3,
GE_CMD_LKS0,
GE_CMD_LKS1,
GE_CMD_LKS2,
GE_CMD_LKS3,
GE_CMD_LKO0,
GE_CMD_LKO1,
GE_CMD_LKO2,
GE_CMD_LKO3,
GE_CMD_LAC0,
GE_CMD_LDC0,
GE_CMD_LSC0,
GE_CMD_LAC1,
GE_CMD_LDC1,
GE_CMD_LSC1,
GE_CMD_LAC2,
GE_CMD_LDC2,
GE_CMD_LSC2,
GE_CMD_LAC3,
GE_CMD_LDC3,
GE_CMD_LSC3,
};
const size_t g_stateLightingRowsSize = ARRAY_SIZE(g_stateLightingRows);

const GECommand g_stateTextureRows[] = {
GE_CMD_TEXADDR0,
GE_CMD_TEXSIZE0,
GE_CMD_TEXFORMAT,
GE_CMD_CLUTADDR,
GE_CMD_CLUTFORMAT,
GE_CMD_TEXSCALEU,
GE_CMD_TEXSCALEV,
GE_CMD_TEXOFFSETU,
GE_CMD_TEXOFFSETV,
GE_CMD_TEXMAPMODE,
GE_CMD_TEXSHADELS,
GE_CMD_TEXFUNC,
GE_CMD_TEXENVCOLOR,
GE_CMD_TEXMODE,
GE_CMD_TEXFILTER,
GE_CMD_TEXWRAP,
GE_CMD_TEXLEVEL,
GE_CMD_TEXLODSLOPE,
GE_CMD_TEXADDR1,
GE_CMD_TEXADDR2,
GE_CMD_TEXADDR3,
GE_CMD_TEXADDR4,
GE_CMD_TEXADDR5,
GE_CMD_TEXADDR6,
GE_CMD_TEXADDR7,
GE_CMD_TEXSIZE1,
GE_CMD_TEXSIZE2,
GE_CMD_TEXSIZE3,
GE_CMD_TEXSIZE4,
GE_CMD_TEXSIZE5,
GE_CMD_TEXSIZE6,
GE_CMD_TEXSIZE7,
};
const size_t g_stateTextureRowsSize = ARRAY_SIZE(g_stateTextureRows);

const GECommand g_stateSettingsRows[] = {
GE_CMD_FRAMEBUFPTR,
GE_CMD_FRAMEBUFPIXFORMAT,
GE_CMD_ZBUFPTR,
GE_CMD_VIEWPORTXSCALE,
GE_CMD_VIEWPORTXCENTER,
GE_CMD_SCISSOR1,
GE_CMD_REGION1,
GE_CMD_COLORTEST,
GE_CMD_ALPHATEST,
GE_CMD_CLEARMODE,
GE_CMD_STENCILTEST,
GE_CMD_STENCILOP,
GE_CMD_ZTEST,
GE_CMD_MASKRGB,
GE_CMD_MASKALPHA,
GE_CMD_TRANSFERSRC,
GE_CMD_TRANSFERSRCPOS,
GE_CMD_TRANSFERDST,
GE_CMD_TRANSFERDSTPOS,
GE_CMD_TRANSFERSIZE,
GE_CMD_VERTEXTYPE,
GE_CMD_OFFSETADDR,
GE_CMD_VADDR,
GE_CMD_IADDR,
GE_CMD_MINZ,
GE_CMD_MAXZ,
GE_CMD_OFFSETX,
GE_CMD_CULL,
GE_CMD_BLENDMODE,
GE_CMD_BLENDFIXEDA,
GE_CMD_BLENDFIXEDB,
GE_CMD_LOGICOP,
GE_CMD_FOG1,
GE_CMD_FOG2,
GE_CMD_FOGCOLOR,
GE_CMD_MORPHWEIGHT0,
GE_CMD_MORPHWEIGHT1,
GE_CMD_MORPHWEIGHT2,
GE_CMD_MORPHWEIGHT3,
GE_CMD_MORPHWEIGHT4,
GE_CMD_MORPHWEIGHT5,
GE_CMD_MORPHWEIGHT6,
GE_CMD_MORPHWEIGHT7,
GE_CMD_PATCHDIVISION,
GE_CMD_PATCHPRIMITIVE,
GE_CMD_PATCHFACING,
GE_CMD_DITH0,
GE_CMD_DITH1,
GE_CMD_DITH2,
GE_CMD_DITH3,
GE_CMD_VSCX,
GE_CMD_VSCZ,
GE_CMD_VTCS,
GE_CMD_VCV,
GE_CMD_VSCV,
GE_CMD_VFC,
GE_CMD_VAP,
};
const size_t g_stateSettingsRowsSize = ARRAY_SIZE(g_stateSettingsRows);

// TODO: Commands not present in the above lists (some because they don't have meaningful values...):
// GE_CMD_PRIM, GE_CMD_BEZIER, GE_CMD_SPLINE, GE_CMD_BOUNDINGBOX,
// GE_CMD_JUMP, GE_CMD_BJUMP, GE_CMD_CALL, GE_CMD_RET, GE_CMD_END, GE_CMD_SIGNAL, GE_CMD_FINISH,
// GE_CMD_BONEMATRIXNUMBER, GE_CMD_BONEMATRIXDATA, GE_CMD_WORLDMATRIXNUMBER, GE_CMD_WORLDMATRIXDATA,
// GE_CMD_VIEWMATRIXNUMBER, GE_CMD_VIEWMATRIXDATA, GE_CMD_PROJMATRIXNUMBER, GE_CMD_PROJMATRIXDATA,
// GE_CMD_TGENMATRIXNUMBER, GE_CMD_TGENMATRIXDATA,
// GE_CMD_LOADCLUT, GE_CMD_TEXFLUSH, GE_CMD_TEXSYNC,
// GE_CMD_TRANSFERSTART,
// GE_CMD_UNKNOWN_*

void FormatStateRow(GPUDebugInterface *gpudebug, char *dest, size_t destSize, CmdFormatType fmt, u32 value, bool enabled, u32 otherValue, u32 otherValue2) {
switch (fmt) {
case CMD_FMT_HEX:
Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUCommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1688,7 +1688,7 @@ u32 GPUCommon::GetIndexAddress() {
return gstate_c.indexAddr;
}

GPUgstate GPUCommon::GetGState() {
const GPUgstate &GPUCommon::GetGState() {
return gstate;
}

Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUCommon.h
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ class GPUCommon : public GPUDebugInterface {
u32 GetRelativeAddress(u32 data) override;
u32 GetVertexAddress() override;
u32 GetIndexAddress() override;
GPUgstate GetGState() override;
const GPUgstate &GetGState() override;
void SetCmdValue(u32 op) override;

DisplayList* getList(int listid) {
Expand Down
Loading

0 comments on commit 034bf1f

Please sign in to comment.