diff options
| author | arya <64514807+arya3d@users.noreply.github.com> | 2024-12-24 09:34:59 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-24 09:34:59 -0800 |
| commit | 1b5679f9556b65c65146123ce98ca4f62fe71d72 (patch) | |
| tree | e3b4bd02b7a7279d8ff3fcdcdcc9578f6ef3122c /source/slang-wasm/slang-wasm-bindings.cpp | |
| parent | e15c2802434058096bc0ced0ac23b39226a17334 (diff) | |
Reflection API Wasm Bindings Part1 (#5936)
* add a lot of missing classes, functios and enums
* typescript defintion generation
* formatting
* format code
---------
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Diffstat (limited to 'source/slang-wasm/slang-wasm-bindings.cpp')
| -rw-r--r-- | source/slang-wasm/slang-wasm-bindings.cpp | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/source/slang-wasm/slang-wasm-bindings.cpp b/source/slang-wasm/slang-wasm-bindings.cpp index 43a516ccc..0871665b9 100644 --- a/source/slang-wasm/slang-wasm-bindings.cpp +++ b/source/slang-wasm/slang-wasm-bindings.cpp @@ -45,6 +45,36 @@ EMSCRIPTEN_BINDINGS(slang) "getDescriptorSetDescriptorRangeType", &slang::wgsl::TypeLayoutReflection::getDescriptorSetDescriptorRangeType); + enum_<slang::Modifier::ID>("ModifierID") + .value("Shared", slang::Modifier::ID::Shared) + .value("NoDiff", slang::Modifier::ID::NoDiff) + .value("Static", slang::Modifier::ID::Static) + .value("Const", slang::Modifier::ID::Const) + .value("Export", slang::Modifier::ID::Export) + .value("Extern", slang::Modifier::ID::Extern) + .value("Differentiable", slang::Modifier::ID::Differentiable) + .value("Mutating", slang::Modifier::ID::Mutating) + .value("In", slang::Modifier::ID::In) + .value("Out", slang::Modifier::ID::Out) + .value("InOut", slang::Modifier::ID::InOut); + + class_<slang::Modifier>("Modifier"); + + class_<slang::wgsl::VariableReflection>("VariableReflection") + .function("getName", &slang::wgsl::VariableReflection::getName) + .function( + "findModifier", + &slang::wgsl::VariableReflection::findModifier, + allow_raw_pointers()) + .function("getType", &slang::wgsl::VariableReflection::getType, allow_raw_pointers()) + .function("getUserAttributeCount", &slang::wgsl::VariableReflection::getUserAttributeCount) + .function( + "getUserAttributeByIndex", + &slang::wgsl::VariableReflection::getUserAttributeByIndex, + allow_raw_pointers()) + .function("hasDefaultValue", &slang::wgsl::VariableReflection::hasDefaultValue); + + class_<slang::wgsl::VariableLayoutReflection>("VariableLayoutReflection") .function("getName", &slang::wgsl::VariableLayoutReflection::getName) .function( @@ -53,6 +83,130 @@ EMSCRIPTEN_BINDINGS(slang) allow_raw_pointers()) .function("getBindingIndex", &slang::wgsl::VariableLayoutReflection::getBindingIndex); + class_<slang::wgsl::GenericReflection>("GenericReflection") + .function("getName", &slang::wgsl::GenericReflection::getName) + .function("getTypeParameterCount", &slang::wgsl::GenericReflection::getTypeParameterCount) + .function("getValueParameterCount", &slang::wgsl::GenericReflection::getValueParameterCount) + .function("getInnerKind", &slang::wgsl::GenericReflection::getInnerKind) + .function("asDecl", &slang::wgsl::GenericReflection::asDecl, allow_raw_pointers()) + // .function( + // "getTypeParameterConstraintCount", + // &slang::wgsl::GenericReflection::getTypeParameterConstraintCount, + // allow_raw_pointers()) + .function( + "getTypeParameter", + &slang::wgsl::GenericReflection::getTypeParameter, + allow_raw_pointers()) + .function( + "getValueParameter", + &slang::wgsl::GenericReflection::getValueParameter, + allow_raw_pointers()) + .function( + "getInnerDecl", + &slang::wgsl::GenericReflection::getInnerDecl, + allow_raw_pointers()) + .function( + "getOuterGenericContainer", + &slang::wgsl::GenericReflection::getOuterGenericContainer, + allow_raw_pointers()); + + enum_<SlangDeclKind>("SlangDeclKind") + .value( + "SLANG_DECL_KIND_UNSUPPORTED_FOR_REFLECTION", + SlangDeclKind::SLANG_DECL_KIND_UNSUPPORTED_FOR_REFLECTION) + .value("SLANG_DECL_KIND_STRUCT", SlangDeclKind::SLANG_DECL_KIND_STRUCT) + .value("SLANG_DECL_KIND_FUNC", SlangDeclKind::SLANG_DECL_KIND_FUNC) + .value("SLANG_DECL_KIND_MODULE", SlangDeclKind::SLANG_DECL_KIND_MODULE) + .value("SLANG_DECL_KIND_GENERIC", SlangDeclKind::SLANG_DECL_KIND_GENERIC) + .value("SLANG_DECL_KIND_VARIABLE", SlangDeclKind::SLANG_DECL_KIND_VARIABLE) + .value("SLANG_DECL_KIND_NAMESPACE", SlangDeclKind::SLANG_DECL_KIND_NAMESPACE); + + class_<slang::wgsl::DeclReflection>("DeclReflection") + .function("getName", &slang::wgsl::DeclReflection::getName) + .function("getChildrenCount", &slang::wgsl::DeclReflection::getChildrenCount) + .function("getKind", &slang::wgsl::DeclReflection::getKind) + .function("getChild", &slang::wgsl::DeclReflection::getChild, allow_raw_pointers()) + .function("getType", &slang::wgsl::DeclReflection::getType, allow_raw_pointers()) + .function("asVariable", &slang::wgsl::DeclReflection::asVariable, allow_raw_pointers()) + .function("asFunction", &slang::wgsl::DeclReflection::asFunction, allow_raw_pointers()) + .function("asGeneric", &slang::wgsl::DeclReflection::asGeneric, allow_raw_pointers()) + .function("getParent", &slang::wgsl::DeclReflection::getParent, allow_raw_pointers()); + + enum_<slang::DeclReflection::Kind>("DeclReflectionKind") + .value("Unsupported", slang::DeclReflection::Kind::Unsupported) + .value("Struct", slang::DeclReflection::Kind::Struct) + .value("Func", slang::DeclReflection::Kind::Func) + .value("Module", slang::DeclReflection::Kind::Module) + .value("Generic", slang::DeclReflection::Kind::Generic) + .value("Variable", slang::DeclReflection::Kind::Variable) + .value("Namespace", slang::DeclReflection::Kind::Namespace); + + enum_<slang::TypeReflection::ScalarType>("ScalarType") + .value("None", slang::TypeReflection::ScalarType::None) + .value("Void", slang::TypeReflection::ScalarType::Void) + .value("Bool", slang::TypeReflection::ScalarType::Bool) + .value("Int32", slang::TypeReflection::ScalarType::Int32) + .value("UInt32", slang::TypeReflection::ScalarType::UInt32) + .value("Int64", slang::TypeReflection::ScalarType::Int64) + .value("UInt64", slang::TypeReflection::ScalarType::UInt64) + .value("Float16", slang::TypeReflection::ScalarType::Float16) + .value("Float32", slang::TypeReflection::ScalarType::Float32) + .value("Float64", slang::TypeReflection::ScalarType::Float64) + .value("Int8", slang::TypeReflection::ScalarType::Int8) + .value("UInt8", slang::TypeReflection::ScalarType::UInt8) + .value("Int16", slang::TypeReflection::ScalarType::Int16) + .value("UInt16", slang::TypeReflection::ScalarType::UInt16); + + class_<slang::wgsl::TypeReflection>("TypeReflection") + .function("getScalarType", &slang::wgsl::TypeReflection::getScalarType) + .function("getKind", &slang::wgsl::TypeReflection::getKind); + + enum_<slang::TypeReflection::Kind>("TypeReflectionKind") + .value("None", slang::TypeReflection::Kind::None) + .value("Struct", slang::TypeReflection::Kind::Struct) + .value("Array", slang::TypeReflection::Kind::Array) + .value("Matrix", slang::TypeReflection::Kind::Matrix) + .value("Vector", slang::TypeReflection::Kind::Vector) + .value("Scalar", slang::TypeReflection::Kind::Scalar) + .value("ConstantBuffer", slang::TypeReflection::Kind::ConstantBuffer) + .value("Resource", slang::TypeReflection::Kind::Resource) + .value("SamplerState", slang::TypeReflection::Kind::SamplerState) + .value("TextureBuffer", slang::TypeReflection::Kind::TextureBuffer) + .value("ShaderStorageBuffer", slang::TypeReflection::Kind::ShaderStorageBuffer) + .value("ParameterBlock", slang::TypeReflection::Kind::ParameterBlock) + .value("GenericTypeParameter", slang::TypeReflection::Kind::GenericTypeParameter) + .value("Interface", slang::TypeReflection::Kind::Interface) + .value("OutputStream", slang::TypeReflection::Kind::OutputStream) + .value("Specialized", slang::TypeReflection::Kind::Specialized) + .value("Feedback", slang::TypeReflection::Kind::Feedback) + .value("Pointer", slang::TypeReflection::Kind::Pointer) + .value("DynamicResource", slang::TypeReflection::Kind::DynamicResource); + + + class_<slang::wgsl::UserAttribute>("UserAttribute") + .function("getName", &slang::wgsl::UserAttribute::getName) + .function("getArgumentCount", &slang::wgsl::UserAttribute::getArgumentCount) + .function( + "getArgumentType", + &slang::wgsl::UserAttribute::getArgumentType, + allow_raw_pointers()) + .function( + "getArgumentValueString", + &slang::wgsl::UserAttribute::getArgumentValueString, + allow_raw_pointers()) + .function( + "getArgumentValueFloat", + &slang::wgsl::UserAttribute::getArgumentValueFloat, + allow_raw_pointers()); + + class_<slang::wgsl::FunctionReflection>("FunctionReflection") + .function("getName", &slang::wgsl::FunctionReflection::getName) + .function("getUserAttributeCount", &slang::wgsl::FunctionReflection::getUserAttributeCount) + .function( + "getUserAttributeByIndex", + &slang::wgsl::FunctionReflection::getUserAttributeByIndex, + allow_raw_pointers()); + class_<slang::wgsl::EntryPointReflection>("EntryPointReflection") .function( "getComputeThreadGroupSize", @@ -77,6 +231,10 @@ EMSCRIPTEN_BINDINGS(slang) .function( "findEntryPointByName", &slang::wgsl::ProgramLayout::findEntryPointByName, + allow_raw_pointers()) + .function( + "findFunctionByName", + &slang::wgsl::ProgramLayout::findFunctionByName, allow_raw_pointers()); enum_<slang::BindingType>("BindingType") |
