blob: 271042422bd23f10432d69b072b3ae52a57c10c9 [file] [log] [blame] [edit]
///////////////////////////////////////////////////////////////////////////////
// //
// DxilRootSignature.cpp //
// Copyright (C) Microsoft Corporation. All rights reserved. //
// This file is distributed under the University of Illinois Open Source //
// License. See LICENSE.TXT for details. //
// //
// Provides support for manipulating root signature structures. //
// //
///////////////////////////////////////////////////////////////////////////////
#pragma once
#include "dxc/DxilRootSignature/DxilRootSignature.h"
#include "dxc/Support/Global.h"
#include "dxc/Support/WinIncludes.h"
namespace hlsl {
DEFINE_ENUM_FLAG_OPERATORS(DxilRootSignatureFlags)
DEFINE_ENUM_FLAG_OPERATORS(DxilRootDescriptorFlags)
DEFINE_ENUM_FLAG_OPERATORS(DxilDescriptorRangeType)
DEFINE_ENUM_FLAG_OPERATORS(DxilDescriptorRangeFlags)
// Execute (error) and throw.
#define EAT(x) \
{ \
(x); \
throw ::hlsl::Exception(E_FAIL); \
}
namespace root_sig_helper {
// GetFlags/SetFlags overloads.
DxilRootDescriptorFlags GetFlags(const DxilRootDescriptor &);
void SetFlags(DxilRootDescriptor &, DxilRootDescriptorFlags);
DxilRootDescriptorFlags GetFlags(const DxilRootDescriptor1 &D);
void SetFlags(DxilRootDescriptor1 &D, DxilRootDescriptorFlags Flags);
void SetFlags(DxilContainerRootDescriptor1 &D, DxilRootDescriptorFlags Flags);
DxilDescriptorRangeFlags GetFlags(const DxilDescriptorRange &D);
void SetFlags(DxilDescriptorRange &, DxilDescriptorRangeFlags);
DxilDescriptorRangeFlags GetFlags(const DxilContainerDescriptorRange &D);
void SetFlags(DxilContainerDescriptorRange &, DxilDescriptorRangeFlags);
DxilDescriptorRangeFlags GetFlags(const DxilDescriptorRange1 &D);
void SetFlags(DxilDescriptorRange1 &D, DxilDescriptorRangeFlags Flags);
DxilDescriptorRangeFlags GetFlags(const DxilContainerDescriptorRange1 &D);
void SetFlags(DxilContainerDescriptorRange1 &D, DxilDescriptorRangeFlags Flags);
} // namespace root_sig_helper
} // namespace hlsl