mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-15 22:54:00 +00:00
Further refine GPU command list debugging.
This commit is contained in:
parent
b0051b2203
commit
f82410e633
3 changed files with 27 additions and 4 deletions
|
@ -53,7 +53,7 @@ int GPUCommandListModel::rowCount(const QModelIndex& parent) const
|
||||||
|
|
||||||
int GPUCommandListModel::columnCount(const QModelIndex& parent) const
|
int GPUCommandListModel::columnCount(const QModelIndex& parent) const
|
||||||
{
|
{
|
||||||
return 1;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant GPUCommandListModel::data(const QModelIndex& index, int role) const
|
QVariant GPUCommandListModel::data(const QModelIndex& index, int role) const
|
||||||
|
@ -68,7 +68,7 @@ QVariant GPUCommandListModel::data(const QModelIndex& index, int role) const
|
||||||
const GraphicsDebugger::PicaCommandList& cmdlist = command_lists[item->index].second;
|
const GraphicsDebugger::PicaCommandList& cmdlist = command_lists[item->index].second;
|
||||||
u32 address = command_lists[item->index].first;
|
u32 address = command_lists[item->index].first;
|
||||||
|
|
||||||
if (role == Qt::DisplayRole)
|
if (role == Qt::DisplayRole && index.column() == 0)
|
||||||
{
|
{
|
||||||
return QVariant(QString("0x%1 bytes at 0x%2").arg(cmdlist.size(), 0, 16).arg(address, 8, 16, QLatin1Char('0')));
|
return QVariant(QString("0x%1 bytes at 0x%2").arg(cmdlist.size(), 0, 16).arg(address, 8, 16, QLatin1Char('0')));
|
||||||
}
|
}
|
||||||
|
@ -78,11 +78,17 @@ QVariant GPUCommandListModel::data(const QModelIndex& index, int role) const
|
||||||
// index refers to a specific command
|
// index refers to a specific command
|
||||||
const GraphicsDebugger::PicaCommandList& cmdlist = command_lists[item->parent->index].second;
|
const GraphicsDebugger::PicaCommandList& cmdlist = command_lists[item->parent->index].second;
|
||||||
const GraphicsDebugger::PicaCommand& cmd = cmdlist[item->index];
|
const GraphicsDebugger::PicaCommand& cmd = cmdlist[item->index];
|
||||||
|
const Pica::CommandHeader& header = cmd.GetHeader();
|
||||||
|
|
||||||
if (role == Qt::DisplayRole) {
|
if (role == Qt::DisplayRole) {
|
||||||
QString content;
|
QString content;
|
||||||
|
if (index.column() == 0) {
|
||||||
|
content = Pica::command_names[header.cmd_id];
|
||||||
|
content.append(" ");
|
||||||
|
} else if (index.column() == 1) {
|
||||||
for (int j = 0; j < cmd.size(); ++j)
|
for (int j = 0; j < cmd.size(); ++j)
|
||||||
content.append(QString("%1 ").arg(cmd[j], 8, 16, QLatin1Char('0')));
|
content.append(QString("%1 ").arg(cmd[j], 8, 16, QLatin1Char('0')));
|
||||||
|
}
|
||||||
|
|
||||||
return QVariant(content);
|
return QVariant(content);
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,6 +100,7 @@ public:
|
||||||
auto& cmd = cmdlist.back();
|
auto& cmd = cmdlist.back();
|
||||||
|
|
||||||
size_t size = 2 + header.extra_data_length;
|
size_t size = 2 + header.extra_data_length;
|
||||||
|
size = (size + 1) / 2 * 2; // align to 8 bytes
|
||||||
cmd.reserve(size);
|
cmd.reserve(size);
|
||||||
std::copy(parse_pointer, parse_pointer + size, std::back_inserter(cmd));
|
std::copy(parse_pointer, parse_pointer + size, std::back_inserter(cmd));
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <initializer_list>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
#include "common/bit_field.h"
|
#include "common/bit_field.h"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
|
||||||
|
@ -34,4 +37,17 @@ union CommandHeader {
|
||||||
BitField<31, 1, u32> group_commands;
|
BitField<31, 1, u32> group_commands;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static std::map<CommandId, const char*> command_names = {
|
||||||
|
{CommandId::ViewportSizeX, "ViewportSizeX" },
|
||||||
|
{CommandId::ViewportInvSizeX, "ViewportInvSizeX" },
|
||||||
|
{CommandId::ViewportSizeY, "ViewportSizeY" },
|
||||||
|
{CommandId::ViewportInvSizeY, "ViewportInvSizeY" },
|
||||||
|
{CommandId::ViewportCorner, "ViewportCorner" },
|
||||||
|
{CommandId::DepthBufferFormat, "DepthBufferFormat" },
|
||||||
|
{CommandId::ColorBufferFormat, "ColorBufferFormat" },
|
||||||
|
{CommandId::DepthBufferAddress, "DepthBufferAddress" },
|
||||||
|
{CommandId::ColorBufferAddress, "ColorBufferAddress" },
|
||||||
|
{CommandId::ColorBufferSize, "ColorBufferSize" },
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue