From c94ca1692e101df87215232e87fa7edadc1a7b05 Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Tue, 1 Jul 2025 23:36:02 +0800 Subject: Allow Link time constant array length sizing, warn on unsupported functionality (#7067) * Add link time array layout test * Add link time constant array size compilation test * Link time constant array size test * Allow getting link time array size Closes https://github.com/shader-slang/slang/issues/6753 * format * Switch to SIMPLE test and check output * Implement without binary api changes * diagnose on link time constant sized array * fix test --------- Co-authored-by: Yong He --- include/slang.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'include/slang.h') diff --git a/include/slang.h b/include/slang.h index 782c4a082..4a3af7de1 100644 --- a/include/slang.h +++ b/include/slang.h @@ -2291,9 +2291,9 @@ struct TypeReflection } // only useful if `getKind() == Kind::Array` - size_t getElementCount() + size_t getElementCount(SlangReflection* reflection = nullptr) { - return spReflectionType_GetElementCount((SlangReflectionType*)this); + return spReflectionType_GetSpecializedElementCount((SlangReflectionType*)this, reflection); } size_t getTotalArrayElementCount() @@ -2454,6 +2454,8 @@ enum class BindingType : SlangBindingTypeIntegral ExtMask = SLANG_BINDING_TYPE_EXT_MASK, }; +struct ShaderReflection; + struct TypeLayoutReflection { TypeReflection* getType() @@ -2543,7 +2545,10 @@ struct TypeLayoutReflection } // only useful if `getKind() == Kind::Array` - size_t getElementCount() { return getType()->getElementCount(); } + size_t getElementCount(ShaderReflection* reflection = nullptr) + { + return getType()->getElementCount((SlangReflection*)reflection); + } size_t getTotalArrayElementCount() { return getType()->getTotalArrayElementCount(); } -- cgit v1.2.3