https://github.com/shader-slang/slang
Tip revision: 5042867e21f681eb0e9edde55146a9b8c1d3637c authored by Yong He on 16 November 2021, 20:59:42 UTC
gfx: setSamplePositions and clearResourceView. (#2018)
gfx: setSamplePositions and clearResourceView. (#2018)
Tip revision: 5042867
slang.natvis
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="Slang::BCPtr<*>">
<SmartPointer Usage="Minimal">rawVal ? ($T1*)((char*)this + rawVal) : ($T1*)0</SmartPointer>
<DisplayString Condition="rawVal == 0">BCPtr nullptr</DisplayString>
<DisplayString Condition="rawVal != 0">BCPtr {*($T1*)((char*)this + rawVal)}</DisplayString>
<Expand>
<ExpandedItem>rawVal ? ($T1*)((char*)this + rawVal) : ($T1*)0</ExpandedItem>
</Expand>
</Type>
<Type Name="Slang::DeclRef<*>">
<SmartPointer Usage="Minimal">decl ? ($T1*)(decl) : ($T1*)0</SmartPointer>
<DisplayString Condition="decl == 0">DeclRef nullptr</DisplayString>
<DisplayString Condition="decl != 0">{(*(*(Slang::DeclRefBase*)this).decl).nameAndLoc}</DisplayString>
<Expand>
<ExpandedItem>decl ? ($T1*)(decl) : ($T1*)0</ExpandedItem>
<Item Name="[Substitutions]:">"========================="</Item>
<LinkedListItems>
<HeadPointer>substitutions.substitutions.pointer</HeadPointer>
<NextPointer>outer.pointer</NextPointer>
<ValueNode>this</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="Slang::DeclRefBase">
<SmartPointer Usage="Minimal">decl</SmartPointer>
<DisplayString Condition="decl == 0">DeclRefBase nullptr</DisplayString>
<DisplayString Condition="decl != 0">{(*(*(Slang::DeclRefBase*)this).decl).nameAndLoc}</DisplayString>
<Expand>
<ExpandedItem>decl</ExpandedItem>
<Item Name="[Substitutions]:">"========================="</Item>
<LinkedListItems>
<HeadPointer>substitutions.genericSubstitutions.pointer</HeadPointer>
<NextPointer>outer.pointer</NextPointer>
<ValueNode>this</ValueNode>
</LinkedListItems>
<LinkedListItems>
<HeadPointer>substitutions.globalGenParamSubstitutions.pointer</HeadPointer>
<NextPointer>outer.pointer</NextPointer>
<ValueNode>this</ValueNode>
</LinkedListItems>
<Item Name ="thisSubst">substitutions.thisTypeSubstitution</Item>
</Expand>
</Type>
<Type Name="Slang::GenericSubstitution">
<DisplayString>GenSubst {(*genericDecl).nameAndLoc}</DisplayString>
<Expand>
<Item Name="genericDecl">genericDecl</Item>
<ExpandedItem>args</ExpandedItem>
</Expand>
</Type>
<Type Name="Slang::DeclRefType">
<DisplayString>DeclRefType {declRef}</DisplayString>
<Expand>
<ExpandedItem>declRef</ExpandedItem>
</Expand>
</Type>
<Type Name="Slang::FuncDecl">
<DisplayString>FuncDecl {nameAndLoc}</DisplayString>
</Type>
<Type Name="Slang::Name">
<DisplayString>{{name={(char*)(text.m_buffer.pointer+1), s}}}</DisplayString>
</Type>
<Type Name="Slang::NameLoc">
<DisplayString>{{name={(char*)((*name).text.m_buffer.pointer+1), s} loc={loc.raw}}}</DisplayString>
</Type>
<Type Name="Slang::IRWitnessTableEntry">
<Expand>
<Item Name="[Key]">requirementKey</Item>
<Item Name="[Val]">satisfyingVal</Item>
</Expand>
</Type>
<Type Name="Slang::IRInst">
<DisplayString>{{{m_op} #{_debugUID}}}</DisplayString>
<Expand>
<Item Name="[op]">m_op</Item>
<Item Name="[UID]">_debugUID</Item>
<Item Name="[type]">typeUse.usedValue</Item>
<CustomListItems MaxItemsPerView="3">
<Variable Name="child" InitialValue="m_decorationsAndChildren.first"/>
<Loop>
<If Condition="child == 0">
<Break/>
</If>
<If Condition="child->m_op == SlangDebug__IROpNameHint">
<Item Name="[name]">((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.numChars]s8</Item>
</If>
<If Condition="child->m_op == SlangDebug__IROpExport">
<Item Name="[exportName]">((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.numChars]s8</Item>
</If>
<If Condition="child->m_op == SlangDebug__IROpImport">
<Item Name="[importName]">((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.numChars]s8</Item>
</If>
<Exec>child = child->next</Exec>
</Loop>
</CustomListItems>
<Item Name="[value]" Condition="m_op == SlangDebug__IROpStringLit">((IRStringLit*)this)->value.stringVal.chars,[((IRStringLit*)this)->value.stringVal.numChars]s8</Item>
<Item Name="[value]" Condition="m_op == SlangDebug__IROpIntLit">((IRIntLit*)this)->value.intVal</Item>
<!--
<Synthetic Name="[operands]">
<DisplayString>{{count = {operandCount}}}</DisplayString>
<Expand>
<Item Name="[count]">operandCount</Item>
<ArrayItems>
<Size>operandCount</Size>
<ValuePointer>(IRUse*)(&(typeUse) + 1)</ValuePointer>
</ArrayItems>
</Expand>
</Synthetic>
-->
<CustomListItems MaxItemsPerView="10">
<Variable Name="index" InitialValue="0"/>
<Variable Name="nameDecoration" InitialValue="(IRInst*)nullptr"/>
<Variable Name="child" InitialValue="(IRInst*)nullptr"/>
<Variable Name="pOperandInst" InitialValue="(IRInst*)nullptr"/>
<Loop Condition="index < operandCount">
<Exec>pOperandInst = ((IRUse*)(&(typeUse) + 1 + index))->usedValue </Exec>
<Item Condition="pOperandInst == 0" Name="[operand{index}]">pOperandInst</Item>
<If Condition="pOperandInst != 0">
<Exec>child = pOperandInst->m_decorationsAndChildren.first</Exec>
<Exec>nameDecoration = 0</Exec>
<Loop Condition="child != 0">
<If Condition="child->m_op == SlangDebug__IROpNameHint">
<Exec>nameDecoration = child</Exec>
<Break/>
</If>
<If Condition="child->m_op == SlangDebug__IROpExport && (nameDecoration == 0 || nameDecoration->m_op != SlangDebug__IROpNameHint)">
<Exec>nameDecoration = child</Exec>
</If>
<If Condition="child->m_op == SlangDebug__IROpImport && (nameDecoration == 0 || nameDecoration->m_op != SlangDebug__IROpNameHint)">
<Exec>nameDecoration = child</Exec>
</If>
<Exec>child = child->next</Exec>
</Loop>
<Item Condition="nameDecoration != 0" Name="[operand{index}] : {((Slang::IRStringLit*)(((Slang::IRUse*)(nameDecoration + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(nameDecoration + 1))->usedValue))->value.stringVal.numChars]s8}">*pOperandInst</Item>
<Item Condition="nameDecoration == 0" Name="[operand{index}]">*pOperandInst</Item>
</If>
<Exec>index = index + 1</Exec>
</Loop>
</CustomListItems>
<Synthetic Name="[decorations/children]">
<Expand>
<CustomListItems MaxItemsPerView="5000">
<Variable Name="pItem" InitialValue="m_decorationsAndChildren.first"/>
<Variable Name="nameDecoration" InitialValue="(IRInst*)nullptr"/>
<Variable Name="child" InitialValue="(IRInst*)nullptr"/>
<Variable Name="index" InitialValue="0"/>
<Loop Condition="pItem != 0">
<Exec>child = pItem->m_decorationsAndChildren.first </Exec>
<Exec>nameDecoration = 0</Exec>
<Loop Condition="child != 0">
<If Condition="child->m_op == SlangDebug__IROpNameHint">
<Exec>nameDecoration = child</Exec>
<Break/>
</If>
<If Condition="child->m_op == SlangDebug__IROpExport && (nameDecoration == 0 || nameDecoration->m_op != SlangDebug__IROpNameHint)">
<Exec>nameDecoration = child</Exec>
</If>
<If Condition="child->m_op == SlangDebug__IROpImport && (nameDecoration == 0 || nameDecoration->m_op != SlangDebug__IROpNameHint)">
<Exec>nameDecoration = child</Exec>
</If>
<Exec>child = child->next</Exec>
</Loop>
<Item Condition="nameDecoration != 0" Name="[{index}] : {((Slang::IRStringLit*)(((Slang::IRUse*)(nameDecoration + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(nameDecoration + 1))->usedValue))->value.stringVal.numChars]s8}">*pItem</Item>
<Item Condition="nameDecoration == 0">*pItem</Item>
<Exec>pItem = pItem->next</Exec>
<Exec>index = index + 1</Exec>
</Loop>
</CustomListItems>
</Expand>
</Synthetic>
<Item Name="[parent]">parent</Item>
<Synthetic Name="[uses]">
<Expand>
<LinkedListItems>
<HeadPointer>firstUse</HeadPointer>
<NextPointer>nextUse</NextPointer>
<ValueNode>user</ValueNode>
</LinkedListItems>
</Expand>
</Synthetic>
</Expand>
</Type>
<Type Name="Slang::IRUse">
<DisplayString>{{IRUse {usedValue}}}</DisplayString>
<Expand>
<ExpandedItem>usedValue</ExpandedItem>
</Expand>
</Type>
</AutoVisualizer>