summaryrefslogtreecommitdiffstats
path: root/tools/slang-reflection-test
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-08-03 15:46:16 -0400
committerGitHub <noreply@github.com>2020-08-03 15:46:16 -0400
commit79ba9279becf480c9d92bb2faaede0e241f0b029 (patch)
tree5e904295c6b0731fdfba0d17ab03ba54d5f92565 /tools/slang-reflection-test
parent9ac5c51ae1f0664a9dcb31392894e4f76bdbcf98 (diff)
First pass support for Sampler Feedback (#1470)
* Add the Feedback texture types. Depreciate SLANG_RESOURCE_EXT_SHAPE_MASK. * Starting point to test sampler feedback. * WIP on FeedbackSampler. * Use __target_intrinsic to override the output of sampler feedback types. * Use newer generic syntax for FeedbackTexture. * Reflects Feedback type. * SLANG_TYPE_KIND_TEXTURE_FEEDBACK -> SLANG_TYPE_KIND_FEEDBACK * Added reflection test. * Reneable issue with generics in sampler-feedback-basic.slang * Add methods to FeedbackTexture2D/Array. Make test cover test cases. * Sampler feedback produces DXC code. * Disabled Sampler feedback test - as requires newer version of DXC. * Fix bug in reflection tool output. * Fix problem with direct-spirv-emit.slang.expected due to update to glslang. * Fix direct-spirv-emit.slang * Use SLANG_RESOURCE_EXT_SHAPE_MASK again * Make Feedback be emitted as a textue type prefix. Co-authored-by: Tim Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'tools/slang-reflection-test')
-rw-r--r--tools/slang-reflection-test/slang-reflection-test-main.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/tools/slang-reflection-test/slang-reflection-test-main.cpp b/tools/slang-reflection-test/slang-reflection-test-main.cpp
index ba6096f20..655b4e41d 100644
--- a/tools/slang-reflection-test/slang-reflection-test-main.cpp
+++ b/tools/slang-reflection-test/slang-reflection-test-main.cpp
@@ -539,6 +539,11 @@ static void emitReflectionResourceTypeBaseInfoJSON(
comma(writer);
write(writer, "\"multisample\": true");
}
+ if (shape & SLANG_TEXTURE_FEEDBACK_FLAG)
+ {
+ comma(writer);
+ write(writer, "\"feedback\": true");
+ }
if( access != SLANG_RESOURCE_ACCESS_READ )
{
@@ -553,7 +558,7 @@ static void emitReflectionResourceTypeBaseInfoJSON(
case SLANG_RESOURCE_ACCESS_READ:
break;
-
+ case SLANG_RESOURCE_ACCESS_WRITE: write(writer, "write"); break;
case SLANG_RESOURCE_ACCESS_READ_WRITE: write(writer, "readWrite"); break;
case SLANG_RESOURCE_ACCESS_RASTER_ORDERED: write(writer, "rasterOrdered"); break;
case SLANG_RESOURCE_ACCESS_APPEND: write(writer, "append"); break;
@@ -730,6 +735,12 @@ static void emitReflectionTypeInfoJSON(
comma(writer);
emitReflectionNameInfoJSON(writer, type->getName());
break;
+ case slang::TypeReflection::Kind::Feedback:
+ comma(writer);
+ write(writer, "\"kind\": \"Feedback\"");
+ comma(writer);
+ emitReflectionNameInfoJSON(writer, type->getName());
+ break;
default:
assert(!"unhandled case");
break;
@@ -909,9 +920,11 @@ static void emitReflectionTypeLayoutInfoJSON(
// the relevant cases here.
//
auto type = typeLayout->getType();
- auto shape = type->getResourceShape();
+ auto shape = type->getResourceShape();
- if( (shape & SLANG_RESOURCE_BASE_SHAPE_MASK) == SLANG_STRUCTURED_BUFFER )
+ const auto baseType = shape & SLANG_RESOURCE_BASE_SHAPE_MASK;
+
+ if (baseType == SLANG_STRUCTURED_BUFFER)
{
emitReflectionResourceTypeBaseInfoJSON(writer, type);
@@ -924,9 +937,20 @@ static void emitReflectionTypeLayoutInfoJSON(
resultTypeLayout);
}
}
+ else if (shape & SLANG_TEXTURE_FEEDBACK_FLAG)
+ {
+ emitReflectionResourceTypeBaseInfoJSON(writer, type);
+
+ if (auto resultType = typeLayout->getResourceResultType())
+ {
+ comma(writer);
+ write(writer, "\"resultType\": ");
+ emitReflectionTypeJSON(writer, resultType);
+ }
+ }
else
{
- emitReflectionTypeInfoJSON(writer, typeLayout->getType());
+ emitReflectionTypeInfoJSON(writer, type);
}
}
break;