Fix inconsistencies in exports D3D12 html state. Closes #3823

This commit is contained in:
baldurk
2026-04-16 14:00:58 +01:00
parent 0b9a36b581
commit 748aeee584
3 changed files with 64 additions and 25 deletions
@@ -3139,6 +3139,28 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe
QVariantList row = exportViewHTML(used.descriptor, false, shaderInput, QString());
QString regname;
if(shaderInput)
{
if(!spacesUsed)
regname = QFormatStr("%1").arg(shaderInput->fixedBindNumber);
else
regname = QFormatStr("space%1, %2")
.arg(shaderInput->fixedBindSetOrSpace)
.arg(shaderInput->fixedBindNumber);
if(!shaderInput->name.empty())
regname += lit(": ") + shaderInput->name;
if(shaderInput->bindArraySize > 1)
regname += QFormatStr("[%1]").arg(used.access.arrayElement);
}
else if(used.access.index == DescriptorAccess::NoShaderBinding)
{
regname = m_Locations[{used.access.descriptorStore, used.access.byteOffset}].logicalBindName;
}
row.push_front(regname);
rowsRO.push_back(row);
}
@@ -3154,6 +3176,28 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe
QVariantList row = exportViewHTML(used.descriptor, true, shaderInput, QString());
QString regname;
if(shaderInput)
{
if(!spacesUsed)
regname = QFormatStr("%1").arg(shaderInput->fixedBindNumber);
else
regname = QFormatStr("space%1, %2")
.arg(shaderInput->fixedBindSetOrSpace)
.arg(shaderInput->fixedBindNumber);
if(!shaderInput->name.empty())
regname += lit(": ") + shaderInput->name;
if(shaderInput->bindArraySize > 1)
regname += QFormatStr("[%1]").arg(used.access.arrayElement);
}
else if(used.access.index == DescriptorAccess::NoShaderBinding)
{
regname = m_Locations[{used.access.descriptorStore, used.access.byteOffset}].logicalBindName;
}
row.push_front(regname);
rowsRW.push_back(row);
}
@@ -3263,9 +3307,20 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe
xml.writeStartElement(lit("p"));
xml.writeEndElement();
m_Common.exportHTMLTable(
xml, {tr("Base Shading Rate"), tr("Shading Rate Combiners"), tr("Shading Rate Image")},
{QFormatStr("%1x%2").arg(rs.state.baseShadingRate.first).arg(rs.state.baseShadingRate.second),
QFormatStr("%1, %2")
.arg(ToQStr(rs.state.shadingRateCombiners.first, GraphicsAPI::D3D12))
.arg(ToQStr(rs.state.shadingRateCombiners.second, GraphicsAPI::D3D12)),
m_Ctx.GetResourceName(rs.state.shadingRateImage)});
xml.writeStartElement(lit("p"));
xml.writeEndElement();
m_Common.exportHTMLTable(
xml,
{tr("Line Rasteriztion"), tr("Forced Sample Count"), tr("Conservative Raster"),
{tr("Line Rasterization"), tr("Forced Sample Count"), tr("Conservative Raster"),
tr("Sample Mask")},
{ToQStr(rs.state.lineRasterMode), rs.state.forcedSampleCount,
rs.state.conservativeRasterization != ConservativeRaster::Disabled ? tr("Yes") : tr("No"),
@@ -3334,12 +3389,10 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe
.arg(om.blendState.blendFactor[2], 0, 'f', 2)
.arg(om.blendState.blendFactor[3], 0, 'f', 2);
m_Common.exportHTMLTable(xml,
{tr("Independent Blend Enable"), tr("Alpha to Coverage"),
tr("Blend Factor"), tr("Multisampling Rate")},
{om.blendState.independentBlend ? tr("Yes") : tr("No"),
om.blendState.alphaToCoverage ? tr("Yes") : tr("No"), blendFactor,
tr("%1x %2 qual").arg(om.multiSampleCount).arg(om.multiSampleQuality)});
m_Common.exportHTMLTable(
xml, {tr("Independent Blend Enable"), tr("Alpha to Coverage"), tr("Blend Factor")},
{om.blendState.independentBlend ? tr("Yes") : tr("No"),
om.blendState.alphaToCoverage ? tr("Yes") : tr("No"), blendFactor});
xml.writeStartElement(lit("h3"));
xml.writeCharacters(tr("Target Blends"));
@@ -3476,7 +3529,7 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe
m_Common.exportHTMLTable(xml,
{
tr("Slot"),
tr("Name"),
tr("Resource"),
tr("View Type"),
tr("Resource Type"),
tr("Width"),
@@ -3508,7 +3561,7 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe
m_Common.exportHTMLTable(xml,
{
tr("Name"),
tr("Resource"),
tr("View Type"),
tr("Resource Type"),
tr("Width"),
-11
View File
@@ -627,17 +627,6 @@ struct OM
:type: bool
)");
bool stencilReadOnly = false;
DOCUMENT(R"(The sample count used for rendering.
:type: int
)");
uint32_t multiSampleCount = 1;
DOCUMENT(R"(The MSAA quality level used for rendering.
:type: int
)");
uint32_t multiSampleQuality = 0;
};
DOCUMENT("Describes the current state that a sub-resource is in.");
+2 -5
View File
@@ -1574,10 +1574,7 @@ void DoSerialise(SerialiserType &ser, D3D12Pipe::OM &el)
SERIALISE_MEMBER(depthReadOnly);
SERIALISE_MEMBER(stencilReadOnly);
SERIALISE_MEMBER(multiSampleCount);
SERIALISE_MEMBER(multiSampleQuality);
SIZE_CHECK(240);
SIZE_CHECK(232);
}
template <typename SerialiserType>
@@ -1682,7 +1679,7 @@ void DoSerialise(SerialiserType &ser, D3D12Pipe::State &el)
SERIALISE_MEMBER(resourceStates);
SIZE_CHECK(800);
SIZE_CHECK(792);
}
#pragma endregion D3D12 pipeline state