@@ -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:
@@ -5149,10 +5182,12 @@ class HLSLExternalSource : public ExternalSemaSource {
51495182 ResClass = DXIL::ResourceClass::UAV;
51505183 return true;
51515184 case AR_OBJECT_TEXTURECUBE:
5185+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE:
51525186 ResKind = DXIL::ResourceKind::TextureCube;
51535187 ResClass = DXIL::ResourceClass::SRV;
51545188 return true;
51555189 case AR_OBJECT_TEXTURECUBE_ARRAY:
5190+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY:
51565191 ResKind = DXIL::ResourceKind::TextureCubeArray;
51575192 ResClass = DXIL::ResourceClass::SRV;
51585193 return true;
@@ -6229,13 +6264,13 @@ class HLSLExternalSource : public ExternalSemaSource {
62296264 // Remove this when update intrinsic table not affect other things.
62306265 // Change vector<float,1> into float for bias.
62316266 const unsigned biasOperandID = 3; // return type, sampler, coord, bias.
6232- DXASSERT (parameterTypeCount > biasOperandID,
6233- "else operation was misrecognized");
6234- if (const ExtVectorType *VecTy =
6235- hlsl::ConvertHLSLVecMatTypeToExtVectorType(
6236- *m_context, parameterTypes[biasOperandID])) {
6237- if ( VecTy->getNumElements() == 1)
6238- parameterTypes[biasOperandID] = VecTy->getElementType();
6267+ if (parameterTypeCount > biasOperandID) {
6268+ if (const ExtVectorType *VecTy =
6269+ hlsl::ConvertHLSLVecMatTypeToExtVectorType(
6270+ *m_context, parameterTypes[biasOperandID])) {
6271+ if (VecTy->getNumElements() == 1)
6272+ parameterTypes[biasOperandID] = VecTy->getElementType();
6273+ }
62396274 }
62406275 }
62416276
@@ -11696,12 +11731,18 @@ void hlsl::DiagnoseRegisterType(clang::Sema *self, clang::SourceLocation loc,
1169611731 case AR_OBJECT_TEXTURE1D_ARRAY:
1169711732 case AR_OBJECT_VK_SAMPLED_TEXTURE1D_ARRAY:
1169811733 case AR_OBJECT_TEXTURE2D:
11734+ case AR_OBJECT_VK_SAMPLED_TEXTURE2D:
1169911735 case AR_OBJECT_TEXTURE2D_ARRAY:
11736+ case AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY:
1170011737 case AR_OBJECT_TEXTURE3D:
1170111738 case AR_OBJECT_TEXTURECUBE:
11739+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE:
1170211740 case AR_OBJECT_TEXTURECUBE_ARRAY:
11741+ case AR_OBJECT_VK_SAMPLED_TEXTURECUBE_ARRAY:
1170311742 case AR_OBJECT_TEXTURE2DMS:
11743+ case AR_OBJECT_VK_SAMPLED_TEXTURE2DMS:
1170411744 case AR_OBJECT_TEXTURE2DMS_ARRAY:
11745+ case AR_OBJECT_VK_SAMPLED_TEXTURE2DMS_ARRAY:
1170511746 expected = "'t' or 's'";
1170611747 isValid = registerType == 't' || registerType == 's';
1170711748 break;
0 commit comments