mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-08 08:40:55 +00:00
Display struct/enum typenames when available in buffer viewer
This commit is contained in:
@@ -3459,20 +3459,27 @@ QVariantList GetVariants(ResourceFormat format, const ShaderConstant &var, const
|
||||
return ret;
|
||||
}
|
||||
|
||||
QString TypeString(const ShaderVariable &v)
|
||||
QString TypeString(const ShaderVariable &v, const ShaderConstant &c)
|
||||
{
|
||||
if(!v.members.isEmpty() || v.type == VarType::Struct)
|
||||
if(!v.members.isEmpty() || v.type == VarType::Struct || v.type == VarType::Enum)
|
||||
{
|
||||
if(v.type == VarType::Struct)
|
||||
if(v.type == VarType::Struct || v.type == VarType::Enum)
|
||||
{
|
||||
QString structName = v.type == VarType::Struct ? lit("struct") : lit("enum");
|
||||
|
||||
if(c.type.baseType == v.type && !c.type.name.empty())
|
||||
structName = c.type.name;
|
||||
|
||||
if(!v.members.empty() && v.members[0].name.contains('['))
|
||||
return lit("struct[%2]").arg(v.members.count());
|
||||
return lit("%1[%2]").arg(structName).arg(v.members.count());
|
||||
else
|
||||
return lit("struct");
|
||||
return lit("%1").arg(structName);
|
||||
}
|
||||
else
|
||||
{
|
||||
return QFormatStr("%1[%2]").arg(TypeString(v.members[0])).arg(v.members.count());
|
||||
return QFormatStr("%1[%2]")
|
||||
.arg(TypeString(v.members[0], c.type.members.empty() ? c : c.type.members[0]))
|
||||
.arg(v.members.count());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ void SetInterpretedResourceFormat(ShaderConstant &elem, ResourceFormatType inter
|
||||
CompType interpretCompType);
|
||||
ShaderVariable InterpretShaderVar(const ShaderConstant &elem, const byte *data, const byte *end);
|
||||
|
||||
QString TypeString(const ShaderVariable &v);
|
||||
QString TypeString(const ShaderVariable &v, const ShaderConstant &c = ShaderConstant());
|
||||
QString RowString(const ShaderVariable &v, uint32_t row, VarType type = VarType::Unknown);
|
||||
QString VarString(const ShaderVariable &v, const ShaderConstant &c);
|
||||
QString RowTypeString(const ShaderVariable &v);
|
||||
|
||||
@@ -3440,7 +3440,8 @@ void BufferViewer::UI_AddFixedVariables(RDTreeWidgetItem *root, uint32_t baseOff
|
||||
QFormatStr(" (bits %1:%2)").arg(c.bitFieldOffset).arg(c.bitFieldOffset + c.bitFieldSize);
|
||||
}
|
||||
|
||||
RDTreeWidgetItem *n = new RDTreeWidgetItem({v.name, VarString(v, c), offsetStr, TypeString(v)});
|
||||
RDTreeWidgetItem *n =
|
||||
new RDTreeWidgetItem({v.name, VarString(v, c), offsetStr, TypeString(v, c)});
|
||||
|
||||
n->setTag(QVariant::fromValue(FixedVarTag(v.name, baseOffset + c.byteOffset)));
|
||||
|
||||
@@ -3463,7 +3464,7 @@ void BufferViewer::UI_AddFixedVariables(RDTreeWidgetItem *root, uint32_t baseOff
|
||||
const uint32_t elOffset = baseOffset + c.byteOffset + c.type.arrayByteStride * e;
|
||||
|
||||
RDTreeWidgetItem *el = new RDTreeWidgetItem(
|
||||
{v.members[e].name, VarString(v.members[e], c), elOffset, TypeString(v.members[e])});
|
||||
{v.members[e].name, VarString(v.members[e], c), elOffset, TypeString(v.members[e], c)});
|
||||
|
||||
el->setTag(QVariant::fromValue(FixedVarTag(v.members[e].name, elOffset)));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user