https://github.com/shader-slang/slang
Raw File
Tip revision: 167300eef147f3008876516a6464196458518ccc authored by Yong He on 11 February 2022, 20:56:17 UTC
gfx: Various Vulkan fixes. (#2129)
Tip revision: 167300e
slang-ir-witness-table-wrapper.h
// slang-ir-witness-table-wrapper.h
#pragma once

namespace Slang
{
    struct SharedGenericsLoweringContext;

    /// This pass generates wrapper functions for witness table function entries.
    ///
    /// Enabled for generation of dynamic dispatch code only.
    ///
    /// Functions that are used to satisfy interface requirement have concrete
    /// type signatures for `this` and `associatedtype` parameters/return values.
    /// However, when they are called from a witness table, the callee only have a
    /// raw pointer for this arguments, since the conrete type is not known to the
    /// callee. Therefore, we need to generate wrappers for each member function
    /// callable through a witness table, so that the wrapper functions take general void*
    /// pointer for arguments whose type is unknown at call sites, and convert them
    /// to concrete types and calls the actual implementation.
    void generateWitnessTableWrapperFunctions(
        SharedGenericsLoweringContext* sharedContext);

}
back to top