Skip to content

Commit 85f3432

Browse files
authored
Fixes non-SPIR-V build, broken by PR microsoft#7163 ([SPIRV] Implements vk::BufferPointer proposal) (microsoft#7306)
#ifdef ENABLE_SPIRV_CODEGEN was omitted in several places.
1 parent c9170e5 commit 85f3432

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

include/dxc/dxcapi.internal.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,12 @@ enum LEGAL_INTRINSIC_COMPTYPES {
132132

133133
LICOMPTYPE_HIT_OBJECT = 51,
134134

135+
#ifdef ENABLE_SPIRV_CODEGEN
135136
LICOMPTYPE_VK_BUFFER_POINTER = 52,
136-
137137
LICOMPTYPE_COUNT = 53
138+
#else
139+
LICOMPTYPE_COUNT = 52
140+
#endif
138141
};
139142

140143
static const BYTE IA_SPECIAL_BASE = 0xf0;

tools/clang/lib/Sema/SemaHLSL.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,8 +1237,10 @@ static const ArBasicKind g_AnyOutputRecordCT[] = {
12371237
static const ArBasicKind g_DxHitObjectCT[] = {AR_OBJECT_HIT_OBJECT,
12381238
AR_BASIC_UNKNOWN};
12391239

1240+
#ifdef ENABLE_SPIRV_CODEGEN
12401241
static const ArBasicKind g_VKBufferPointerCT[] = {AR_OBJECT_VK_BUFFER_POINTER,
12411242
AR_BASIC_UNKNOWN};
1243+
#endif
12421244

12431245
// Basic kinds, indexed by a LEGAL_INTRINSIC_COMPTYPES value.
12441246
const ArBasicKind *g_LegalIntrinsicCompTypes[] = {
@@ -1295,7 +1297,9 @@ const ArBasicKind *g_LegalIntrinsicCompTypes[] = {
12951297
g_GroupNodeOutputRecordsCT, // LICOMPTYPE_GROUP_NODE_OUTPUT_RECORDS
12961298
g_ThreadNodeOutputRecordsCT, // LICOMPTYPE_THREAD_NODE_OUTPUT_RECORDS
12971299
g_DxHitObjectCT, // LICOMPTYPE_HIT_OBJECT
1298-
g_VKBufferPointerCT, // LICOMPTYPE_VK_BUFFER_POINTER
1300+
#ifdef ENABLE_SPIRV_CODEGEN
1301+
g_VKBufferPointerCT, // LICOMPTYPE_VK_BUFFER_POINTER
1302+
#endif
12991303
};
13001304
static_assert(
13011305
ARRAYSIZE(g_LegalIntrinsicCompTypes) == LICOMPTYPE_COUNT,
@@ -3587,6 +3591,7 @@ class HLSLExternalSource : public ExternalSemaSource {
35873591
case LICOMPTYPE_HIT_OBJECT:
35883592
paramTypes.push_back(GetBasicKindType(AR_OBJECT_HIT_OBJECT));
35893593
break;
3594+
#ifdef ENABLE_SPIRV_CODEGEN
35903595
case LICOMPTYPE_VK_BUFFER_POINTER: {
35913596
const ArBasicKind *match =
35923597
std::find(g_ArBasicKindsAsTypes,
@@ -3600,6 +3605,7 @@ class HLSLExternalSource : public ExternalSemaSource {
36003605
m_sema->getASTContext().getTypeDeclType(m_objectTypeDecls[index]));
36013606
break;
36023607
}
3608+
#endif
36033609
default:
36043610
DXASSERT(false, "Argument type of intrinsic function is not "
36053611
"supported");
@@ -4856,7 +4862,10 @@ class HLSLExternalSource : public ExternalSemaSource {
48564862
case AR_OBJECT_EMPTY_NODE_OUTPUT_ARRAY:
48574863
case AR_OBJECT_THREAD_NODE_OUTPUT_RECORDS:
48584864
case AR_OBJECT_GROUP_NODE_OUTPUT_RECORDS:
4859-
case AR_OBJECT_VK_BUFFER_POINTER: {
4865+
#ifdef ENABLE_SPIRV_CODEGEN
4866+
case AR_OBJECT_VK_BUFFER_POINTER:
4867+
#endif
4868+
{
48604869
const ArBasicKind *match = std::find(
48614870
g_ArBasicKindsAsTypes,
48624871
&g_ArBasicKindsAsTypes[_countof(g_ArBasicKindsAsTypes)], kind);
@@ -5372,8 +5381,10 @@ class HLSLExternalSource : public ExternalSemaSource {
53725381
<< type << GetMatrixOrVectorElementType(type);
53735382
}
53745383
return valid;
5384+
#ifdef ENABLE_SPIRV_CODEGEN
53755385
} else if (hlsl::IsVKBufferPointerType(qt)) {
53765386
return true;
5387+
#endif
53775388
} else if (qt->isStructureOrClassType()) {
53785389
const RecordType *recordType = qt->getAs<RecordType>();
53795390
objectKind = ClassifyRecordType(recordType);
@@ -9751,10 +9762,12 @@ bool HLSLExternalSource::CanConvert(SourceLocation loc, Expr *sourceExpr,
97519762
return false;
97529763
}
97539764

9765+
#ifdef ENABLE_SPIRV_CODEGEN
97549766
// Cast vk::BufferPointer to pointer address.
97559767
if (SourceInfo.EltKind == AR_OBJECT_VK_BUFFER_POINTER) {
97569768
return TargetInfo.EltKind == AR_BASIC_UINT64;
97579769
}
9770+
#endif
97589771

97599772
// Cast cbuffer to its result value.
97609773
if ((SourceInfo.EltKind == AR_OBJECT_CONSTANT_BUFFER ||
@@ -11604,6 +11617,7 @@ static bool CheckBarrierCall(Sema &S, FunctionDecl *FD, CallExpr *CE) {
1160411617
return false;
1160511618
}
1160611619

11620+
#ifdef ENABLE_SPIRV_CODEGEN
1160711621
static bool CheckVKBufferPointerCast(Sema &S, FunctionDecl *FD, CallExpr *CE,
1160811622
bool isStatic) {
1160911623
const Expr *argExpr = CE->getArg(0);
@@ -11627,6 +11641,7 @@ static bool CheckVKBufferPointerCast(Sema &S, FunctionDecl *FD, CallExpr *CE,
1162711641

1162811642
return false;
1162911643
}
11644+
#endif
1163011645

1163111646
// Check HLSL call constraints, not fatal to creating the AST.
1163211647
void Sema::CheckHLSLFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall,
@@ -11646,12 +11661,14 @@ void Sema::CheckHLSLFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall,
1164611661
case hlsl::IntrinsicOp::IOP_Barrier:
1164711662
CheckBarrierCall(*this, FDecl, TheCall);
1164811663
break;
11664+
#ifdef ENABLE_SPIRV_CODEGEN
1164911665
case hlsl::IntrinsicOp::IOP_Vkreinterpret_pointer_cast:
1165011666
CheckVKBufferPointerCast(*this, FDecl, TheCall, false);
1165111667
break;
1165211668
case hlsl::IntrinsicOp::IOP_Vkstatic_pointer_cast:
1165311669
CheckVKBufferPointerCast(*this, FDecl, TheCall, true);
1165411670
break;
11671+
#endif
1165511672
default:
1165611673
break;
1165711674
}

0 commit comments

Comments
 (0)