Flutter Engine
The Flutter Engine
|
Public Types | |
using | int_limits = std::numeric_limits< int32_t > |
using | short_limits = std::numeric_limits< int16_t > |
using | uint_limits = std::numeric_limits< uint32_t > |
using | ushort_limits = std::numeric_limits< uint16_t > |
using | float_limits = std::numeric_limits< float > |
Public Types inherited from SkSL::Type | |
enum class | TypeKind : int8_t { kArray , kAtomic , kGeneric , kLiteral , kMatrix , kOther , kSampler , kSeparateSampler , kScalar , kStruct , kTexture , kVector , kVoid , kColorFilter , kShader , kBlender } |
enum class | NumberKind : int8_t { kFloat , kSigned , kUnsigned , kBoolean , kNonnumeric } |
enum class | TextureAccess : int8_t { kSample , kRead , kWrite , kReadWrite } |
Public Types inherited from SkSL::Symbol | |
using | Kind = SymbolKind |
Public Member Functions | |
ScalarType (std::string_view name, const char *abbrev, NumberKind numberKind, int8_t priority, int8_t bitWidth) | |
NumberKind | numberKind () const override |
int | priority () const override |
int | bitWidth () const override |
int | columns () const override |
int | rows () const override |
bool | isScalar () const override |
bool | isAllowedInES2 () const override |
bool | isAllowedInUniform (Position *) const override |
size_t | slotCount () const override |
const Type & | slotType (size_t n) const override |
double | minimumValue () const override |
double | maximumValue () const override |
Public Member Functions inherited from SkSL::Type | |
Type (const Type &other)=delete | |
std::string | getArrayName (int arraySize) const |
template<typename T > | |
bool | is () const |
template<typename T > | |
const T & | as () const |
template<typename T > | |
T & | as () |
const Type * | clone (const Context &context, SymbolTable *symbolTable) const |
virtual bool | isBuiltin () const |
std::string | displayName () const |
std::string | description () const override |
bool | isAllowedInES2 (const Context &context) const |
virtual bool | isAllowedInES2 () const |
virtual bool | isAllowedInUniform (Position *errorPosition=nullptr) const |
virtual const Type & | resolve () const |
bool | matches (const Type &other) const |
const char * | abbreviatedName () const |
TypeKind | typeKind () const |
virtual NumberKind | numberKind () const |
bool | isBoolean () const |
bool | isNumber () const |
bool | isFloat () const |
bool | isSigned () const |
bool | isUnsigned () const |
bool | isInteger () const |
bool | isOpaque () const |
bool | isStorageTexture () const |
virtual int | priority () const |
bool | canCoerceTo (const Type &other, bool allowNarrowing) const |
CoercionCost | coercionCost (const Type &other) const |
virtual const Type & | componentType () const |
const Type & | columnType (const Context &context) const |
virtual const Type & | textureType () const |
virtual int | columns () const |
virtual int | rows () const |
virtual double | minimumValue () const |
virtual double | maximumValue () const |
virtual size_t | slotCount () const |
virtual const Type & | slotType (size_t) const |
virtual SkSpan< const Field > | fields () const |
virtual SkSpan< const Type *const > | coercibleTypes () const |
virtual SpvDim_ | dimensions () const |
virtual bool | isDepth () const |
virtual bool | isArrayedTexture () const |
bool | isVoid () const |
bool | isGeneric () const |
bool | isSampler () const |
bool | isAtomic () const |
virtual bool | isScalar () const |
virtual bool | isLiteral () const |
virtual const Type & | scalarTypeForLiteral () const |
virtual bool | isVector () const |
virtual bool | isMatrix () const |
virtual bool | isArray () const |
virtual bool | isUnsizedArray () const |
virtual bool | isStruct () const |
virtual bool | isInterfaceBlock () const |
bool | isEffectChild () const |
virtual bool | isMultisampled () const |
virtual TextureAccess | textureAccess () const |
bool | hasPrecision () const |
bool | highPrecision () const |
virtual int | bitWidth () const |
virtual bool | isOrContainsArray () const |
virtual bool | isOrContainsUnsizedArray () const |
virtual bool | isOrContainsAtomic () const |
const Type & | toCompound (const Context &context, int columns, int rows) const |
const Type * | applyQualifiers (const Context &context, ModifierFlags *modifierFlags, Position pos) const |
std::unique_ptr< Expression > | coerceExpression (std::unique_ptr< Expression > expr, const Context &context) const |
bool | checkForOutOfRangeLiteral (const Context &context, const Expression &expr) const |
bool | checkForOutOfRangeLiteral (const Context &context, double value, Position pos) const |
bool | checkIfUsableInArray (const Context &context, Position arrayPos) const |
SKSL_INT | convertArraySize (const Context &context, Position arrayPos, std::unique_ptr< Expression > size) const |
SKSL_INT | convertArraySize (const Context &context, Position arrayPos, Position sizePos, SKSL_INT size) const |
Public Member Functions inherited from SkSL::Symbol | |
Symbol (Position pos, Kind kind, std::string_view name, const Type *type=nullptr) | |
~Symbol () override | |
std::unique_ptr< Expression > | instantiate (const Context &context, Position pos) const |
const Type & | type () const |
Kind | kind () const |
std::string_view | name () const |
void | setName (std::string_view newName) |
Public Member Functions inherited from SkSL::IRNode | |
virtual | ~IRNode () |
virtual std::string | description () const =0 |
IRNode (const IRNode &)=delete | |
IRNode & | operator= (const IRNode &)=delete |
Position | position () const |
void | setPosition (Position p) |
template<typename T > | |
bool | is () const |
template<typename T > | |
const T & | as () const |
template<typename T > | |
T & | as () |
Static Public Attributes | |
static constexpr TypeKind | kTypeKind = TypeKind::kScalar |
Static Public Attributes inherited from SkSL::Type | |
static constexpr Kind | kIRNodeKind = Kind::kType |
static constexpr int | kMaxAbbrevLength = 3 |
static constexpr int | kUnsizedArray = -1 |
Additional Inherited Members | |
Static Public Member Functions inherited from SkSL::Type | |
static std::unique_ptr< Type > | MakeArrayType (const Context &context, std::string_view name, const Type &componentType, int columns) |
static std::unique_ptr< Type > | MakeAliasType (std::string_view name, const Type &targetType) |
static std::unique_ptr< Type > | MakeGenericType (const char *name, SkSpan< const Type *const > types, const Type *slotType) |
static std::unique_ptr< Type > | MakeLiteralType (const char *name, const Type &scalarType, int8_t priority) |
static std::unique_ptr< Type > | MakeMatrixType (std::string_view name, const char *abbrev, const Type &componentType, int columns, int8_t rows) |
static std::unique_ptr< Type > | MakeSamplerType (const char *name, const Type &textureType) |
static std::unique_ptr< Type > | MakeScalarType (std::string_view name, const char *abbrev, Type::NumberKind numberKind, int8_t priority, int8_t bitWidth) |
static std::unique_ptr< Type > | MakeSpecialType (const char *name, const char *abbrev, Type::TypeKind typeKind) |
static std::unique_ptr< Type > | MakeStructType (const Context &context, Position pos, std::string_view name, skia_private::TArray< Field > fields, bool interfaceBlock=false) |
static std::unique_ptr< Type > | MakeTextureType (const char *name, SpvDim_ dimensions, bool isDepth, bool isArrayedTexture, bool isMultisampled, TextureAccess textureAccess) |
static std::unique_ptr< Type > | MakeVectorType (std::string_view name, const char *abbrev, const Type &componentType, int columns) |
static std::unique_ptr< Type > | MakeAtomicType (std::string_view name, const char *abbrev) |
Static Public Member Functions inherited from SkSL::Poolable | |
static void * | operator new (const size_t size) |
static void | operator delete (void *ptr) |
Public Attributes inherited from SkSL::IRNode | |
Position | fPosition |
Protected Member Functions inherited from SkSL::Type | |
Type (std::string_view name, const char *abbrev, TypeKind kind, Position pos=Position()) | |
const Type * | applyPrecisionQualifiers (const Context &context, ModifierFlags *modifierFlags, Position pos) const |
const Type * | applyAccessQualifiers (const Context &context, ModifierFlags *modifierFlags, Position pos) const |
bool | isInRootSymbolTable () const |
virtual int | structNestingDepth () const |
Protected Member Functions inherited from SkSL::IRNode | |
IRNode (Position position, int kind) | |
Protected Attributes inherited from SkSL::IRNode | |
int | fKind |
Definition at line 322 of file SkSLType.cpp.
using SkSL::ScalarType::float_limits = std::numeric_limits<float> |
Definition at line 378 of file SkSLType.cpp.
using SkSL::ScalarType::int_limits = std::numeric_limits<int32_t> |
Definition at line 374 of file SkSLType.cpp.
using SkSL::ScalarType::short_limits = std::numeric_limits<int16_t> |
Definition at line 375 of file SkSLType.cpp.
using SkSL::ScalarType::uint_limits = std::numeric_limits<uint32_t> |
Definition at line 376 of file SkSLType.cpp.
using SkSL::ScalarType::ushort_limits = std::numeric_limits<uint16_t> |
Definition at line 377 of file SkSLType.cpp.
|
inline |
Definition at line 326 of file SkSLType.cpp.
|
inlineoverridevirtual |
Reimplemented from SkSL::Type.
Definition at line 341 of file SkSLType.cpp.
|
inlineoverridevirtual |
For matrices and vectors, returns the number of columns (e.g. both mat3 and float3 return 3). For scalars, returns 1. For arrays, returns either the size of the array (if known) or -1. For all other types, causes an assertion failure.
Reimplemented from SkSL::Type.
Definition at line 345 of file SkSLType.cpp.
|
inlineoverridevirtual |
Returns true if this type is legal to use in a strict-ES2 program.
Reimplemented from SkSL::Type.
Definition at line 357 of file SkSLType.cpp.
|
inlineoverridevirtual |
Returns true if this type is legal to use as a uniform. If false is returned, the errorPosition
field may be populated; if it is, this position can be used to emit an extra diagnostic "caused by: <a field>" for nested types. Note that runtime effects enforce additional, much stricter rules about uniforms; these limitations are not handled here.
Reimplemented from SkSL::Type.
Definition at line 361 of file SkSLType.cpp.
|
inlineoverridevirtual |
Reimplemented from SkSL::Type.
Definition at line 353 of file SkSLType.cpp.
|
inlineoverridevirtual |
Returns the maximum value that can fit in the type.
Reimplemented from SkSL::Type.
Definition at line 397 of file SkSLType.cpp.
|
inlineoverridevirtual |
Returns the maximum value that can fit in the type.
Reimplemented from SkSL::Type.
Definition at line 381 of file SkSLType.cpp.
|
inlineoverridevirtual |
Returns the NumberKind of this type (always kNonnumeric for non-scalar values).
Reimplemented from SkSL::Type.
Definition at line 333 of file SkSLType.cpp.
|
inlineoverridevirtual |
Returns the "priority" of a number type, in order of float > half > int > short. When operating on two number types, the result is the higher-priority type.
Reimplemented from SkSL::Type.
Definition at line 337 of file SkSLType.cpp.
|
inlineoverridevirtual |
For matrices, returns the number of rows (e.g. mat2x4 returns 4). For vectors and scalars, returns 1. For all other types, causes an assertion failure.
Reimplemented from SkSL::Type.
Definition at line 349 of file SkSLType.cpp.
|
inlineoverridevirtual |
Returns the number of scalars needed to hold this type.
Reimplemented from SkSL::Type.
Definition at line 365 of file SkSLType.cpp.
|
inlineoverridevirtual |
Returns the type of the value in the nth slot. For scalar, vector and matrix types, should always match componentType()
.
Reimplemented from SkSL::Type.
Definition at line 369 of file SkSLType.cpp.
|
inlinestaticconstexpr |
Definition at line 324 of file SkSLType.cpp.