mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-17 07:21:03 +00:00
788f68a1f7
* Add helpers for creating DX op instructions with less boilerplate. * On encode, strip any unused functions or globals to comply with strict DXIL validation requirements. * Create attribute sets on demand to match functions. * Add some extra helpers for creating constants, blocks, and patching runtime chunk.
135 lines
7.2 KiB
XML
135 lines
7.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
|
<Type Name="rdcinflexiblestr">
|
|
<DisplayString>{(char*)pointer,s}</DisplayString>
|
|
<StringView>(char*)pointer,s</StringView>
|
|
<Expand>
|
|
<Synthetic Name="[mode]" Condition="is_literal != 0">
|
|
<DisplayString>Compile-Time Literal</DisplayString>
|
|
</Synthetic>
|
|
<Synthetic Name="[mode]" Condition="is_literal == 0">
|
|
<DisplayString>Heap allocated</DisplayString>
|
|
</Synthetic>
|
|
<ArrayItems>
|
|
<Size>strlen((char *)pointer)</Size>
|
|
<ValuePointer>(char *)pointer</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
<Type Name="rdcstr">
|
|
<DisplayString Condition="d.fixed.flags & rdcstr::FIXED_STATE">{d.fixed.str,s}</DisplayString>
|
|
<DisplayString Condition="d.fixed.flags & rdcstr::ALLOC_STATE">{d.alloc.str,s}</DisplayString>
|
|
<DisplayString>{d.arr.str,s}</DisplayString>
|
|
<StringView Condition="d.fixed.flags & rdcstr::FIXED_STATE">d.fixed.str,s</StringView>
|
|
<StringView Condition="d.fixed.flags & rdcstr::ALLOC_STATE">d.alloc.str,s</StringView>
|
|
<StringView>d.arr.str,s</StringView>
|
|
<Expand>
|
|
<Synthetic Name="[mode]" Condition="d.fixed.flags & rdcstr::FIXED_STATE">
|
|
<DisplayString>Compile-Time Literal</DisplayString>
|
|
</Synthetic>
|
|
<Item Name="[size]" ExcludeView="simple" Condition="d.fixed.flags & rdcstr::FIXED_STATE">d.fixed.size</Item>
|
|
<Item Name="[capacity]" ExcludeView="simple" Condition="d.fixed.flags & rdcstr::FIXED_STATE">"N/A"</Item>
|
|
<ArrayItems Condition="d.fixed.flags & rdcstr::FIXED_STATE">
|
|
<Size>d.fixed.size</Size>
|
|
<ValuePointer>d.fixed.str</ValuePointer>
|
|
</ArrayItems>
|
|
|
|
<Synthetic Name="[mode]" Condition="d.fixed.flags & rdcstr::ALLOC_STATE">
|
|
<DisplayString>Heap-allocated String</DisplayString>
|
|
</Synthetic>
|
|
<Item Name="[size]" ExcludeView="simple" Condition="d.fixed.flags & rdcstr::ALLOC_STATE">d.alloc.size</Item>
|
|
<Item Name="[capacity]" ExcludeView="simple" Condition="d.fixed.flags & rdcstr::ALLOC_STATE">d.alloc._capacity & rdcstr::alloc_ptr_rep::CAPACITY_MASK</Item>
|
|
<ArrayItems Condition="d.fixed.flags & rdcstr::ALLOC_STATE">
|
|
<Size>d.alloc.size</Size>
|
|
<ValuePointer>d.alloc.str</ValuePointer>
|
|
</ArrayItems>
|
|
|
|
<Synthetic Name="[mode]" Condition="(d.fixed.flags & (rdcstr::ALLOC_STATE|rdcstr::FIXED_STATE)) == 0">
|
|
<DisplayString>Internal Array Small String</DisplayString>
|
|
</Synthetic>
|
|
<Item Name="[size]" ExcludeView="simple" Condition="(d.fixed.flags & (rdcstr::ALLOC_STATE|rdcstr::FIXED_STATE)) == 0">d.arr._size</Item>
|
|
<Item Name="[capacity]" ExcludeView="simple" Condition="(d.fixed.flags & (rdcstr::ALLOC_STATE|rdcstr::FIXED_STATE)) == 0">d.arr.capacity</Item>
|
|
<ArrayItems Condition="(d.fixed.flags & (rdcstr::ALLOC_STATE|rdcstr::FIXED_STATE)) == 0">
|
|
<Size>d.arr._size</Size>
|
|
<ValuePointer>d.arr.str</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
<Type Name="rdcarray<*>">
|
|
<DisplayString>{{ size={usedCount} }}</DisplayString>
|
|
<Expand>
|
|
<Item Name="[size]" ExcludeView="simple">usedCount</Item>
|
|
<Item Name="[capacity]" ExcludeView="simple">allocatedCount</Item>
|
|
<ArrayItems>
|
|
<Size>usedCount</Size>
|
|
<ValuePointer>elems</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
<Type Name="rdcpair<*>">
|
|
<DisplayString>{{ {first}, {second} }}</DisplayString>
|
|
<Expand>
|
|
<Item Name="first" ExcludeView="simple">first</Item>
|
|
<Item Name="second" ExcludeView="simple">second</Item>
|
|
</Expand>
|
|
</Type>
|
|
<Type Name="SDType">
|
|
<DisplayString>{name}</DisplayString>
|
|
<Expand>
|
|
<Item Name="name">name</Item>
|
|
<Item Name="basetype">basetype</Item>
|
|
<Item Name="byteSize">byteSize</Item>
|
|
<Item Name="flags">flags</Item>
|
|
</Expand>
|
|
</Type>
|
|
<Type Name="SDObject">
|
|
<DisplayString Condition="type.flags & SDTypeFlags::HasCustomString">{name} = {data.str}</DisplayString>
|
|
<DisplayString Condition="type.basetype == SDBasic::String">{name} = {data.str}</DisplayString>
|
|
<DisplayString Condition="type.basetype == SDBasic::UnsignedInteger">{name} = {data.basic.u}</DisplayString>
|
|
<DisplayString Condition="type.basetype == SDBasic::SignedInteger">{name} = {data.basic.i}</DisplayString>
|
|
<DisplayString Condition="type.basetype == SDBasic::Float">{name} = {data.basic.d}</DisplayString>
|
|
<DisplayString Condition="type.basetype == SDBasic::Boolean">{name} = {data.basic.b}</DisplayString>
|
|
<DisplayString Condition="type.basetype == SDBasic::Character">{name} = {data.basic.c}</DisplayString>
|
|
<DisplayString Condition="type.basetype == SDBasic::Resource">{name} = {data.basic.id}</DisplayString>
|
|
<DisplayString Condition="type.basetype == SDBasic::Array">{name} = {type.name}[]</DisplayString>
|
|
<DisplayString>SDObject: {type.name} {name}</DisplayString>
|
|
<Expand>
|
|
<Item Condition="type.basetype == SDBasic::Array" Name="[size]" ExcludeView="simple">data.children.usedCount</Item>
|
|
<ArrayItems Condition="type.basetype == SDBasic::Array || type.basetype == SDBasic::Struct">
|
|
<Size>data.children.usedCount</Size>
|
|
<ValuePointer>data.children.elems</ValuePointer>
|
|
</ArrayItems>
|
|
<Item Condition="type.basetype != SDBasic::Array && type.basetype != SDBasic::Struct" Name="type">type</Item>
|
|
<Item Condition="type.basetype != SDBasic::Array && type.basetype != SDBasic::Struct" Name="name">name</Item>
|
|
<Item Condition="type.basetype != SDBasic::Array && type.basetype != SDBasic::Struct" Name="data">data</Item>
|
|
</Expand>
|
|
</Type>
|
|
<Type Name="SDChunk">
|
|
<DisplayString>SDChunk: {name} ({metadata.chunkID})</DisplayString>
|
|
<Expand>
|
|
<Item Name="metadata" ExcludeView="simple">metadata</Item>
|
|
<Item Name="[size]" ExcludeView="simple">data.children.usedCount</Item>
|
|
<ArrayItems>
|
|
<Size>data.children.usedCount</Size>
|
|
<ValuePointer>data.children.elems</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
<Type Name="D3D12ResourceLayout">
|
|
<DisplayString Condition="value == D3D12_BARRIER_LAYOUT_UNDEFINED">{D3D12_BARRIER_LAYOUT_UNDEFINED}</DisplayString>
|
|
<DisplayString Condition="value & 0x80000000U">{D3D12_BARRIER_LAYOUT(value & 0x7fffffffU)}</DisplayString>
|
|
<DisplayString>{D3D12_RESOURCE_STATES(value)}</DisplayString>
|
|
</Type>
|
|
<Type Name="DXIL::Value" Inheritable="false">
|
|
<Expand>
|
|
<ExpandedItem Condition="valKind==1">*(DXIL::Literal *)this</ExpandedItem>
|
|
<ExpandedItem Condition="valKind==2">*(DXIL::Alias *)this</ExpandedItem>
|
|
<ExpandedItem Condition="valKind==3">*(DXIL::Constant *)this</ExpandedItem>
|
|
<ExpandedItem Condition="valKind==4">*(DXIL::GlobalVar *)this</ExpandedItem>
|
|
<ExpandedItem Condition="valKind==5">*(DXIL::Metadata *)this</ExpandedItem>
|
|
<ExpandedItem Condition="valKind==6">*(DXIL::Instruction *)this</ExpandedItem>
|
|
<ExpandedItem Condition="valKind==7">*(DXIL::Function *)this</ExpandedItem>
|
|
<ExpandedItem Condition="valKind==8">*(DXIL::Block *)this</ExpandedItem>
|
|
</Expand>
|
|
</Type>
|
|
</AutoVisualizer> |