Add buttons to select texture level in ge debugger.

This commit is contained in:
Unknown W. Brackets 2014-06-15 10:01:32 -07:00
parent eaf3288304
commit d7e5b7956e
5 changed files with 46 additions and 6 deletions

View file

@ -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();

View file

@ -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;

View file

@ -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();
}

View file

@ -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

View file

@ -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