diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-08-03 15:46:16 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-03 15:46:16 -0400 |
| commit | 79ba9279becf480c9d92bb2faaede0e241f0b029 (patch) | |
| tree | 5e904295c6b0731fdfba0d17ab03ba54d5f92565 /tools/slang-reflection-test | |
| parent | 9ac5c51ae1f0664a9dcb31392894e4f76bdbcf98 (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.cpp | 32 |
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; |
