Skip to content

[DirectX] Replace ResourceFlag enum with struct fields #106617

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
20 changes: 13 additions & 7 deletions llvm/include/llvm/BinaryFormat/DXContainer.h
Original file line number Diff line number Diff line change
Expand Up @@ -313,13 +313,19 @@ enum class ResourceKind : uint32_t {

ArrayRef<EnumEntry<ResourceKind>> getResourceKinds();

#define RESOURCE_FLAG(Val, Enum) Enum = Val,
enum class ResourceFlag : uint32_t {
#include "DXContainerConstants.def"
#define RESOURCE_FLAG(Index, Enum) bool Enum = false;
struct ResourceFlags {
ResourceFlags() {};
struct FlagsBits {
#include "llvm/BinaryFormat/DXContainerConstants.def"
};
union {
uint32_t Flags;
FlagsBits Bits;
};
bool operator==(const uint32_t RFlags) const { return Flags == RFlags; }
};

ArrayRef<EnumEntry<ResourceFlag>> getResourceFlags();

namespace v0 {
struct RuntimeInfo {
PipelinePSVInfo StageInfo;
Expand Down Expand Up @@ -439,12 +445,12 @@ struct RuntimeInfo : public v1::RuntimeInfo {

struct ResourceBindInfo : public v0::ResourceBindInfo {
ResourceKind Kind;
uint32_t Flags;
ResourceFlags Flags;

void swapBytes() {
v0::ResourceBindInfo::swapBytes();
sys::swapByteOrder(Kind);
sys::swapByteOrder(Flags);
sys::swapByteOrder(Flags.Flags);
}
};

Expand Down
3 changes: 1 addition & 2 deletions llvm/include/llvm/BinaryFormat/DXContainerConstants.def
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,7 @@ RESOURCE_KIND(18, FeedbackTexture2DArray)
#endif // RESOURCE_KIND

#ifdef RESOURCE_FLAG
RESOURCE_FLAG(0, None)
RESOURCE_FLAG(1, UsedByAtomic64)
RESOURCE_FLAG(0, UsedByAtomic64)

#undef RESOURCE_FLAG
#endif // RESOURCE_FLAG
Expand Down
6 changes: 5 additions & 1 deletion llvm/include/llvm/ObjectYAML/DXContainerYAML.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ struct ShaderHash {
std::vector<llvm::yaml::Hex8> Digest;
};

using ResourceFlags = dxbc::PSV::ResourceFlags;
using ResourceBindInfo = dxbc::PSV::v2::ResourceBindInfo;

struct SignatureElement {
Expand Down Expand Up @@ -178,7 +179,6 @@ LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ComponentType)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::InterpolationMode)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ResourceType)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ResourceKind)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ResourceFlag)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::D3DSystemValue)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::SigComponentType)
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::SigMinPrecision)
Expand Down Expand Up @@ -221,6 +221,10 @@ template <> struct MappingTraits<DXContainerYAML::Object> {
static void mapping(IO &IO, DXContainerYAML::Object &Obj);
};

template <> struct MappingTraits<DXContainerYAML::ResourceFlags> {
static void mapping(IO &IO, DXContainerYAML::ResourceFlags &Flags);
};

template <> struct MappingTraits<DXContainerYAML::ResourceBindInfo> {
static void mapping(IO &IO, DXContainerYAML::ResourceBindInfo &Res);
};
Expand Down
10 changes: 0 additions & 10 deletions llvm/lib/BinaryFormat/DXContainer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,3 @@ static const EnumEntry<PSV::ResourceKind> ResourceKindNames[] = {
ArrayRef<EnumEntry<PSV::ResourceKind>> PSV::getResourceKinds() {
return ArrayRef(ResourceKindNames);
}

#define RESOURCE_FLAG(Val, Enum) {#Enum, PSV::ResourceFlag::Enum},

static const EnumEntry<PSV::ResourceFlag> ResourceFlagNames[] = {
#include "llvm/BinaryFormat/DXContainerConstants.def"
};

ArrayRef<EnumEntry<PSV::ResourceFlag>> PSV::getResourceFlags() {
return ArrayRef(ResourceFlagNames);
}
12 changes: 6 additions & 6 deletions llvm/lib/ObjectYAML/DXContainerYAML.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,12 @@ void MappingTraits<DXContainerYAML::Object>::mapping(
IO.mapRequired("Parts", Obj.Parts);
}

void MappingTraits<DXContainerYAML::ResourceFlags>::mapping(
IO &IO, DXContainerYAML::ResourceFlags &Flags) {
#define RESOURCE_FLAG(FlagIndex, Enum) IO.mapRequired(#Enum, Flags.Bits.Enum);
#include "llvm/BinaryFormat/DXContainerConstants.def"
}

void MappingTraits<DXContainerYAML::ResourceBindInfo>::mapping(
IO &IO, DXContainerYAML::ResourceBindInfo &Res) {
IO.mapRequired("Type", Res.Type);
Expand Down Expand Up @@ -266,12 +272,6 @@ void ScalarEnumerationTraits<dxbc::PSV::ResourceKind>::enumeration(
IO.enumCase(Value, E.Name.str().c_str(), E.Value);
}

void ScalarEnumerationTraits<dxbc::PSV::ResourceFlag>::enumeration(
IO &IO, dxbc::PSV::ResourceFlag &Value) {
for (const auto &E : dxbc::PSV::getResourceFlags())
IO.enumCase(Value, E.Name.str().c_str(), E.Value);
}

void ScalarEnumerationTraits<dxbc::D3DSystemValue>::enumeration(
IO &IO, dxbc::D3DSystemValue &Value) {
for (const auto &E : dxbc::getD3DSystemValues())
Expand Down
3 changes: 2 additions & 1 deletion llvm/test/ObjectYAML/DXContainer/DomainMaskVectors.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ Parts:
LowerBound: 0
UpperBound: 0
Kind: CBuffer
Flags: 0
Flags:
UsedByAtomic64: true
SigInputElements:
- Name: AAA_HSFoo
Indices: [ 0 ]
Expand Down
12 changes: 8 additions & 4 deletions llvm/test/ObjectYAML/DXContainer/PSVv2-amplification.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,15 @@ Parts:
LowerBound: 3
UpperBound: 4
Kind: TextureCube
Flags: 0
Flags:
UsedByAtomic64: false
- Type: Invalid
Space: 32768
LowerBound: 8388608
UpperBound: 2147483648
Kind: Invalid
Flags: 0
Flags:
UsedByAtomic64: false
SigInputElements: []
SigOutputElements: []
SigPatchOrPrimElements: []
Expand Down Expand Up @@ -77,13 +79,15 @@ Parts:
# CHECK-NEXT: LowerBound: 3
# CHECK-NEXT: UpperBound: 4
# CHECK-NEXT: Kind: TextureCube
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: - Type: Invalid
# CHECK-NEXT: Space: 32768
# CHECK-NEXT: LowerBound: 8388608
# CHECK-NEXT: UpperBound: 2147483648
# CHECK-NEXT: Kind: Invalid
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: SigInputElements: []
# CHECK-NEXT: SigOutputElements: []
# CHECK-NEXT: SigPatchOrPrimElements: []
Expand Down
12 changes: 8 additions & 4 deletions llvm/test/ObjectYAML/DXContainer/PSVv2-compute.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,15 @@ Parts:
LowerBound: 3
UpperBound: 4
Kind: TextureCube
Flags: 0
Flags:
UsedByAtomic64: false
- Type: Invalid
Space: 32768
LowerBound: 8388608
UpperBound: 2147483648
Kind: Invalid
Flags: 0
Flags:
UsedByAtomic64: false
SigInputElements: []
SigOutputElements: []
SigPatchOrPrimElements: []
Expand Down Expand Up @@ -75,13 +77,15 @@ Parts:
# CHECK-NEXT: LowerBound: 3
# CHECK-NEXT: UpperBound: 4
# CHECK-NEXT: Kind: TextureCube
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: - Type: Invalid
# CHECK-NEXT: Space: 32768
# CHECK-NEXT: LowerBound: 8388608
# CHECK-NEXT: UpperBound: 2147483648
# CHECK-NEXT: Kind: Invalid
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: SigInputElements: []
# CHECK-NEXT: SigOutputElements: []
# CHECK-NEXT: SigPatchOrPrimElements: []
Expand Down
12 changes: 8 additions & 4 deletions llvm/test/ObjectYAML/DXContainer/PSVv2-domain.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ Parts:
LowerBound: 3
UpperBound: 4
Kind: TextureCube
Flags: 0
Flags:
UsedByAtomic64: false
- Type: Invalid
Space: 32768
LowerBound: 8388608
UpperBound: 2147483648
Kind: Invalid
Flags: 0
Flags:
UsedByAtomic64: false
SigInputElements: []
SigOutputElements: []
SigPatchOrPrimElements: []
Expand Down Expand Up @@ -84,13 +86,15 @@ Parts:
# CHECK-NEXT: LowerBound: 3
# CHECK-NEXT: UpperBound: 4
# CHECK-NEXT: Kind: TextureCube
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: - Type: Invalid
# CHECK-NEXT: Space: 32768
# CHECK-NEXT: LowerBound: 8388608
# CHECK-NEXT: UpperBound: 2147483648
# CHECK-NEXT: Kind: Invalid
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: SigInputElements: []
# CHECK-NEXT: SigOutputElements: []
# CHECK-NEXT: SigPatchOrPrimElements: []
Expand Down
12 changes: 8 additions & 4 deletions llvm/test/ObjectYAML/DXContainer/PSVv2-geometry.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,15 @@ Parts:
LowerBound: 3
UpperBound: 4
Kind: TextureCube
Flags: 0
Flags:
UsedByAtomic64: false
- Type: Invalid
Space: 32768
LowerBound: 8388608
UpperBound: 2147483648
Kind: Invalid
Flags: 0
Flags:
UsedByAtomic64: false
SigInputElements: []
SigOutputElements: []
SigPatchOrPrimElements: []
Expand Down Expand Up @@ -85,13 +87,15 @@ Parts:
# CHECK-NEXT: LowerBound: 3
# CHECK-NEXT: UpperBound: 4
# CHECK-NEXT: Kind: TextureCube
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: - Type: Invalid
# CHECK-NEXT: Space: 32768
# CHECK-NEXT: LowerBound: 8388608
# CHECK-NEXT: UpperBound: 2147483648
# CHECK-NEXT: Kind: Invalid
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: SigInputElements: []
# CHECK-NEXT: SigOutputElements: []
# CHECK-NEXT: SigPatchOrPrimElements: []
Expand Down
12 changes: 8 additions & 4 deletions llvm/test/ObjectYAML/DXContainer/PSVv2-hull.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,15 @@ Parts:
LowerBound: 3
UpperBound: 4
Kind: TextureCube
Flags: 0
Flags:
UsedByAtomic64: false
- Type: Invalid
Space: 32768
LowerBound: 8388608
UpperBound: 2147483648
Kind: Invalid
Flags: 0
Flags:
UsedByAtomic64: false
SigInputElements: []
SigOutputElements: []
SigPatchOrPrimElements: []
Expand Down Expand Up @@ -86,13 +88,15 @@ Parts:
# CHECK-NEXT: LowerBound: 3
# CHECK-NEXT: UpperBound: 4
# CHECK-NEXT: Kind: TextureCube
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: - Type: Invalid
# CHECK-NEXT: Space: 32768
# CHECK-NEXT: LowerBound: 8388608
# CHECK-NEXT: UpperBound: 2147483648
# CHECK-NEXT: Kind: Invalid
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: SigInputElements: []
# CHECK-NEXT: SigOutputElements: []
# CHECK-NEXT: SigPatchOrPrimElements: []
Expand Down
12 changes: 8 additions & 4 deletions llvm/test/ObjectYAML/DXContainer/PSVv2-mesh.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,15 @@ Parts:
LowerBound: 3
UpperBound: 4
Kind: TextureCube
Flags: 0
Flags:
UsedByAtomic64: false
- Type: Invalid
Space: 32768
LowerBound: 8388608
UpperBound: 2147483648
Kind: Invalid
Flags: 0
Flags:
UsedByAtomic64: false
SigInputElements: []
SigOutputElements: []
SigPatchOrPrimElements: []
Expand Down Expand Up @@ -89,13 +91,15 @@ Parts:
# CHECK-NEXT: LowerBound: 3
# CHECK-NEXT: UpperBound: 4
# CHECK-NEXT: Kind: TextureCube
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: - Type: Invalid
# CHECK-NEXT: Space: 32768
# CHECK-NEXT: LowerBound: 8388608
# CHECK-NEXT: UpperBound: 2147483648
# CHECK-NEXT: Kind: Invalid
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: SigInputElements: []
# CHECK-NEXT: SigOutputElements: []
# CHECK-NEXT: SigPatchOrPrimElements: []
Expand Down
12 changes: 8 additions & 4 deletions llvm/test/ObjectYAML/DXContainer/PSVv2-pixel.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,15 @@ Parts:
LowerBound: 3
UpperBound: 4
Kind: TextureCube
Flags: 0
Flags:
UsedByAtomic64: false
- Type: Invalid
Space: 32768
LowerBound: 8388608
UpperBound: 2147483648
Kind: Invalid
Flags: 0
Flags:
UsedByAtomic64: false
SigInputElements: []
SigOutputElements: []
SigPatchOrPrimElements: []
Expand Down Expand Up @@ -79,13 +81,15 @@ Parts:
# CHECK-NEXT: LowerBound: 3
# CHECK-NEXT: UpperBound: 4
# CHECK-NEXT: Kind: TextureCube
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: - Type: Invalid
# CHECK-NEXT: Space: 32768
# CHECK-NEXT: LowerBound: 8388608
# CHECK-NEXT: UpperBound: 2147483648
# CHECK-NEXT: Kind: Invalid
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: Flags:
# CHECK-NEXT: UsedByAtomic64: false
# CHECK-NEXT: SigInputElements: []
# CHECK-NEXT: SigOutputElements: []
# CHECK-NEXT: SigPatchOrPrimElements: []
Expand Down
Loading
Loading