diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-reflection-api.cpp | 17 | ||||
| -rw-r--r-- | source/slang/slang-reflection-json.cpp | 10 |
2 files changed, 27 insertions, 0 deletions
diff --git a/source/slang/slang-reflection-api.cpp b/source/slang/slang-reflection-api.cpp index 9295bfdf6..5dfa9d55a 100644 --- a/source/slang/slang-reflection-api.cpp +++ b/source/slang/slang-reflection-api.cpp @@ -3305,6 +3305,23 @@ SLANG_API size_t spReflectionVariableLayout_GetSpace( return space; } +SLANG_API SlangImageFormat +spReflectionVariableLayout_GetImageFormat(SlangReflectionVariableLayout* inVarLayout) +{ + auto varLayout = convert(inVarLayout); + if (!varLayout) + return SLANG_IMAGE_FORMAT_unknown; + + if (auto leafVar = varLayout->getVariable()) + { + if (auto formatAttrib = leafVar->findModifier<FormatAttribute>()) + { + return (SlangImageFormat)formatAttrib->format; + } + } + return SLANG_IMAGE_FORMAT_unknown; +} + SLANG_API char const* spReflectionVariableLayout_GetSemanticName( SlangReflectionVariableLayout* inVarLayout) { diff --git a/source/slang/slang-reflection-json.cpp b/source/slang/slang-reflection-json.cpp index 4e8b6b2a4..82e8e1e3f 100644 --- a/source/slang/slang-reflection-json.cpp +++ b/source/slang/slang-reflection-json.cpp @@ -2,6 +2,7 @@ #include "slang-reflection-json.h" #include "../core/slang-blob.h" +#include "slang-ast-support-types.h" template<typename T> struct Range @@ -237,6 +238,15 @@ static void emitReflectionVarBindingInfoJSON( writer << "\"semanticIndex\": " << int(semanticIndex); } } + + if (auto format = var->getImageFormat()) + { + writer.maybeComma(); + auto formatName = getImageFormatInfo((Slang::ImageFormat)format).name; + writer << "\"format\": \""; + writer << formatName; + writer << "\""; + } } static void emitReflectionNameInfoJSON(PrettyWriter& writer, char const* name) |
