|
@@ -27,6 +27,9 @@
|
|
#include "llvm/Support/FileSystem.h"
|
|
#include "llvm/Support/FileSystem.h"
|
|
#include "llvm/Support/MemoryBuffer.h"
|
|
#include "llvm/Support/MemoryBuffer.h"
|
|
#include "llvm/Support/Path.h"
|
|
#include "llvm/Support/Path.h"
|
|
|
|
+#include "version.inc" // HLSL Change
|
|
|
|
+#include "dxc/DXIL/DxilConstants.h" // HLSL Change
|
|
|
|
+#include "dxc/DXIL/DxilShaderModel.h" // HLSL Change
|
|
using namespace clang;
|
|
using namespace clang;
|
|
|
|
|
|
static bool MacroBodyEndsInBackslash(StringRef MacroBody) {
|
|
static bool MacroBodyEndsInBackslash(StringRef MacroBody) {
|
|
@@ -355,13 +358,41 @@ static void AddObjCXXARCLibstdcxxDefines(const LangOptions &LangOpts,
|
|
Builder.append(Result);
|
|
Builder.append(Result);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#define STRINGIFY_INNER(str) #str
|
|
|
|
+#define STRINGIFY(str) STRINGIFY_INNER(str)
|
|
|
|
+
|
|
static void InitializeStandardPredefinedMacros(const TargetInfo &TI,
|
|
static void InitializeStandardPredefinedMacros(const TargetInfo &TI,
|
|
const LangOptions &LangOpts,
|
|
const LangOptions &LangOpts,
|
|
const FrontendOptions &FEOpts,
|
|
const FrontendOptions &FEOpts,
|
|
MacroBuilder &Builder) {
|
|
MacroBuilder &Builder) {
|
|
#if 1 // HLSL Change Starts
|
|
#if 1 // HLSL Change Starts
|
|
- if (LangOpts.HLSL)
|
|
|
|
|
|
+ if (LangOpts.HLSL) {
|
|
Builder.defineMacro("__hlsl_dx_compiler");
|
|
Builder.defineMacro("__hlsl_dx_compiler");
|
|
|
|
+ // DXC Version information
|
|
|
|
+ Builder.defineMacro("__DXC_VERSION_MAJOR", STRINGIFY(RC_VERSION_FIELD_1));
|
|
|
|
+ Builder.defineMacro("__DXC_VERSION_MINOR", STRINGIFY(RC_VERSION_FIELD_2));
|
|
|
|
+ Builder.defineMacro("__DXC_VERSION_RELEASE", STRINGIFY(RC_VERSION_FIELD_3));
|
|
|
|
+ Builder.defineMacro("__DXC_VERSION_COMMITS", STRINGIFY(RC_VERSION_FIELD_4));
|
|
|
|
+ // HLSL Version
|
|
|
|
+ Builder.defineMacro("__HLSL_VERSION", Twine(LangOpts.HLSLVersion));
|
|
|
|
+ // Shader target information
|
|
|
|
+ // "enums" for shader stages
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_VERTEX", Twine((unsigned)hlsl::DXIL::ShaderKind::Vertex));
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_PIXEL", Twine((unsigned)hlsl::DXIL::ShaderKind::Pixel));
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_GEOMETRY",Twine((unsigned)hlsl::DXIL::ShaderKind::Geometry));
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_HULL", Twine((unsigned)hlsl::DXIL::ShaderKind::Hull));
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_DOMAIN", Twine((unsigned)hlsl::DXIL::ShaderKind::Domain));
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_COMPUTE", Twine((unsigned)hlsl::DXIL::ShaderKind::Compute));
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_AMPLIFICATION",Twine((unsigned)hlsl::DXIL::ShaderKind::Amplification));
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_MESH", Twine((unsigned)hlsl::DXIL::ShaderKind::Mesh));
|
|
|
|
+ Builder.defineMacro("__SHADER_STAGE_LIBRARY", Twine((unsigned)hlsl::DXIL::ShaderKind::Library));
|
|
|
|
+ const hlsl::ShaderModel *SM = hlsl::ShaderModel::GetByName(LangOpts.HLSLProfile.c_str());
|
|
|
|
+ // The current shader stage itself
|
|
|
|
+ Builder.defineMacro("__SHADER_TARGET_STAGE", Twine((unsigned)SM->GetKind()));
|
|
|
|
+ // Add target versions
|
|
|
|
+ Builder.defineMacro("__SHADER_TARGET_MAJOR", Twine(SM->GetMajor()));
|
|
|
|
+ Builder.defineMacro("__SHADER_TARGET_MINOR", Twine(SM->GetMinor()));
|
|
|
|
+ }
|
|
return;
|
|
return;
|
|
#else
|
|
#else
|
|
if (!LangOpts.MSVCCompat && !LangOpts.TraditionalCPP)
|
|
if (!LangOpts.MSVCCompat && !LangOpts.TraditionalCPP)
|