blob: ba1fbfd1f8708b41f10828d760bd51e1824dfbcd [file] [log] [blame]
//===-------- HLSLRootSignatureDumpTest.cpp - RootSignature dump tests ----===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "llvm/Frontend/HLSL/HLSLRootSignature.h"
#include "gtest/gtest.h"
using namespace llvm::hlsl::rootsig;
namespace {
TEST(HLSLRootSignatureTest, DescriptorCBVClauseDump) {
DescriptorTableClause Clause;
Clause.Type = ClauseType::CBuffer;
Clause.Reg = {RegisterType::BReg, 0};
Clause.setDefaultFlags();
std::string Out;
llvm::raw_string_ostream OS(Out);
Clause.dump(OS);
OS.flush();
std::string Expected = "CBV(b0, numDescriptors = 1, space = 0, "
"offset = DescriptorTableOffsetAppend, "
"flags = DataStaticWhileSetAtExecute)";
EXPECT_EQ(Out, Expected);
}
TEST(HLSLRootSignatureTest, DescriptorSRVClauseDump) {
DescriptorTableClause Clause;
Clause.Type = ClauseType::SRV;
Clause.Reg = {RegisterType::TReg, 0};
Clause.NumDescriptors = 2;
Clause.Space = 42;
Clause.Offset = 3;
Clause.Flags = DescriptorRangeFlags::None;
std::string Out;
llvm::raw_string_ostream OS(Out);
Clause.dump(OS);
OS.flush();
std::string Expected =
"SRV(t0, numDescriptors = 2, space = 42, offset = 3, flags = None)";
EXPECT_EQ(Out, Expected);
}
TEST(HLSLRootSignatureTest, DescriptorUAVClauseDump) {
DescriptorTableClause Clause;
Clause.Type = ClauseType::UAV;
Clause.Reg = {RegisterType::UReg, 92374};
Clause.NumDescriptors = 3298;
Clause.Space = 932847;
Clause.Offset = 1;
Clause.Flags = DescriptorRangeFlags::ValidFlags;
std::string Out;
llvm::raw_string_ostream OS(Out);
Clause.dump(OS);
OS.flush();
std::string Expected =
"UAV(u92374, numDescriptors = 3298, space = 932847, offset = 1, flags = "
"DescriptorsVolatile | "
"DataVolatile | "
"DataStaticWhileSetAtExecute | "
"DataStatic | "
"DescriptorsStaticKeepingBufferBoundsChecks)";
EXPECT_EQ(Out, Expected);
}
TEST(HLSLRootSignatureTest, DescriptorSamplerClauseDump) {
DescriptorTableClause Clause;
Clause.Type = ClauseType::Sampler;
Clause.Reg = {RegisterType::SReg, 0};
Clause.NumDescriptors = 2;
Clause.Space = 42;
Clause.Offset = DescriptorTableOffsetAppend;
Clause.Flags = DescriptorRangeFlags::ValidSamplerFlags;
std::string Out;
llvm::raw_string_ostream OS(Out);
Clause.dump(OS);
OS.flush();
std::string Expected = "Sampler(s0, numDescriptors = 2, space = 42, offset = "
"DescriptorTableOffsetAppend, "
"flags = DescriptorsVolatile)";
EXPECT_EQ(Out, Expected);
}
TEST(HLSLRootSignatureTest, DescriptorTableDump) {
DescriptorTable Table;
Table.NumClauses = 4;
Table.Visibility = ShaderVisibility::Geometry;
std::string Out;
llvm::raw_string_ostream OS(Out);
Table.dump(OS);
OS.flush();
std::string Expected =
"DescriptorTable(numClauses = 4, visibility = Geometry)";
EXPECT_EQ(Out, Expected);
}
} // namespace