mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +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; | ||||||
|             for (int j = 0; j < cmd.size(); ++j) |             if (index.column() == 0) { | ||||||
|                 content.append(QString("%1 ").arg(cmd[j], 8, 16, QLatin1Char('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); |             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…
	
	Add table
		Add a link
		
	
		Reference in a new issue