mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Add buttons to select texture level in ge debugger.
This commit is contained in:
parent
eaf3288304
commit
d7e5b7956e
5 changed files with 46 additions and 6 deletions
|
@ -120,6 +120,8 @@ CGEDebugger::CGEDebugger(HINSTANCE _hInstance, HWND _hParent)
|
|||
int w = g_Config.iGEWindowW == -1 ? minWidth : g_Config.iGEWindowW;
|
||||
int h = g_Config.iGEWindowH == -1 ? minHeight : g_Config.iGEWindowH;
|
||||
MoveWindow(m_hDlg,x,y,w,h,FALSE);
|
||||
|
||||
UpdateTextureLevel(textureLevel_);
|
||||
}
|
||||
|
||||
CGEDebugger::~CGEDebugger() {
|
||||
|
@ -153,7 +155,7 @@ void CGEDebugger::UpdatePreviews() {
|
|||
wchar_t desc[256];
|
||||
const GPUDebugBuffer *primaryBuffer = NULL;
|
||||
bool bufferResult = false;
|
||||
GPUgstate state;
|
||||
GPUgstate state = {0};
|
||||
|
||||
if (gpuDebug != NULL) {
|
||||
state = gpuDebug->GetGState();
|
||||
|
@ -186,12 +188,13 @@ void CGEDebugger::UpdatePreviews() {
|
|||
auto fmt = SimpleGLWindow::Format(primaryBuffer->GetFormat());
|
||||
frameWindow->Draw(primaryBuffer->GetData(), primaryBuffer->GetStride(), primaryBuffer->GetHeight(), primaryBuffer->GetFlipped(), fmt);
|
||||
SetDlgItemText(m_hDlg, IDC_GEDBG_FRAMEBUFADDR, desc);
|
||||
} else {
|
||||
} else if (frameWindow != NULL) {
|
||||
frameWindow->Clear();
|
||||
SetDlgItemText(m_hDlg, IDC_GEDBG_FRAMEBUFADDR, L"Failed");
|
||||
}
|
||||
|
||||
const GPUDebugBuffer *bufferTex = NULL;
|
||||
UpdateTextureLevel(textureLevel_);
|
||||
bufferResult = GPU_GetCurrentTexture(bufferTex, textureLevel_);
|
||||
|
||||
if (bufferResult) {
|
||||
|
@ -211,7 +214,7 @@ void CGEDebugger::UpdatePreviews() {
|
|||
} else {
|
||||
UpdateLastTexture((u32)-1);
|
||||
}
|
||||
} else {
|
||||
} else if (texWindow != NULL) {
|
||||
texWindow->Clear();
|
||||
if (gpuDebug == NULL || state.isTextureMapEnabled()) {
|
||||
SetDlgItemText(m_hDlg, IDC_GEDBG_TEXADDR, L"Texture: failed");
|
||||
|
@ -242,6 +245,24 @@ void CGEDebugger::UpdatePreviews() {
|
|||
lists->Update();
|
||||
}
|
||||
|
||||
void CGEDebugger::UpdateTextureLevel(int level) {
|
||||
GPUgstate state = {0};
|
||||
if (gpuDebug != NULL) {
|
||||
state = gpuDebug->GetGState();
|
||||
}
|
||||
|
||||
int maxValid = 0;
|
||||
for (int i = 1; i < 8; ++i) {
|
||||
if (state.getTextureAddress(i) != 0) {
|
||||
maxValid = i;
|
||||
}
|
||||
}
|
||||
|
||||
textureLevel_ = std::min(std::max(0, level), maxValid);
|
||||
EnableWindow(GetDlgItem(m_hDlg, IDC_GEDBG_TEXLEVELDOWN), textureLevel_ > 0);
|
||||
EnableWindow(GetDlgItem(m_hDlg, IDC_GEDBG_TEXLEVELUP), textureLevel_ < maxValid);
|
||||
}
|
||||
|
||||
void CGEDebugger::UpdateSize(WORD width, WORD height) {
|
||||
// only resize the tab for now
|
||||
HWND tabControl = GetDlgItem(m_hDlg, IDC_GEDBG_MAINTAB);
|
||||
|
@ -378,6 +399,20 @@ BOOL CGEDebugger::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) {
|
|||
}
|
||||
break;
|
||||
|
||||
case IDC_GEDBG_TEXLEVELDOWN:
|
||||
UpdateTextureLevel(textureLevel_ - 1);
|
||||
if (attached && gpuDebug != NULL) {
|
||||
UpdatePreviews();
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_GEDBG_TEXLEVELUP:
|
||||
UpdateTextureLevel(textureLevel_ + 1);
|
||||
if (attached && gpuDebug != NULL) {
|
||||
UpdatePreviews();
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_GEDBG_RESUME:
|
||||
frameWindow->Clear();
|
||||
texWindow->Clear();
|
||||
|
|
|
@ -70,6 +70,7 @@ private:
|
|||
void UpdateSize(WORD width, WORD height);
|
||||
void SavePosition();
|
||||
void SetBreakNext(BreakNextType type);
|
||||
void UpdateTextureLevel(int level);
|
||||
|
||||
CtrlDisplayListView *displayList;
|
||||
TabDisplayLists *lists;
|
||||
|
|
|
@ -229,7 +229,7 @@ void TabDisplayLists::UpdateSize(WORD width, WORD height)
|
|||
|
||||
void TabDisplayLists::Update(bool reload)
|
||||
{
|
||||
if (reload)
|
||||
if (reload && gpuDebug != NULL)
|
||||
{
|
||||
lists = gpuDebug->ActiveDisplayLists();
|
||||
}
|
||||
|
|
|
@ -183,7 +183,9 @@ BEGIN
|
|||
CONTROL "",IDC_GEDBG_MAINTAB,"SysTabControl32",TCS_TABS | TCS_FOCUSNEVER,10,216,480,180
|
||||
EDITTEXT IDC_GEDBG_FRAMEBUFADDR,148,192,128,12,ES_READONLY | NOT WS_BORDER
|
||||
EDITTEXT IDC_GEDBG_TEXADDR,10,152,128,12,ES_READONLY | NOT WS_BORDER
|
||||
PUSHBUTTON "Break on Te&xture...",IDC_GEDBG_BREAKTEX,24,172,100,14
|
||||
PUSHBUTTON "Break on Te&xture...",IDC_GEDBG_BREAKTEX,24,168,100,14
|
||||
PUSHBUTTON "Level -",IDC_GEDBG_TEXLEVELDOWN,24,188,40,14
|
||||
PUSHBUTTON "Level +",IDC_GEDBG_TEXLEVELUP,84,188,40,14
|
||||
CONTROL "",IDC_GEDBG_FBTABS,"SysTabControl32",TCS_BUTTONS | TCS_FOCUSNEVER,384,192,110,12
|
||||
END
|
||||
|
||||
|
|
|
@ -309,6 +309,8 @@
|
|||
#define ID_DEBUG_EXTRACTFILE 40145
|
||||
#define ID_OPTIONS_IGNOREWINKEY 40146
|
||||
#define IDC_MODULELIST 40147
|
||||
#define IDC_GEDBG_TEXLEVELDOWN 40148
|
||||
#define IDC_GEDBG_TEXLEVELUP 40149
|
||||
|
||||
// Dummy option to let the buffered rendering hotkey cycle through all the options.
|
||||
#define ID_OPTIONS_BUFFEREDRENDERINGDUMMY 40500
|
||||
|
@ -321,7 +323,7 @@
|
|||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 256
|
||||
#define _APS_NEXT_COMMAND_VALUE 40148
|
||||
#define _APS_NEXT_COMMAND_VALUE 40150
|
||||
#define _APS_NEXT_CONTROL_VALUE 1197
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue