Flutter Engine
The Flutter Engine
Namespaces | Typedefs | Functions
SkSLFunctionCall.cpp File Reference
#include "src/sksl/ir/SkSLFunctionCall.h"
#include "include/core/SkSpan.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkFloatingPoint.h"
#include "include/private/base/SkTArray.h"
#include "include/private/base/SkTo.h"
#include "src/base/SkEnumBitMask.h"
#include "src/base/SkHalf.h"
#include "src/core/SkMatrixInvert.h"
#include "src/sksl/SkSLAnalysis.h"
#include "src/sksl/SkSLBuiltinTypes.h"
#include "src/sksl/SkSLConstantFolder.h"
#include "src/sksl/SkSLContext.h"
#include "src/sksl/SkSLErrorReporter.h"
#include "src/sksl/SkSLIntrinsicList.h"
#include "src/sksl/SkSLOperator.h"
#include "src/sksl/SkSLProgramSettings.h"
#include "src/sksl/SkSLString.h"
#include "src/sksl/ir/SkSLChildCall.h"
#include "src/sksl/ir/SkSLConstructor.h"
#include "src/sksl/ir/SkSLConstructorCompound.h"
#include "src/sksl/ir/SkSLFunctionDeclaration.h"
#include "src/sksl/ir/SkSLFunctionReference.h"
#include "src/sksl/ir/SkSLLayout.h"
#include "src/sksl/ir/SkSLLiteral.h"
#include "src/sksl/ir/SkSLMethodReference.h"
#include "src/sksl/ir/SkSLModifierFlags.h"
#include "src/sksl/ir/SkSLType.h"
#include "src/sksl/ir/SkSLTypeReference.h"
#include "src/sksl/ir/SkSLVariable.h"
#include "src/sksl/ir/SkSLVariableReference.h"
#include <algorithm>
#include <array>
#include <cmath>
#include <cstdint>
#include <cstring>
#include <optional>
#include <string_view>

Go to the source code of this file.

Namespaces

namespace  SkSL
 
namespace  SkSL::Intrinsics
 

Typedefs

using SkSL::IntrinsicArguments = std::array< const Expression *, 3 >
 
using SkSL::CoalesceFn = double(*)(double, double, double)
 
using SkSL::FinalizeFn = double(*)(double)
 
using SkSL::CompareFn = bool(*)(double, double)
 
using SkSL::EvaluateFn = double(*)(double, double, double)
 

Functions

static bool SkSL::has_compile_time_constant_arguments (const ExpressionArray &arguments)
 
template<typename T >
static void SkSL::type_check_expression (const Expression &expr)
 
template<>
void SkSL::type_check_expression< float > (const Expression &expr)
 
template<>
void SkSL::type_check_expression< SKSL_INT > (const Expression &expr)
 
template<>
void SkSL::type_check_expression< bool > (const Expression &expr)
 
static std::unique_ptr< Expression > SkSL::coalesce_n_way_vector (const Expression *arg0, const Expression *arg1, double startingState, const Type &returnType, CoalesceFn coalesce, FinalizeFn finalize)
 
template<typename T >
static std::unique_ptr< Expression > SkSL::coalesce_vector (const IntrinsicArguments &arguments, double startingState, const Type &returnType, CoalesceFn coalesce, FinalizeFn finalize)
 
template<typename T >
static std::unique_ptr< Expression > SkSL::coalesce_pairwise_vectors (const IntrinsicArguments &arguments, double startingState, const Type &returnType, CoalesceFn coalesce, FinalizeFn finalize)
 
static std::unique_ptr< Expression > SkSL::optimize_comparison (const Context &context, const IntrinsicArguments &arguments, CompareFn compare)
 
static std::unique_ptr< Expression > SkSL::evaluate_n_way_intrinsic (const Context &context, const Expression *arg0, const Expression *arg1, const Expression *arg2, const Type &returnType, EvaluateFn eval)
 
template<typename T >
static std::unique_ptr< Expression > SkSL::evaluate_intrinsic (const Context &context, const IntrinsicArguments &arguments, const Type &returnType, EvaluateFn eval)
 
static std::unique_ptr< Expression > SkSL::evaluate_intrinsic_numeric (const Context &context, const IntrinsicArguments &arguments, const Type &returnType, EvaluateFn eval)
 
static std::unique_ptr< Expression > SkSL::evaluate_pairwise_intrinsic (const Context &context, const IntrinsicArguments &arguments, const Type &returnType, EvaluateFn eval)
 
static std::unique_ptr< Expression > SkSL::evaluate_3_way_intrinsic (const Context &context, const IntrinsicArguments &arguments, const Type &returnType, EvaluateFn eval)
 
template<typename T1 , typename T2 >
static double SkSL::pun_value (double val)
 
static void SkSL::extract_matrix (const Expression *expr, float mat[16])
 
static std::unique_ptr< Expression > SkSL::optimize_intrinsic_call (const Context &context, Position pos, IntrinsicKind intrinsic, const ExpressionArray &argArray, const Type &returnType)
 
static bool SkSL::argument_and_parameter_flags_match (const Expression &argument, const Variable &parameter)
 
static CoercionCost SkSL::call_cost (const Context &context, const FunctionDeclaration &function, const ExpressionArray &arguments)
 
static std::string SkSL::build_argument_type_list (SkSpan< const std::unique_ptr< Expression > > arguments)