78 строки
2.3 KiB
C++
78 строки
2.3 KiB
C++
//===------- SPIRVOptions.h -------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file outlines the command-line options used by SPIR-V CodeGen.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_SPIRV_OPTIONS_H
|
|
#define LLVM_SPIRV_OPTIONS_H
|
|
|
|
#ifdef ENABLE_SPIRV_CODEGEN
|
|
|
|
#include "llvm/ADT/ArrayRef.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/Option/ArgList.h"
|
|
|
|
namespace clang {
|
|
namespace spirv {
|
|
|
|
enum class SpirvLayoutRule {
|
|
Void,
|
|
GLSLStd140,
|
|
GLSLStd430,
|
|
RelaxedGLSLStd140, // std140 with relaxed vector layout
|
|
RelaxedGLSLStd430, // std430 with relaxed vector layout
|
|
FxcCTBuffer, // fxc.exe layout rule for cbuffer/tbuffer
|
|
FxcSBuffer, // fxc.exe layout rule for structured buffers
|
|
Scalar, // VK_EXT_scalar_block_layout
|
|
Max, // This is an invalid layout rule
|
|
};
|
|
|
|
struct SpirvCodeGenOptions {
|
|
/// Disable legalization and optimization and emit raw SPIR-V
|
|
bool codeGenHighLevel;
|
|
bool debugInfoFile;
|
|
bool debugInfoLine;
|
|
bool debugInfoSource;
|
|
bool debugInfoTool;
|
|
bool defaultRowMajor;
|
|
bool disableValidation;
|
|
bool enable16BitTypes;
|
|
bool enableReflect;
|
|
bool invertY; // Additive inverse
|
|
bool invertW; // Multiplicative inverse
|
|
bool noWarnEmulatedFeatures;
|
|
bool noWarnIgnoredFeatures;
|
|
bool useDxLayout;
|
|
bool useGlLayout;
|
|
bool useScalarLayout;
|
|
SpirvLayoutRule cBufferLayoutRule;
|
|
SpirvLayoutRule sBufferLayoutRule;
|
|
SpirvLayoutRule tBufferLayoutRule;
|
|
llvm::StringRef stageIoOrder;
|
|
llvm::StringRef targetEnv;
|
|
llvm::SmallVector<int32_t, 4> bShift;
|
|
llvm::SmallVector<int32_t, 4> sShift;
|
|
llvm::SmallVector<int32_t, 4> tShift;
|
|
llvm::SmallVector<int32_t, 4> uShift;
|
|
llvm::SmallVector<llvm::StringRef, 4> allowedExtensions;
|
|
llvm::SmallVector<llvm::StringRef, 4> optConfig;
|
|
std::vector<std::string> bindRegister;
|
|
|
|
// String representation of all command line options.
|
|
std::string clOptions;
|
|
};
|
|
|
|
} // namespace spirv
|
|
} // namespace clang
|
|
|
|
#endif // ENABLE_SPIRV_CODEGEN
|
|
#endif // LLVM_SPIRV_OPTIONS_H
|