@@ -206,6 +206,8 @@ enum ArBasicKind {
206206 AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY,
207207 AR_OBJECT_VK_SAMPLED_TEXTURE2DMS,
208208 AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY,
209+ AR_OBJECT_VK_SAMPLED_TEXTURECUBE,
210+ AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY,
209211#endif // ENABLE_SPIRV_CODEGEN
210212 // SPIRV change ends
211213
@@ -572,6 +574,8 @@ const UINT g_uBasicKindProps[] = {
572574 BPROP_OBJECT | BPROP_RBUFFER, // AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY
573575 BPROP_OBJECT | BPROP_RBUFFER, // AR_OBJECT_VK_SAMPLED_TEXTURE2DMS
574576 BPROP_OBJECT | BPROP_RBUFFER, // AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY
577+ BPROP_OBJECT | BPROP_RBUFFER, // AR_OBJECT_VK_SAMPLED_TEXTURECUBE
578+ BPROP_OBJECT | BPROP_RBUFFER, // AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY
575579#endif // ENABLE_SPIRV_CODEGEN
576580 // SPIRV change ends
577581
@@ -1292,6 +1296,10 @@ static const ArBasicKind g_VKSampledTexture2DMSCT[] = {
12921296 AR_OBJECT_VK_SAMPLED_TEXTURE2DMS, AR_BASIC_UNKNOWN};
12931297static const ArBasicKind g_VKSampledTexture2DMSArrayCT[] = {
12941298 AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY, AR_BASIC_UNKNOWN};
1299+ static const ArBasicKind g_VKSampledTextureCUBECT[] = {
1300+ AR_OBJECT_VK_SAMPLED_TEXTURECUBE, AR_BASIC_UNKNOWN};
1301+ static const ArBasicKind g_VKSampledTextureCUBEArrayCT[] = {
1302+ AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY, AR_BASIC_UNKNOWN};
12951303#endif
12961304
12971305// Basic kinds, indexed by a LEGAL_INTRINSIC_COMPTYPES value.
@@ -1361,6 +1369,8 @@ const ArBasicKind *g_LegalIntrinsicCompTypes[] = {
13611369 g_VKSampledTexture2DArrayCT, // LICOMPTYPE_VK_SAMPLED_TEXTURE2D_ARRAY
13621370 g_VKSampledTexture2DMSCT, // LICOMPTYPE_VK_SAMPLED_TEXTURE2DMS
13631371 g_VKSampledTexture2DMSArrayCT, // LICOMPTYPE_VK_SAMPLED_TEXTURE2DMS_ARRAY
1372+ g_VKSampledTextureCUBECT, // LICOMPTYPE_VK_SAMPLED_TEXTURECUBE
1373+ g_VKSampledTextureCUBEArrayCT, // LICOMPTYPE_VK_SAMPLED_TEXTURECUBE_ARRAY
13641374#endif
13651375};
13661376static_assert(
@@ -1423,7 +1433,8 @@ static const ArBasicKind g_ArBasicKindsAsTypes[] = {
14231433 AR_OBJECT_VK_BUFFER_POINTER, AR_OBJECT_VK_SAMPLED_TEXTURE1D,
14241434 AR_OBJECT_VK_SAMPLED_TEXTURE1D_ARRAY, AR_OBJECT_VK_SAMPLED_TEXTURE2D,
14251435 AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY, AR_OBJECT_VK_SAMPLED_TEXTURE2DMS,
1426- AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY,
1436+ AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY, AR_OBJECT_VK_SAMPLED_TEXTURECUBE,
1437+ AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY,
14271438#endif // ENABLE_SPIRV_CODEGEN
14281439 // SPIRV change ends
14291440
@@ -1541,6 +1552,8 @@ static const uint8_t g_ArBasicKindsTemplateCount[] = {
15411552 1, // AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY
15421553 1, // AR_OBJECT_VK_SAMPLED_TEXTURE2DMS
15431554 1, // AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY
1555+ 1, // AR_OBJECT_VK_SAMPLED_TEXTURECUBE
1556+ 1, // AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY
15441557#endif // ENABLE_SPIRV_CODEGEN
15451558 // SPIRV change ends
15461559
@@ -1700,6 +1713,8 @@ static const SubscriptOperatorRecord g_ArBasicKindsSubscripts[] = {
17001713 {3, MipsTrue, SampleFalse}, // AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY
17011714 {2, MipsFalse, SampleTrue}, // AR_OBJECT_VK_SAMPLED_TEXTURE2DMS
17021715 {3, MipsFalse, SampleTrue}, // AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY
1716+ {0, MipsFalse, SampleFalse}, // AR_OBJECT_VK_SAMPLED_TEXTURECUBE
1717+ {0, MipsFalse, SampleFalse}, // AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY
17031718#endif // ENABLE_SPIRV_CODEGEN
17041719 // SPIRV change ends
17051720
@@ -1875,6 +1890,8 @@ static const char *g_ArBasicTypeNames[] = {
18751890 "SampledTexture2DArray",
18761891 "SampledTexture2DMS",
18771892 "SampledTexture2DMSArray",
1893+ "SampledTextureCUBE",
1894+ "SampledTextureCUBEArray",
18781895#endif // ENABLE_SPIRV_CODEGEN
18791896 // SPIRV change ends
18801897
@@ -2552,6 +2569,14 @@ static void GetIntrinsicMethods(ArBasicKind kind,
25522569 *intrinsics = g_VkSampledTexture2DMSArrayMethods;
25532570 *intrinsicCount = _countof(g_VkSampledTexture2DMSArrayMethods);
25542571 break;
2572+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE:
2573+ *intrinsics = g_VkSampledTextureCUBEMethods;
2574+ *intrinsicCount = _countof(g_VkSampledTextureCUBEMethods);
2575+ break;
2576+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY:
2577+ *intrinsics = g_VkSampledTextureCUBEArrayMethods;
2578+ *intrinsicCount = _countof(g_VkSampledTextureCUBEArrayMethods);
2579+ break;
25552580#endif
25562581 case AR_OBJECT_HIT_OBJECT:
25572582 *intrinsics = g_DxHitObjectMethods;
@@ -4162,7 +4187,9 @@ class HLSLExternalSource : public ExternalSemaSource {
41624187 kind == AR_OBJECT_VK_SAMPLED_TEXTURE2D ||
41634188 kind == AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY ||
41644189 kind == AR_OBJECT_VK_SAMPLED_TEXTURE2DMS ||
4165- kind == AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY) {
4190+ kind == AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY ||
4191+ kind == AR_OBJECT_VK_SAMPLED_TEXTURECUBE ||
4192+ kind == AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY) {
41664193 if (!m_vkNSDecl)
41674194 continue;
41684195 QualType float4Type =
@@ -4997,12 +5024,18 @@ class HLSLExternalSource : public ExternalSemaSource {
49975024 case AR_OBJECT_TEXTURE1D_ARRAY:
49985025 case AR_OBJECT_VK_SAMPLED_TEXTURE1D_ARRAY:
49995026 case AR_OBJECT_TEXTURE2D:
5027+ case AR_OBJECT_VK_SAMPLED_TEXTURE2D:
50005028 case AR_OBJECT_TEXTURE2D_ARRAY:
5029+ case AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY:
50015030 case AR_OBJECT_TEXTURE3D:
50025031 case AR_OBJECT_TEXTURECUBE:
5032+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE:
50035033 case AR_OBJECT_TEXTURECUBE_ARRAY:
5034+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY:
50045035 case AR_OBJECT_TEXTURE2DMS:
5036+ case AR_OBJECT_VK_SAMPLED_TEXTURE2DMS:
50055037 case AR_OBJECT_TEXTURE2DMS_ARRAY:
5038+ case AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY:
50065039
50075040 case AR_OBJECT_SAMPLER:
50085041 case AR_OBJECT_SAMPLERCOMPARISON:
@@ -5157,10 +5190,16 @@ class HLSLExternalSource : public ExternalSemaSource {
51575190 ResClass = DXIL::ResourceClass::UAV;
51585191 return true;
51595192 case AR_OBJECT_TEXTURECUBE:
5193+ #ifdef ENABLE_SPIRV_CODEGEN
5194+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE:
5195+ #endif
51605196 ResKind = DXIL::ResourceKind::TextureCube;
51615197 ResClass = DXIL::ResourceClass::SRV;
51625198 return true;
51635199 case AR_OBJECT_TEXTURECUBE_ARRAY:
5200+ #ifdef ENABLE_SPIRV_CODEGEN
5201+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY:
5202+ #endif
51645203 ResKind = DXIL::ResourceKind::TextureCubeArray;
51655204 ResClass = DXIL::ResourceClass::SRV;
51665205 return true;
@@ -6241,13 +6280,13 @@ class HLSLExternalSource : public ExternalSemaSource {
62416280 // Remove this when update intrinsic table not affect other things.
62426281 // Change vector<float,1> into float for bias.
62436282 const unsigned biasOperandID = 3; // return type, sampler, coord, bias.
6244- DXASSERT (parameterTypeCount > biasOperandID,
6245- "else operation was misrecognized");
6246- if (const ExtVectorType *VecTy =
6247- hlsl::ConvertHLSLVecMatTypeToExtVectorType(
6248- *m_context, parameterTypes[biasOperandID])) {
6249- if ( VecTy->getNumElements() == 1)
6250- parameterTypes[biasOperandID] = VecTy->getElementType();
6283+ if (parameterTypeCount > biasOperandID) {
6284+ if (const ExtVectorType *VecTy =
6285+ hlsl::ConvertHLSLVecMatTypeToExtVectorType(
6286+ *m_context, parameterTypes[biasOperandID])) {
6287+ if (VecTy->getNumElements() == 1)
6288+ parameterTypes[biasOperandID] = VecTy->getElementType();
6289+ }
62516290 }
62526291 }
62536292
@@ -11708,12 +11747,18 @@ void hlsl::DiagnoseRegisterType(clang::Sema *self, clang::SourceLocation loc,
1170811747 case AR_OBJECT_TEXTURE1D_ARRAY:
1170911748 case AR_OBJECT_VK_SAMPLED_TEXTURE1D_ARRAY:
1171011749 case AR_OBJECT_TEXTURE2D:
11750+ case AR_OBJECT_VK_SAMPLED_TEXTURE2D:
1171111751 case AR_OBJECT_TEXTURE2D_ARRAY:
11752+ case AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY:
1171211753 case AR_OBJECT_TEXTURE3D:
1171311754 case AR_OBJECT_TEXTURECUBE:
11755+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE:
1171411756 case AR_OBJECT_TEXTURECUBE_ARRAY:
11757+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY:
1171511758 case AR_OBJECT_TEXTURE2DMS:
11759+ case AR_OBJECT_VK_SAMPLED_TEXTURE2DMS:
1171611760 case AR_OBJECT_TEXTURE2DMS_ARRAY:
11761+ case AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY:
1171711762 expected = "'t' or 's'";
1171811763 isValid = registerType == 't' || registerType == 's';
1171911764 break;
0 commit comments