LLVM: include/llvm/BinaryFormat/DXContainer.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_BINARYFORMAT_DXCONTAINER_H

14#define LLVM_BINARYFORMAT_DXCONTAINER_H

15

23

24#include <stdint.h>

25

26namespace llvm {

27template struct EnumEntry;

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

44

46

49 "Shader kind out of expected range.");

51}

52

56

62

71

81

97

98

102

105 return StringRef(reinterpret_cast<const char *>(&Name[0]), 4);

106 }

107

108};

109

126

145

146static_assert(sizeof(ProgramHeader) == 24, "ProgramHeader Size incorrect!");

147

148#define CONTAINER_PART(Part) Part,

151#include "DXContainerConstants.def"

152};

153

154#define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) Val = 1ull << Num,

156#include "DXContainerConstants.def"

157};

158static_assert((uint64_t)FeatureFlags::NextUnusedBit <= 1ull << 63,

159 "Shader flag bits exceed enum size.");

160

161#define ROOT_SIGNATURE_FLAG(Num, Val) Val = Num,

163#include "DXContainerConstants.def"

164

166};

167

169

170#define ROOT_DESCRIPTOR_FLAG(Num, Enum, Flag) Enum = Num,

172#include "DXContainerConstants.def"

173

175};

176

178

179#define DESCRIPTOR_RANGE_FLAG(Num, Enum, Flag) Enum = Num,

181#include "DXContainerConstants.def"

182

184};

185

187

188#define STATIC_SAMPLER_FLAG(Num, Enum, Flag) Enum = Num,

190#include "DXContainerConstants.def"

191

193};

194

196

197#define ROOT_PARAMETER(Val, Enum) Enum = Val,

199#include "DXContainerConstants.def"

200};

201

203

205

207

208#define SHADER_VISIBILITY(Val, Enum) Enum = Val,

210#include "DXContainerConstants.def"

211};

212

214

216

217#define FILTER(Val, Enum) Enum = Val,

219#include "DXContainerConstants.def"

220};

221

223

225

226#define TEXTURE_ADDRESS_MODE(Val, Enum) Enum = Val,

228#include "DXContainerConstants.def"

229};

230

232

234

235#define COMPARISON_FUNC(Val, Enum) Enum = Val,

237#include "DXContainerConstants.def"

238};

239

241

243

244#define STATIC_BORDER_COLOR(Val, Enum) Enum = Val,

246#include "DXContainerConstants.def"

247};

248

250

252

254

256

258

260

269

283

295

309

319

335

341

350

352 switch (Stage) {

354 PS.swapBytes();

355 break;

357 VS.swapBytes();

358 break;

360 GS.swapBytes();

361 break;

363 HS.swapBytes();

364 break;

366 DS.swapBytes();

367 break;

369 MS.swapBytes();

370 break;

372 AS.swapBytes();

373 break;

374 default:

375 break;

376 }

377 }

378};

379

380static_assert(sizeof(PipelinePSVInfo) == 4 * sizeof(uint32_t),

381 "Pipeline-specific PSV info must fit in 16 bytes.");

382

384

385#define SEMANTIC_KIND(Val, Enum) Enum = Val,

387#include "DXContainerConstants.def"

388};

389

391

392#define COMPONENT_TYPE(Val, Enum) Enum = Val,

394#include "DXContainerConstants.def"

395};

396

398

399#define INTERPOLATION_MODE(Val, Enum) Enum = Val,

401#include "DXContainerConstants.def"

402};

403

405

406#define RESOURCE_TYPE(Val, Enum) Enum = Val,

408#include "DXContainerConstants.def"

409};

410

412

413#define RESOURCE_KIND(Val, Enum) Enum = Val,

415#include "DXContainerConstants.def"

416};

417

419

420#define RESOURCE_FLAG(Index, Enum) bool Enum = false;

424#include "llvm/BinaryFormat/DXContainerConstants.def"

425 };

426 union {

429 };

431};

432

447

461

486

487static_assert(sizeof(SignatureElement) == 4 * sizeof(uint32_t),

488 "PSV Signature elements must fit in 16 bytes.");

489

490}

491

493

498

510

511

515

516

519

523

529};

530

531}

532

562

578}

579

580#define COMPONENT_PRECISION(Val, Enum) Enum = Val,

582#include "DXContainerConstants.def"

583};

584

586

587#define D3D_SYSTEM_VALUE(Val, Enum) Enum = Val,

589#include "DXContainerConstants.def"

590};

591

593

594#define COMPONENT_TYPE(Val, Enum) Enum = Val,

596#include "DXContainerConstants.def"

597};

598

600

610

644

645static_assert(sizeof(ProgramSignatureElement) == 32,

646 "ProgramSignatureElement is misaligned");

647

680

695

704

705

706

718

730

748}

749

781

797}

798

799

805

806}

807}

808

809#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

#define LLVM_ABI_FOR_TEST

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

StringRef - Represent a constant reference to a string, i.e.

Definition DXContainer.h:433

Definition DXContainer.h:492

Definition DXContainer.h:533

Definition DXContainer.h:563

Definition DXContainer.h:383

SemanticKind

Definition DXContainer.h:386

ResourceType

Definition DXContainer.h:407

InterpolationMode

Definition DXContainer.h:400

LLVM_ABI ArrayRef< EnumEntry< ResourceKind > > getResourceKinds()

LLVM_ABI ArrayRef< EnumEntry< ComponentType > > getComponentTypes()

LLVM_ABI ArrayRef< EnumEntry< ResourceType > > getResourceTypes()

ResourceKind

Definition DXContainer.h:414

LLVM_ABI ArrayRef< EnumEntry< SemanticKind > > getSemanticKinds()

ComponentType

Definition DXContainer.h:393

LLVM_ABI ArrayRef< EnumEntry< InterpolationMode > > getInterpolationModes()

Definition DXContainer.h:649

Definition DXContainer.h:750

Definition DXContainer.h:782

Definition DXContainer.h:648

Definition DXContainer.h:43

LLVM_ABI ArrayRef< EnumEntry< ComparisonFunc > > getComparisonFuncs()

SigComponentType

Definition DXContainer.h:595

LLVM_ABI ArrayRef< EnumEntry< ShaderVisibility > > getShaderVisibility()

D3DSystemValue

Definition DXContainer.h:588

bool isValidShaderVisibility(uint32_t V)

StaticBorderColor

Definition DXContainer.h:245

LLVM_ABI PartType parsePartType(StringRef S)

ComparisonFunc

Definition DXContainer.h:236

RootParameterType

Definition DXContainer.h:198

bool isValidSamplerFilter(uint32_t V)

DescriptorRangeFlags

Definition DXContainer.h:180

bool isValidStaticSamplerFlags(uint32_t V)

LLVM_ABI ArrayRef< EnumEntry< RootFlags > > getRootFlags()

PartType

Definition DXContainer.h:149

@ Unknown

Definition DXContainer.h:150

LLVM_ABI ArrayRef< EnumEntry< RootParameterType > > getRootParameterTypes()

RootSignatureVersion

Definition DXContainer.h:800

@ V1_2

Definition DXContainer.h:803

@ V1_1

Definition DXContainer.h:802

@ V1_0

Definition DXContainer.h:801

bool isValidRootDesciptorFlags(uint32_t V)

RootDescriptorFlags

Definition DXContainer.h:171

SigMinPrecision

Definition DXContainer.h:581

Triple::EnvironmentType getShaderStage(uint32_t Kind)

Definition DXContainer.h:47

LLVM_ABI ArrayRef< EnumEntry< SigComponentType > > getSigComponentTypes()

LLVM_ABI ArrayRef< EnumEntry< SigMinPrecision > > getSigMinPrecisions()

LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()

LLVM_ABI ArrayRef< EnumEntry< DescriptorRangeFlags > > getDescriptorRangeFlags()

HashFlags

Definition DXContainer.h:57

@ IncludesSource

Definition DXContainer.h:59

@ None

Definition DXContainer.h:58

LLVM_ABI ArrayRef< EnumEntry< SamplerFilter > > getSamplerFilters()

TextureAddressMode

Definition DXContainer.h:227

LLVM_ABI ArrayRef< EnumEntry< D3DSystemValue > > getD3DSystemValues()

bool isValidDescriptorRangeFlags(uint32_t V)

bool isValidBorderColor(uint32_t V)

bool isValidComparisonFunc(uint32_t V)

LLVM_ABI_FOR_TEST bool isValidParameterType(uint32_t V)

ShaderVisibility

Definition DXContainer.h:209

LLVM_ABI ArrayRef< EnumEntry< StaticBorderColor > > getStaticBorderColors()

bool isValidAddress(uint32_t V)

LLVM_ABI ArrayRef< EnumEntry< TextureAddressMode > > getTextureAddressModes()

SamplerFilter

Definition DXContainer.h:218

StaticSamplerFlags

Definition DXContainer.h:189

FeatureFlags

Definition DXContainer.h:155

bool isValidRangeType(uint32_t V)

RootFlags

Definition DXContainer.h:162

LLVM_ABI ArrayRef< EnumEntry< StaticSamplerFlags > > getStaticSamplerFlags()

LLVM_ABI ArrayRef< EnumEntry< RootDescriptorFlags > > getRootDescriptorFlags()

void swapByteOrder(T &Value)

This is an optimization pass for GlobalISel generic memory operations.

@ LLVM_MARK_AS_BITMASK_ENUM

Definition DXContainer.h:336

uint32_t PayloadSizeInBytes

Definition DXContainer.h:337

void swapBytes()

Definition DXContainer.h:339

Definition DXContainer.h:72

void swapBytes()

Definition DXContainer.h:76

uint16_t Minor

Definition DXContainer.h:74

uint16_t Major

Definition DXContainer.h:73

Definition DXContainer.h:284

uint32_t InputControlPointCount

Definition DXContainer.h:285

uint32_t TessellatorDomain

Definition DXContainer.h:288

uint8_t OutputPositionPresent

Definition DXContainer.h:286

uint8_t Unused[3]

Definition DXContainer.h:287

void swapBytes()

Definition DXContainer.h:290

Definition DXContainer.h:296

uint8_t Unused[3]

Definition DXContainer.h:301

uint32_t InputPrimitive

Definition DXContainer.h:297

uint32_t OutputTopology

Definition DXContainer.h:298

uint8_t OutputPositionPresent

Definition DXContainer.h:300

uint32_t OutputStreamMask

Definition DXContainer.h:299

void swapBytes()

Definition DXContainer.h:303

Definition DXContainer.h:53

uint8_t Digest[16]

Definition DXContainer.h:54

Definition DXContainer.h:270

uint32_t TessellatorOutputPrimitive

Definition DXContainer.h:274

void swapBytes()

Definition DXContainer.h:276

uint32_t OutputControlPointCount

Definition DXContainer.h:272

uint32_t InputControlPointCount

Definition DXContainer.h:271

uint32_t TessellatorDomain

Definition DXContainer.h:273

Definition DXContainer.h:320

void swapBytes()

Definition DXContainer.h:327

uint32_t PayloadSizeInBytes

Definition DXContainer.h:323

uint16_t MaxOutputVertices

Definition DXContainer.h:324

uint16_t MaxOutputPrimitives

Definition DXContainer.h:325

uint32_t GroupSharedBytesDependentOnViewID

Definition DXContainer.h:322

uint32_t GroupSharedBytesUsed

Definition DXContainer.h:321

Definition DXContainer.h:423

Definition DXContainer.h:421

uint32_t Flags

Definition DXContainer.h:427

ResourceFlags()

Definition DXContainer.h:422

FlagsBits Bits

Definition DXContainer.h:428

bool operator==(const uint32_t RFlags) const

Definition DXContainer.h:430

Definition DXContainer.h:448

uint32_t UpperBound

Definition DXContainer.h:452

uint32_t Space

Definition DXContainer.h:450

ResourceType Type

Definition DXContainer.h:449

void swapBytes()

Definition DXContainer.h:454

uint32_t LowerBound

Definition DXContainer.h:451

Definition DXContainer.h:434

uint32_t MaximumWaveLaneCount

Definition DXContainer.h:437

PipelinePSVInfo StageInfo

Definition DXContainer.h:435

void swapBytes()

Definition DXContainer.h:439

void swapBytes(Triple::EnvironmentType Stage)

Definition DXContainer.h:445

uint32_t MinimumWaveLaneCount

Definition DXContainer.h:436

Definition DXContainer.h:462

SemanticKind Kind

Definition DXContainer.h:472

uint8_t Unused2

Definition DXContainer.h:478

uint8_t DynamicMask

Definition DXContainer.h:476

InterpolationMode Mode

Definition DXContainer.h:475

ComponentType Type

Definition DXContainer.h:474

uint8_t Rows

Definition DXContainer.h:466

uint32_t IndicesOffset

Definition DXContainer.h:464

void swapBytes()

Definition DXContainer.h:481

uint8_t Reserved

Definition DXContainer.h:479

uint8_t Stream

Definition DXContainer.h:477

uint8_t Allocated

Definition DXContainer.h:470

uint8_t Unused

Definition DXContainer.h:471

uint32_t NameOffset

Definition DXContainer.h:463

uint8_t StartRow

Definition DXContainer.h:467

uint8_t Cols

Definition DXContainer.h:468

uint8_t StartCol

Definition DXContainer.h:469

Definition DXContainer.h:494

uint8_t MeshOutputTopology

Definition DXContainer.h:496

uint8_t SigPrimVectors

Definition DXContainer.h:495

Definition DXContainer.h:506

GeometryExtraInfo GeomData

Definition DXContainer.h:509

uint8_t SigPatchOrPrimElements

Definition DXContainer.h:514

uint8_t UsesViewID

Definition DXContainer.h:508

uint8_t ShaderStage

Definition DXContainer.h:507

uint8_t SigOutputVectors[4]

Definition DXContainer.h:518

uint8_t SigInputElements

Definition DXContainer.h:512

void swapBytes(Triple::EnvironmentType Stage)

Definition DXContainer.h:524

uint8_t SigInputVectors

Definition DXContainer.h:517

void swapBytes()

Definition DXContainer.h:520

uint8_t SigOutputElements

Definition DXContainer.h:513

Definition DXContainer.h:550

void swapBytes()

Definition DXContainer.h:554

ResourceFlags Flags

Definition DXContainer.h:552

ResourceKind Kind

Definition DXContainer.h:551

Definition DXContainer.h:534

void swapBytes(Triple::EnvironmentType Stage)

Definition DXContainer.h:545

void swapBytes()

Definition DXContainer.h:539

uint32_t NumThreadsY

Definition DXContainer.h:536

uint32_t NumThreadsZ

Definition DXContainer.h:537

uint32_t NumThreadsX

Definition DXContainer.h:535

Definition DXContainer.h:564

void swapBytes()

Definition DXContainer.h:567

uint32_t EntryNameOffset

Definition DXContainer.h:565

void swapBytes(Triple::EnvironmentType Stage)

Definition DXContainer.h:572

Definition DXContainer.h:310

void swapBytes()

Definition DXContainer.h:315

uint8_t Unused[2]

Definition DXContainer.h:313

uint8_t SampleFrequency

Definition DXContainer.h:312

uint8_t DepthOutput

Definition DXContainer.h:311

Definition DXContainer.h:611

SigMinPrecision MinPrecision

Definition DXContainer.h:630

uint32_t NameOffset

Definition DXContainer.h:614

uint32_t Index

Definition DXContainer.h:616

uint8_t ExclusiveMask

Definition DXContainer.h:627

uint8_t Mask

Definition DXContainer.h:620

uint32_t Stream

Definition DXContainer.h:612

uint16_t Unused

Definition DXContainer.h:629

D3DSystemValue SystemValue

Definition DXContainer.h:617

void swapBytes()

Definition DXContainer.h:632

SigComponentType CompType

Definition DXContainer.h:618

uint32_t Register

Definition DXContainer.h:619

Definition DXContainer.h:681

uint32_t BaseShaderRegister

Definition DXContainer.h:684

void swapBytes()

Definition DXContainer.h:687

uint32_t NumDescriptors

Definition DXContainer.h:683

uint32_t RangeType

Definition DXContainer.h:682

uint32_t OffsetInDescriptorsFromTableStart

Definition DXContainer.h:686

uint32_t RegisterSpace

Definition DXContainer.h:685

Definition DXContainer.h:707

uint32_t Num32BitValues

Definition DXContainer.h:710

void swapBytes()

Definition DXContainer.h:712

uint32_t ShaderRegister

Definition DXContainer.h:708

uint32_t RegisterSpace

Definition DXContainer.h:709

Definition DXContainer.h:696

uint32_t ShaderRegister

Definition DXContainer.h:697

uint32_t RegisterSpace

Definition DXContainer.h:698

void swapBytes()

Definition DXContainer.h:699

Definition DXContainer.h:650

uint32_t AddressU

Definition DXContainer.h:652

uint32_t AddressV

Definition DXContainer.h:653

uint32_t ShaderRegister

Definition DXContainer.h:661

uint32_t MaxAnisotropy

Definition DXContainer.h:656

float MaxLOD

Definition DXContainer.h:660

uint32_t ComparisonFunc

Definition DXContainer.h:657

void swapBytes()

Definition DXContainer.h:664

uint32_t BorderColor

Definition DXContainer.h:658

uint32_t ShaderVisibility

Definition DXContainer.h:663

uint32_t AddressW

Definition DXContainer.h:654

float MipLODBias

Definition DXContainer.h:655

uint32_t Filter

Definition DXContainer.h:651

float MinLOD

Definition DXContainer.h:659

uint32_t RegisterSpace

Definition DXContainer.h:662

Definition DXContainer.h:764

uint32_t RangeType

Definition DXContainer.h:765

uint32_t NumDescriptors

Definition DXContainer.h:766

void swapBytes()

Definition DXContainer.h:771

uint32_t OffsetInDescriptorsFromTableStart

Definition DXContainer.h:770

uint32_t RegisterSpace

Definition DXContainer.h:768

uint32_t Flags

Definition DXContainer.h:769

uint32_t BaseShaderRegister

Definition DXContainer.h:767

void swapBytes()

Definition DXContainer.h:758

uint32_t Flags

Definition DXContainer.h:752

RootDescriptor(v1::RootDescriptor &Base)

Definition DXContainer.h:755

StaticSampler(v1::StaticSampler &Base)

Definition DXContainer.h:787

uint32_t Flags

Definition DXContainer.h:784

void swapBytes()

Definition DXContainer.h:790

Definition DXContainer.h:63

uint8_t Digest[16]

Definition DXContainer.h:65

void swapBytes()

Definition DXContainer.h:69

uint32_t Flags

Definition DXContainer.h:64

LLVM_ABI bool isPopulated()

Definition DXContainer.h:261

void swapBytes()

Definition DXContainer.h:265

uint8_t OutputPositionPresent

Definition DXContainer.h:262

uint8_t Unused[3]

Definition DXContainer.h:263

Definition DXContainer.h:342

MeshPSVInfo MS

Definition DXContainer.h:348

void swapBytes(Triple::EnvironmentType Stage)

Definition DXContainer.h:351

VertexPSVInfo VS

Definition DXContainer.h:343

AmplificationPSVInfo AS

Definition DXContainer.h:349

GeometryPSVInfo GS

Definition DXContainer.h:346

HullPSVInfo HS

Definition DXContainer.h:344

PixelPSVInfo PS

Definition DXContainer.h:347

DomainPSVInfo DS

Definition DXContainer.h:345