rsx-debug: Record and display index buffer content.

This commit is contained in:
Vincent Lejeune 2016-02-23 22:56:14 +01:00
parent 05f2aaf2b9
commit 4d71df70db
4 changed files with 51 additions and 0 deletions

View file

@ -163,10 +163,12 @@ RSXDebugger::RSXDebugger(wxWindow* parent)
wxPanel* p_buffers = new wxPanel(state_rsx, wxID_ANY);
wxPanel* p_transform_program = new wxPanel(state_rsx, wxID_ANY);
wxPanel* p_shader_program = new wxPanel(state_rsx, wxID_ANY);
wxPanel* p_index_buffer = new wxPanel(state_rsx, wxID_ANY);
state_rsx->AddPage(p_buffers, wxT("RTTs and DS"));
state_rsx->AddPage(p_transform_program, wxT("Transform program"));
state_rsx->AddPage(p_shader_program, wxT("Shader program"));
state_rsx->AddPage(p_index_buffer, (wxT("Index buffer")));
m_text_transform_program = new wxTextCtrl(p_transform_program, wxID_ANY, "", wxPoint(1, 3), wxSize(720, 720), wxTE_MULTILINE | wxTE_READONLY);
m_text_transform_program->SetFont(wxFont(8, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
@ -174,6 +176,9 @@ RSXDebugger::RSXDebugger(wxWindow* parent)
m_text_shader_program = new wxTextCtrl(p_shader_program, wxID_ANY, "", wxPoint(1, 3), wxSize(720, 720), wxTE_MULTILINE | wxTE_READONLY);
m_text_shader_program->SetFont(wxFont(8, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
m_list_index_buffer = new wxListView(p_index_buffer, wxID_ANY, wxPoint(1, 3), wxSize(720, 720));
m_list_index_buffer->SetFont(wxFont(8, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
//Buffers
wxBoxSizer* s_buffers1 = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* s_buffers2 = new wxBoxSizer(wxVERTICAL);
@ -559,6 +564,25 @@ void RSXDebugger::OnClickDrawCalls(wxMouseEvent& event)
m_text_transform_program->AppendText(frame_debug.draw_calls[draw_id].programs.first);
m_text_shader_program->Clear();
m_text_shader_program->AppendText(frame_debug.draw_calls[draw_id].programs.second);
m_list_index_buffer->ClearAll();
m_list_index_buffer->InsertColumn(0, "Index", 0, 700);
if (frame_debug.draw_calls[draw_id].index_type == rsx::index_array_type::u16)
{
u16 *index_buffer = (u16*)frame_debug.draw_calls[draw_id].index.data();
for (u32 i = 0; i < frame_debug.draw_calls[draw_id].vertex_count; ++i)
{
m_list_index_buffer->InsertItem(i, std::to_string(index_buffer[i]));
}
}
if (frame_debug.draw_calls[draw_id].index_type == rsx::index_array_type::u32)
{
u32 *index_buffer = (u32*)frame_debug.draw_calls[draw_id].index.data();
for (u32 i = 0; i < frame_debug.draw_calls[draw_id].vertex_count; ++i)
{
m_list_index_buffer->InsertItem(i, std::to_string(index_buffer[i]));
}
}
}
void RSXDebugger::GoToGet(wxCommandEvent& event)