@@ -201,6 +201,7 @@ enum ArBasicKind {
201201 AR_OBJECT_VK_SPV_INTRINSIC_RESULT_ID,
202202 AR_OBJECT_VK_BUFFER_POINTER,
203203 AR_OBJECT_VK_SAMPLED_TEXTURE2D,
204+ AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY,
204205#endif // ENABLE_SPIRV_CODEGEN
205206 // SPIRV change ends
206207
@@ -562,6 +563,7 @@ const UINT g_uBasicKindProps[] = {
562563 BPROP_OBJECT, // AR_OBJECT_VK_SPV_INTRINSIC_RESULT_ID use recordType
563564 BPROP_OBJECT, // AR_OBJECT_VK_BUFFER_POINTER use recordType
564565 BPROP_OBJECT | BPROP_RBUFFER, // AR_OBJECT_VK_SAMPLED_TEXTURE2D
566+ BPROP_OBJECT | BPROP_RBUFFER, // AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY
565567#endif // ENABLE_SPIRV_CODEGEN
566568 // SPIRV change ends
567569
@@ -1272,6 +1274,8 @@ static const ArBasicKind g_VKBufferPointerCT[] = {AR_OBJECT_VK_BUFFER_POINTER,
12721274 AR_BASIC_UNKNOWN};
12731275static const ArBasicKind g_VKSampledTexture2DCT[] = {
12741276 AR_OBJECT_VK_SAMPLED_TEXTURE2D, AR_BASIC_UNKNOWN};
1277+ static const ArBasicKind g_VKSampledTexture2DArrayCT[] = {
1278+ AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY, AR_BASIC_UNKNOWN};
12751279#endif
12761280
12771281// Basic kinds, indexed by a LEGAL_INTRINSIC_COMPTYPES value.
@@ -1334,8 +1338,9 @@ const ArBasicKind *g_LegalIntrinsicCompTypes[] = {
13341338 g_LinAlgCT, // LICOMPTYPE_LINALG
13351339 g_BuiltInTrianglePositionsCT, // LICOMPTYPE_BUILTIN_TRIANGLE_POSITIONS
13361340#ifdef ENABLE_SPIRV_CODEGEN
1337- g_VKBufferPointerCT, // LICOMPTYPE_VK_BUFFER_POINTER
1338- g_VKSampledTexture2DCT, // LICOMPTYPE_VK_SAMPLED_TEXTURE2D
1341+ g_VKBufferPointerCT, // LICOMPTYPE_VK_BUFFER_POINTER
1342+ g_VKSampledTexture2DCT, // LICOMPTYPE_VK_SAMPLED_TEXTURE2D
1343+ g_VKSampledTexture2DArrayCT, // LICOMPTYPE_VK_SAMPLED_TEXTURE2D_ARRAY
13391344#endif
13401345};
13411346static_assert(
@@ -1396,6 +1401,7 @@ static const ArBasicKind g_ArBasicKindsAsTypes[] = {
13961401 AR_OBJECT_VK_INTEGRAL_CONSTANT, AR_OBJECT_VK_LITERAL,
13971402 AR_OBJECT_VK_SPV_INTRINSIC_TYPE, AR_OBJECT_VK_SPV_INTRINSIC_RESULT_ID,
13981403 AR_OBJECT_VK_BUFFER_POINTER, AR_OBJECT_VK_SAMPLED_TEXTURE2D,
1404+ AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY,
13991405#endif // ENABLE_SPIRV_CODEGEN
14001406 // SPIRV change ends
14011407
@@ -1508,6 +1514,7 @@ static const uint8_t g_ArBasicKindsTemplateCount[] = {
15081514 1, // AR_OBJECT_VK_SPV_INTRINSIC_RESULT_ID
15091515 2, // AR_OBJECT_VK_BUFFER_POINTER
15101516 1, // AR_OBJECT_VK_SAMPLED_TEXTURE2D
1517+ 1, // AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY
15111518#endif // ENABLE_SPIRV_CODEGEN
15121519 // SPIRV change ends
15131520
@@ -1662,6 +1669,7 @@ static const SubscriptOperatorRecord g_ArBasicKindsSubscripts[] = {
16621669 {0, MipsFalse, SampleFalse}, // AR_OBJECT_VK_SPV_INTRINSIC_RESULT_ID
16631670 {0, MipsFalse, SampleFalse}, // AR_OBJECT_VK_BUFFER_POINTER
16641671 {2, MipsTrue, SampleFalse}, // AR_OBJECT_VK_SAMPLED_TEXTURE2D
1672+ {3, MipsTrue, SampleFalse}, // AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY
16651673#endif // ENABLE_SPIRV_CODEGEN
16661674 // SPIRV change ends
16671675
@@ -1832,6 +1840,7 @@ static const char *g_ArBasicTypeNames[] = {
18321840 "ext_result_id",
18331841 "BufferPointer",
18341842 "SampledTexture2D",
1843+ "SampledTexture2DArray",
18351844#endif // ENABLE_SPIRV_CODEGEN
18361845 // SPIRV change ends
18371846
@@ -2489,6 +2498,10 @@ static void GetIntrinsicMethods(ArBasicKind kind,
24892498 *intrinsics = g_VkSampledTexture2DMethods;
24902499 *intrinsicCount = _countof(g_VkSampledTexture2DMethods);
24912500 break;
2501+ case AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY:
2502+ *intrinsics = g_VkSampledTexture2DArrayMethods;
2503+ *intrinsicCount = _countof(g_VkSampledTexture2DArrayMethods);
2504+ break;
24922505#endif
24932506 case AR_OBJECT_HIT_OBJECT:
24942507 *intrinsics = g_DxHitObjectMethods;
@@ -4094,13 +4107,14 @@ class HLSLExternalSource : public ExternalSemaSource {
40944107 recordDecl = DeclareVkBufferPointerType(*m_context, m_vkNSDecl);
40954108 recordDecl->setImplicit(true);
40964109 m_vkBufferPointerTemplateDecl = recordDecl->getDescribedClassTemplate();
4097- } else if (kind == AR_OBJECT_VK_SAMPLED_TEXTURE2D) {
4110+ } else if (kind == AR_OBJECT_VK_SAMPLED_TEXTURE2D ||
4111+ kind == AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY) {
40984112 if (!m_vkNSDecl)
40994113 continue;
41004114 QualType float4Type =
41014115 LookupVectorType(HLSLScalarType::HLSLScalarType_float, 4);
41024116 recordDecl = DeclareVkSampledTextureType(
4103- *m_context, m_vkNSDecl, "SampledTexture2D" , float4Type);
4117+ *m_context, m_vkNSDecl, g_ArBasicTypeNames[kind] , float4Type);
41044118 if (Attr)
41054119 recordDecl->addAttr(Attr);
41064120 m_vkSampledTextureTemplateDecl =
@@ -5060,6 +5074,9 @@ class HLSLExternalSource : public ExternalSemaSource {
50605074 ResClass = DXIL::ResourceClass::UAV;
50615075 return true;
50625076 case AR_OBJECT_TEXTURE2D_ARRAY:
5077+ #ifdef ENABLE_SPIRV_CODEGEN
5078+ case AR_OBJECT_VK_SAMPLED_TEXTURE2D_ARRAY:
5079+ #endif
50635080 ResKind = DXIL::ResourceKind::Texture2DArray;
50645081 ResClass = DXIL::ResourceClass::SRV;
50655082 return true;
0 commit comments