Further refine GPU command list debugging.
This commit is contained in:
		@@ -53,7 +53,7 @@ int GPUCommandListModel::rowCount(const QModelIndex& parent) const
 | 
			
		||||
 | 
			
		||||
int GPUCommandListModel::columnCount(const QModelIndex& parent) const
 | 
			
		||||
{
 | 
			
		||||
    return 1;
 | 
			
		||||
    return 2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
        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')));
 | 
			
		||||
        }
 | 
			
		||||
@@ -78,11 +78,17 @@ QVariant GPUCommandListModel::data(const QModelIndex& index, int role) const
 | 
			
		||||
        // index refers to a specific command
 | 
			
		||||
        const GraphicsDebugger::PicaCommandList& cmdlist = command_lists[item->parent->index].second;
 | 
			
		||||
        const GraphicsDebugger::PicaCommand& cmd = cmdlist[item->index];
 | 
			
		||||
        const Pica::CommandHeader& header = cmd.GetHeader();
 | 
			
		||||
 | 
			
		||||
        if (role == Qt::DisplayRole) {
 | 
			
		||||
            QString content;
 | 
			
		||||
            for (int j = 0; j < cmd.size(); ++j)
 | 
			
		||||
                content.append(QString("%1 ").arg(cmd[j], 8, 16, QLatin1Char('0')));
 | 
			
		||||
            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)
 | 
			
		||||
                    content.append(QString("%1 ").arg(cmd[j], 8, 16, QLatin1Char('0')));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return QVariant(content);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -100,6 +100,7 @@ public:
 | 
			
		||||
            auto& cmd = cmdlist.back();
 | 
			
		||||
 | 
			
		||||
            size_t size = 2 + header.extra_data_length;
 | 
			
		||||
            size = (size + 1) / 2 * 2; // align to 8 bytes
 | 
			
		||||
            cmd.reserve(size);
 | 
			
		||||
            std::copy(parse_pointer, parse_pointer + size, std::back_inserter(cmd));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,9 @@
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <initializer_list>
 | 
			
		||||
#include <map>
 | 
			
		||||
 | 
			
		||||
#include "common/bit_field.h"
 | 
			
		||||
#include "common/common_types.h"
 | 
			
		||||
 | 
			
		||||
@@ -34,4 +37,17 @@ union CommandHeader {
 | 
			
		||||
    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" },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user