@@ -53,6 +53,8 @@ enum class ResourceKind {
5353 StructuredBuffer,
5454 ByteAddressBuffer,
5555 Texture2D,
56+ Texture2DMS,
57+ Texture2DMSArray,
5658 RWBuffer,
5759 RWStructuredBuffer,
5860 RWByteAddressBuffer,
@@ -106,6 +108,8 @@ struct OutputProperties {
106108 int Width;
107109 int Depth;
108110 int MipLevels = 1 ;
111+ int SampleCount = 1 ;
112+ int ArrayLayers = 1 ;
109113};
110114
111115static inline uint32_t getFormatSize (DataFormat Format) {
@@ -157,6 +161,10 @@ struct CPUBuffer {
157161 return Stride;
158162 return getSingleElementSize () * Channels;
159163 }
164+
165+ uint32_t getSampleCount () const { return OutputProps.SampleCount ; }
166+
167+ uint32_t getArrayLayers () const { return OutputProps.ArrayLayers ; }
160168};
161169
162170struct Result {
@@ -187,6 +195,8 @@ struct Resource {
187195 case ResourceKind::Buffer:
188196 case ResourceKind::RWBuffer:
189197 case ResourceKind::Texture2D:
198+ case ResourceKind::Texture2DMS:
199+ case ResourceKind::Texture2DMSArray:
190200 case ResourceKind::RWTexture2D:
191201 case ResourceKind::Sampler:
192202 case ResourceKind::SampledTexture2D:
@@ -213,6 +223,8 @@ struct Resource {
213223 case ResourceKind::RWByteAddressBuffer:
214224 case ResourceKind::ConstantBuffer:
215225 case ResourceKind::Texture2D:
226+ case ResourceKind::Texture2DMS:
227+ case ResourceKind::Texture2DMSArray:
216228 case ResourceKind::RWTexture2D:
217229 case ResourceKind::SampledTexture2D:
218230 return false ;
@@ -231,6 +243,8 @@ struct Resource {
231243 case ResourceKind::Sampler:
232244 return false ;
233245 case ResourceKind::Texture2D:
246+ case ResourceKind::Texture2DMS:
247+ case ResourceKind::Texture2DMSArray:
234248 case ResourceKind::RWTexture2D:
235249 case ResourceKind::SampledTexture2D:
236250 return true ;
@@ -267,6 +281,25 @@ struct Resource {
267281 }
268282 }
269283
284+ bool isMultiSampledTexture () const {
285+ switch (Kind) {
286+ case ResourceKind::Texture2DMS:
287+ case ResourceKind::Texture2DMSArray:
288+ return true ;
289+ default :
290+ return false ;
291+ }
292+ }
293+
294+ bool isArrayTexture () const {
295+ switch (Kind) {
296+ case ResourceKind::Texture2DMSArray:
297+ return true ;
298+ default :
299+ return false ;
300+ }
301+ }
302+
270303 uint32_t getElementSize () const {
271304 assert (!isSampler () && " Samplers do not have element size" );
272305 // ByteAddressBuffers are treated as 4-byte elements to match their memory
@@ -289,6 +322,8 @@ struct Resource {
289322 case ResourceKind::StructuredBuffer:
290323 case ResourceKind::ByteAddressBuffer:
291324 case ResourceKind::Texture2D:
325+ case ResourceKind::Texture2DMS:
326+ case ResourceKind::Texture2DMSArray:
292327 case ResourceKind::ConstantBuffer:
293328 case ResourceKind::Sampler:
294329 case ResourceKind::SampledTexture2D:
@@ -641,6 +676,8 @@ template <> struct ScalarEnumerationTraits<offloadtest::ResourceKind> {
641676 ENUM_CASE (StructuredBuffer);
642677 ENUM_CASE (ByteAddressBuffer);
643678 ENUM_CASE (Texture2D);
679+ ENUM_CASE (Texture2DMS);
680+ ENUM_CASE (Texture2DMSArray);
644681 ENUM_CASE (RWBuffer);
645682 ENUM_CASE (RWStructuredBuffer);
646683 ENUM_CASE (RWByteAddressBuffer);
0 commit comments