Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
0abacfc
adding support for Root Descriptors
Apr 24, 2025
8b8c02a
clean up
Apr 24, 2025
7ac9641
addressing comments
Apr 25, 2025
c105458
formating
Apr 26, 2025
efe76aa
try fix test
Apr 26, 2025
a928e9d
addressing comments
Apr 26, 2025
a38f10b
refactoring mcdxbc struct to store root parameters out of order
Apr 25, 2025
9a7c359
changing name
Apr 28, 2025
d6c2b55
changing variant to host pointers
Apr 28, 2025
93e4cf2
clean up
Apr 28, 2025
b45b1b6
fix
Apr 28, 2025
f804a23
fix
Apr 28, 2025
44bd13a
making read work
Apr 29, 2025
ac51bf6
adding reading logic
May 2, 2025
97fb003
test pass locally
May 2, 2025
93e04bd
adding tests
May 2, 2025
2f6d579
adding more tests
May 2, 2025
76b1b75
clean up
May 2, 2025
b2bfb02
refactoring root signature dxcontainer yaml representation
May 2, 2025
9ee2964
clean up
May 2, 2025
2527580
fix test
May 2, 2025
c3a46da
copy test
May 2, 2025
15eb6f5
fix naming
May 5, 2025
3e26364
moving root signature binary representation to RTS0 namespace
May 5, 2025
bc246e6
adding static samplers
May 7, 2025
f23c054
fixing bugs
May 7, 2025
76ca401
adding tests
May 7, 2025
b9d7f07
fix naming
May 5, 2025
46cc8c1
addressing comments
May 8, 2025
1b3e10a
addressing comments
May 8, 2025
1f31957
addressing comments
May 8, 2025
e8fbfce
clean up
May 8, 2025
a31e5a5
removing v parameter
May 9, 2025
a394ad0
Merge branch 'obj2yaml/root-descriptors' into refactoring/remove-union
May 9, 2025
ad415a7
clean up
May 9, 2025
8ff4845
Merge branch 'main' into refactoring/remove-union
May 9, 2025
98c6a5f
updating namespace naming
May 14, 2025
3465924
update namespace name
May 14, 2025
d67f7d3
addressing comment
May 14, 2025
5453ad0
clean up
May 14, 2025
836a8a8
format
May 14, 2025
5bd57a6
adding comment
May 14, 2025
960cb9c
adrresing comments
May 14, 2025
a60c7a3
clean up
May 14, 2025
2a4c2cb
formatting
May 15, 2025
c29d3f2
addressing comments
May 15, 2025
1513dab
Merge branch 'refactoring/remove-union' into obj2yaml/descriptor-table
May 16, 2025
95f3e99
Merge branch 'main' into obj2yaml/descriptor-table
May 16, 2025
eb97f1b
fixing test issues
May 16, 2025
a9b87c2
format
May 16, 2025
28be2f8
format
May 20, 2025
76a2b07
clean up
May 21, 2025
b891126
clean up
May 21, 2025
2a93252
fix formating issue
May 21, 2025
d616b65
fix formating issue
May 21, 2025
6eac7c4
making NumDescriptors uint32_t
May 22, 2025
df194b0
Merge branch 'main' into refactoring/dxcontainer-yaml
May 22, 2025
0136cfc
fix testing issues
May 22, 2025
b589d10
clean up
May 22, 2025
c7042b2
clean up
May 22, 2025
70a9b7f
addressing PR Comments
May 22, 2025
e3489a4
Merge branch 'refactoring/dxcontainer-yaml' into users/joaosaffran/13…
May 22, 2025
f1dd0ce
formating
May 22, 2025
6aa895e
Merge branch 'users/joaosaffran/138318' into obj2yaml/descriptor-table
May 22, 2025
f8080c4
fix tests
May 22, 2025
aabd424
addressing comments
May 23, 2025
e655315
move to namespace
May 23, 2025
3094a75
cleanup
May 23, 2025
984baf6
movin all to RTS0
May 23, 2025
3979151
clean up
May 23, 2025
e65f850
Merge branch 'main' into obj2yaml/descriptor-table
May 28, 2025
f5bffca
fix
May 28, 2025
a585134
adding check
May 28, 2025
08c5207
fix format?
May 29, 2025
b7b8896
Merge branch 'obj2yaml/descriptor-table' into obj2yaml/static-samplers
May 29, 2025
f992117
make static samplers value as default in yaml
May 29, 2025
04569bd
clean up
May 29, 2025
774cfd1
clean up
May 29, 2025
fd532ae
Merge branch 'main' into obj2yaml/static-samplers
May 29, 2025
ee8e5f9
clean up
May 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions llvm/include/llvm/BinaryFormat/DXContainer.h
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,26 @@ inline bool isValidShaderVisibility(uint32_t V) {
return false;
}

#define STATIC_SAMPLER_FILTER(Val, Enum) Enum = Val,
enum class StaticSamplerFilter : uint32_t {
#include "DXContainerConstants.def"
};

#define TEXTURE_ADDRESS_MODE(Val, Enum) Enum = Val,
enum class TextureAddressMode : uint32_t {
#include "DXContainerConstants.def"
};

#define COMPARISON_FUNCTION(Val, Enum) Enum = Val,
enum class SamplersComparisonFunction : uint32_t {
#include "DXContainerConstants.def"
};

#define STATIC_BORDER_COLOR(Val, Enum) Enum = Val,
enum class SamplersBorderColor : uint32_t {
#include "DXContainerConstants.def"
};

PartType parsePartType(StringRef S);

struct VertexPSVInfo {
Expand Down Expand Up @@ -600,6 +620,37 @@ static_assert(sizeof(ProgramSignatureElement) == 32,

namespace RTS0 {
namespace v1 {
struct StaticSampler {
uint32_t Filter;
uint32_t AddressU;
uint32_t AddressV;
uint32_t AddressW;
float MipLODBias;
uint32_t MaxAnisotropy;
uint32_t ComparisonFunc;
uint32_t BorderColor;
float MinLOD;
float MaxLOD;
uint32_t ShaderRegister;
uint32_t RegisterSpace;
uint32_t ShaderVisibility;
void swapBytes() {
sys::swapByteOrder(Filter);
sys::swapByteOrder(AddressU);
sys::swapByteOrder(AddressV);
sys::swapByteOrder(AddressW);
sys::swapByteOrder(MipLODBias);
sys::swapByteOrder(MaxAnisotropy);
sys::swapByteOrder(ComparisonFunc);
sys::swapByteOrder(BorderColor);
sys::swapByteOrder(MinLOD);
sys::swapByteOrder(MaxLOD);
sys::swapByteOrder(ShaderRegister);
sys::swapByteOrder(RegisterSpace);
sys::swapByteOrder(ShaderVisibility);
};
};

struct DescriptorRange {
uint32_t RangeType;
uint32_t NumDescriptors;
Expand Down
73 changes: 73 additions & 0 deletions llvm/include/llvm/BinaryFormat/DXContainerConstants.def
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,79 @@ SHADER_VISIBILITY(7, Mesh)
#undef SHADER_VISIBILITY
#endif // SHADER_VISIBILITY

#ifdef STATIC_SAMPLER_FILTER

STATIC_SAMPLER_FILTER(0, MIN_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x1, MIN_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x4, MIN_POINT_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x5, MIN_POINT_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x10, MIN_LINEAR_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x11, MIN_LINEAR_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x14, MIN_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x15, MIN_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x55, ANISOTROPIC)
STATIC_SAMPLER_FILTER(0x80, COMPARISON_MIN_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x81, COMPARISON_MIN_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x84, COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x85, COMPARISON_MIN_POINT_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x90, COMPARISON_MIN_LINEAR_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x91, COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x94, COMPARISON_MIN_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x95, COMPARISON_MIN_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0xd5, COMPARISON_ANISOTROPIC)
STATIC_SAMPLER_FILTER(0x100, MINIMUM_MIN_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x101, MINIMUM_MIN_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x104, MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x105, MINIMUM_MIN_POINT_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x110, MINIMUM_MIN_LINEAR_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x111, MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x114, MINIMUM_MIN_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x115, MINIMUM_MIN_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x155, MINIMUM_ANISOTROPIC)
STATIC_SAMPLER_FILTER(0x180, MAXIMUM_MIN_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x181, MAXIMUM_MIN_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x184, MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x185, MAXIMUM_MIN_POINT_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x190, MAXIMUM_MIN_LINEAR_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x191, MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x194, MAXIMUM_MIN_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x195, MAXIMUM_MIN_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x1d5, MAXIMUM_ANISOTROPIC)
#undef STATIC_SAMPLER_FILTER
#endif // STATIC_SAMPLER_FILTER

#ifdef TEXTURE_ADDRESS_MODE

TEXTURE_ADDRESS_MODE( 1, Wrap)
TEXTURE_ADDRESS_MODE( 2, Mirror)
TEXTURE_ADDRESS_MODE( 3, Clamp)
TEXTURE_ADDRESS_MODE( 4, Border)
TEXTURE_ADDRESS_MODE( 5, MirrorOnce)
#undef TEXTURE_ADDRESS_MODE
#endif // TEXTURE_ADDRESS_MODE

#ifdef COMPARISON_FUNCTION

COMPARISON_FUNCTION( 1, Never)
COMPARISON_FUNCTION( 2, Less)
COMPARISON_FUNCTION( 3, Equal)
COMPARISON_FUNCTION( 4, LessEqual)
COMPARISON_FUNCTION( 5, Greater)
COMPARISON_FUNCTION( 6, NotEqual)
COMPARISON_FUNCTION( 7, GreaterEqual)
COMPARISON_FUNCTION( 8, Always)
#undef COMPARISON_FUNCTION
#endif // COMPARISON_FUNCTION

#ifdef STATIC_BORDER_COLOR
STATIC_BORDER_COLOR( 0, TransparentBlack)
STATIC_BORDER_COLOR( 1, OpaqueBlack)
STATIC_BORDER_COLOR( 2, OpaqueWhite)
STATIC_BORDER_COLOR( 3, OpaqueBlackUint)
STATIC_BORDER_COLOR( 4, OpaqueWhiteUint)
#undef STATIC_BORDER_COLOR
#endif // STATIC_BORDER_COLOR

#ifdef DXIL_MODULE_FLAG

// Only save DXIL module flags which not map to feature flags here.
Expand Down
1 change: 1 addition & 0 deletions llvm/include/llvm/MC/DXContainerRootSignature.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ struct RootSignatureDesc {
uint32_t StaticSamplersOffset = 0u;
uint32_t NumStaticSamplers = 0u;
mcdxbc::RootParametersContainer ParametersContainer;
SmallVector<dxbc::RTS0::v1::StaticSampler> StaticSamplers;

void write(raw_ostream &OS) const;

Expand Down
5 changes: 5 additions & 0 deletions llvm/include/llvm/Object/DXContainer.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,9 +236,11 @@ class RootSignature {
uint32_t Flags;
ViewArray<dxbc::RTS0::v1::RootParameterHeader> ParametersHeaders;
StringRef PartData;
ViewArray<dxbc::RTS0::v1::StaticSampler> StaticSamplers;

using param_header_iterator =
ViewArray<dxbc::RTS0::v1::RootParameterHeader>::iterator;
using samplers_iterator = ViewArray<dxbc::RTS0::v1::StaticSampler>::iterator;

public:
RootSignature(StringRef PD) : PartData(PD) {}
Expand All @@ -253,6 +255,9 @@ class RootSignature {
llvm::iterator_range<param_header_iterator> param_headers() const {
return llvm::make_range(ParametersHeaders.begin(), ParametersHeaders.end());
}
llvm::iterator_range<samplers_iterator> samplers() const {
return llvm::make_range(StaticSamplers.begin(), StaticSamplers.end());
}
uint32_t getFlags() const { return Flags; }

llvm::Expected<RootParameterView>
Expand Down
28 changes: 28 additions & 0 deletions llvm/include/llvm/ObjectYAML/DXContainerYAML.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,24 @@ struct RootParameterYamlDesc {
}
};

struct StaticSamplerYamlDesc {
uint32_t Filter = llvm::to_underlying(dxbc::StaticSamplerFilter::ANISOTROPIC);
uint32_t AddressU = llvm::to_underlying(dxbc::TextureAddressMode::Wrap);
uint32_t AddressV = llvm::to_underlying(dxbc::TextureAddressMode::Wrap);
uint32_t AddressW = llvm::to_underlying(dxbc::TextureAddressMode::Wrap);
float MipLODBias = 0.f;
uint32_t MaxAnisotropy = 16u;
uint32_t ComparisonFunc =
llvm::to_underlying(dxbc::SamplersComparisonFunction::LessEqual);
uint32_t BorderColor =
llvm::to_underlying(dxbc::SamplersBorderColor::OpaqueWhite);
float MinLOD = 0.f;
float MaxLOD = std::numeric_limits<float>::max();
uint32_t ShaderRegister;
uint32_t RegisterSpace;
uint32_t ShaderVisibility;
};

struct RootSignatureYamlDesc {
RootSignatureYamlDesc() = default;

Expand All @@ -173,9 +191,14 @@ struct RootSignatureYamlDesc {
uint32_t StaticSamplersOffset;

RootParameterYamlDesc Parameters;
SmallVector<StaticSamplerYamlDesc> StaticSamplers;

uint32_t getEncodedFlags();

iterator_range<StaticSamplerYamlDesc *> samplers() {
return make_range(StaticSamplers.begin(), StaticSamplers.end());
}

static llvm::Expected<DXContainerYAML::RootSignatureYamlDesc>
create(const object::DirectX::RootSignature &Data);

Expand Down Expand Up @@ -288,6 +311,7 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::PSVInfo::MaskVector)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::SignatureParameter)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::RootParameterLocationYaml)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::DescriptorRangeYaml)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::StaticSamplerYamlDesc)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::SemanticKind)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ComponentType)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::InterpolationMode)
Expand Down Expand Up @@ -384,6 +408,10 @@ template <> struct MappingTraits<llvm::DXContainerYAML::DescriptorRangeYaml> {
static void mapping(IO &IO, llvm::DXContainerYAML::DescriptorRangeYaml &D);
};

template <> struct MappingTraits<llvm::DXContainerYAML::StaticSamplerYamlDesc> {
static void mapping(IO &IO, llvm::DXContainerYAML::StaticSamplerYamlDesc &S);
};

} // namespace yaml

} // namespace llvm
Expand Down
18 changes: 17 additions & 1 deletion llvm/lib/MC/DXContainerRootSignature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ static void rewriteOffsetToCurrentByte(raw_svector_ostream &Stream,
size_t RootSignatureDesc::getSize() const {
size_t Size =
sizeof(dxbc::RTS0::v1::RootSignatureHeader) +
ParametersContainer.size() * sizeof(dxbc::RTS0::v1::RootParameterHeader);
ParametersContainer.size() * sizeof(dxbc::RTS0::v1::RootParameterHeader) +
StaticSamplers.size() * sizeof(dxbc::RTS0::v1::StaticSampler);

for (const RootParameterInfo &I : ParametersContainer) {
switch (I.Header.ParameterType) {
Expand Down Expand Up @@ -141,6 +142,21 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
}
}
}
for (const auto &S : StaticSamplers) {
support::endian::write(BOS, S.Filter, llvm::endianness::little);
support::endian::write(BOS, S.AddressU, llvm::endianness::little);
support::endian::write(BOS, S.AddressV, llvm::endianness::little);
support::endian::write(BOS, S.AddressW, llvm::endianness::little);
support::endian::write(BOS, S.MipLODBias, llvm::endianness::little);
support::endian::write(BOS, S.MaxAnisotropy, llvm::endianness::little);
support::endian::write(BOS, S.ComparisonFunc, llvm::endianness::little);
support::endian::write(BOS, S.BorderColor, llvm::endianness::little);
support::endian::write(BOS, S.MinLOD, llvm::endianness::little);
support::endian::write(BOS, S.MaxLOD, llvm::endianness::little);
support::endian::write(BOS, S.ShaderRegister, llvm::endianness::little);
support::endian::write(BOS, S.RegisterSpace, llvm::endianness::little);
support::endian::write(BOS, S.ShaderVisibility, llvm::endianness::little);
}
assert(Storage.size() == getSize());
OS.write(Storage.data(), Storage.size());
}
5 changes: 5 additions & 0 deletions llvm/lib/Object/DXContainer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,11 @@ Error DirectX::RootSignature::parse() {
RootParametersOffset,
NumParameters * sizeof(dxbc::RTS0::v1::RootParameterHeader));

StaticSamplers.Stride = sizeof(dxbc::RTS0::v1::StaticSampler);
StaticSamplers.Data = PartData.substr(
StaticSamplersOffset,
NumStaticSamplers * sizeof(dxbc::RTS0::v1::StaticSampler));

return Error::success();
}

Expand Down
19 changes: 19 additions & 0 deletions llvm/lib/ObjectYAML/DXContainerEmitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,25 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
}
}

for (const auto &Param : P.RootSignature->samplers()) {
dxbc::RTS0::v1::StaticSampler NewSampler;
NewSampler.Filter = Param.Filter;
NewSampler.AddressU = Param.AddressU;
NewSampler.AddressV = Param.AddressV;
NewSampler.AddressW = Param.AddressW;
NewSampler.MipLODBias = Param.MipLODBias;
NewSampler.MaxAnisotropy = Param.MaxAnisotropy;
NewSampler.ComparisonFunc = Param.ComparisonFunc;
NewSampler.BorderColor = Param.BorderColor;
NewSampler.MinLOD = Param.MinLOD;
NewSampler.MaxLOD = Param.MaxLOD;
NewSampler.ShaderRegister = Param.ShaderRegister;
NewSampler.RegisterSpace = Param.RegisterSpace;
NewSampler.ShaderVisibility = Param.ShaderVisibility;

RS.StaticSamplers.push_back(NewSampler);
}

RS.write(OS);
break;
}
Expand Down
39 changes: 39 additions & 0 deletions llvm/lib/ObjectYAML/DXContainerYAML.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,26 @@ DXContainerYAML::RootSignatureYamlDesc::create(
}
}
}

for (const auto &S : Data.samplers()) {
StaticSamplerYamlDesc NewS;
NewS.Filter = S.Filter;
NewS.AddressU = S.AddressU;
NewS.AddressV = S.AddressV;
NewS.AddressW = S.AddressW;
NewS.MipLODBias = S.MipLODBias;
NewS.MaxAnisotropy = S.MaxAnisotropy;
NewS.ComparisonFunc = S.ComparisonFunc;
NewS.BorderColor = S.BorderColor;
NewS.MinLOD = S.MinLOD;
NewS.MaxLOD = S.MaxLOD;
NewS.ShaderRegister = S.ShaderRegister;
NewS.RegisterSpace = S.RegisterSpace;
NewS.ShaderVisibility = S.ShaderVisibility;

RootSigDesc.StaticSamplers.push_back(NewS);
}

#define ROOT_ELEMENT_FLAG(Num, Val) \
RootSigDesc.Val = \
(Flags & llvm::to_underlying(dxbc::RootElementFlag::Val)) > 0;
Expand Down Expand Up @@ -340,6 +360,7 @@ void MappingTraits<DXContainerYAML::RootSignatureYamlDesc>::mapping(
IO.mapRequired("NumStaticSamplers", S.NumStaticSamplers);
IO.mapRequired("StaticSamplersOffset", S.StaticSamplersOffset);
IO.mapRequired("Parameters", S.Parameters.Locations, S);
IO.mapOptional("Samplers", S.StaticSamplers);
#define ROOT_ELEMENT_FLAG(Num, Val) IO.mapOptional(#Val, S.Val, false);
#include "llvm/BinaryFormat/DXContainerConstants.def"
}
Expand Down Expand Up @@ -421,6 +442,24 @@ void MappingTraits<llvm::DXContainerYAML::RootDescriptorYaml>::mapping(
#include "llvm/BinaryFormat/DXContainerConstants.def"
}

void MappingTraits<llvm::DXContainerYAML::StaticSamplerYamlDesc>::mapping(
IO &IO, llvm::DXContainerYAML::StaticSamplerYamlDesc &S) {

IO.mapOptional("Filter", S.Filter);
IO.mapOptional("AddressU", S.AddressU);
IO.mapOptional("AddressV", S.AddressV);
IO.mapOptional("AddressW", S.AddressW);
IO.mapOptional("MipLODBias", S.MipLODBias);
IO.mapOptional("MaxAnisotropy", S.MaxAnisotropy);
IO.mapOptional("ComparisonFunc", S.ComparisonFunc);
IO.mapOptional("BorderColor", S.BorderColor);
IO.mapOptional("MinLOD", S.MinLOD);
IO.mapOptional("MaxLOD", S.MaxLOD);
IO.mapRequired("ShaderRegister", S.ShaderRegister);
IO.mapRequired("RegisterSpace", S.RegisterSpace);
IO.mapRequired("ShaderVisibility", S.ShaderVisibility);
}

void MappingTraits<DXContainerYAML::Part>::mapping(IO &IO,
DXContainerYAML::Part &P) {
IO.mapRequired("Name", P.Name);
Expand Down
Loading
Loading