/** * An interface block, as in: * * out sk_PerVertex { * layout(builtin=0) float4 sk_Position; * layout(builtin=1) float sk_PointSize; * }; * * At the IR level, this is represented by a single variable of struct type.
*/ class InterfaceBlock final : public ProgramElement { public: inlinestatic constexpr Kind kIRNodeKind = Kind::kInterfaceBlock;
// Returns an InterfaceBlock; errors are reported to the ErrorReporter. // The caller is responsible for adding the InterfaceBlock to the program elements. // The program's RTAdjustData will be updated if the InterfaceBlock contains sk_RTAdjust. // The passed-in symbol table will be updated with a reference to the interface block variable // (if it is named) or each of the interface block fields (if it is anonymous). static std::unique_ptr<InterfaceBlock> Convert(const Context& context,
Position pos, const Modifiers& modifiers,
std::string_view typeName,
skia_private::TArray<Field> fields,
std::string_view varName, int arraySize);
// Returns an InterfaceBlock; errors are reported via SkASSERT. // The caller is responsible for adding the InterfaceBlock to the program elements. // The passed-in symbol table will be updated with a reference to the interface block variable // (if it is named) or each of the interface block fields (if it is anonymous). static std::unique_ptr<InterfaceBlock> Make(const Context& context,
Position pos,
Variable* variable);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.