| 2824 | } |
| 2825 | |
| 2826 | void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::InputAssembly &ia) |
| 2827 | { |
| 2828 | const ActionDescription *action = m_Ctx.CurAction(); |
| 2829 | |
| 2830 | { |
| 2831 | xml.writeStartElement(lit("h3")); |
| 2832 | xml.writeCharacters(tr("Input Layouts")); |
| 2833 | xml.writeEndElement(); |
| 2834 | |
| 2835 | QList<QVariantList> rows; |
| 2836 | |
| 2837 | int i = 0; |
| 2838 | for(const D3D12Pipe::Layout &l : ia.layouts) |
| 2839 | { |
| 2840 | rows.push_back({i, l.semanticName, l.semanticIndex, l.format.Name(), l.inputSlot, |
| 2841 | l.byteOffset, (bool)l.perInstance, l.instanceDataStepRate}); |
| 2842 | |
| 2843 | i++; |
| 2844 | } |
| 2845 | |
| 2846 | m_Common.exportHTMLTable( |
| 2847 | xml, |
| 2848 | {tr("Slot"), tr("Semantic Name"), tr("Semantic Index"), tr("Format"), tr("Input Slot"), |
| 2849 | tr("Byte Offset"), tr("Per Instance"), tr("Instance Data Step Rate")}, |
| 2850 | rows); |
| 2851 | } |
| 2852 | |
| 2853 | { |
| 2854 | xml.writeStartElement(lit("h3")); |
| 2855 | xml.writeCharacters(tr("Vertex Buffers")); |
| 2856 | xml.writeEndElement(); |
| 2857 | |
| 2858 | QList<QVariantList> rows; |
| 2859 | |
| 2860 | int i = 0; |
| 2861 | for(const D3D12Pipe::VertexBuffer &vb : ia.vertexBuffers) |
| 2862 | { |
| 2863 | QString name = m_Ctx.GetResourceName(vb.resourceId); |
| 2864 | uint64_t length = 0; |
| 2865 | |
| 2866 | if(vb.resourceId == ResourceId()) |
| 2867 | { |
| 2868 | continue; |
| 2869 | } |
| 2870 | else |
| 2871 | { |
| 2872 | BufferDescription *buf = m_Ctx.GetBuffer(vb.resourceId); |
| 2873 | if(buf) |
| 2874 | length = buf->length; |
| 2875 | } |
| 2876 | |
| 2877 | length = qMin(length, (uint64_t)vb.byteSize); |
| 2878 | |
| 2879 | rows.push_back({i, name, vb.byteStride, (qulonglong)vb.byteOffset, (qulonglong)length}); |
| 2880 | |
| 2881 | i++; |
| 2882 | } |
| 2883 |
nothing calls this directly
no test coverage detected