Skip to content

Commit 2dca0c2

Browse files
committed
Support testing multi sampled textures
1 parent 7bc29c0 commit 2dca0c2

26 files changed

Lines changed: 982 additions & 32 deletions

include/Support/Pipeline.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

111115
static 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

162170
struct 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

Comments
 (0)