Blender V5.0
blender::fn::multi_function Namespace Reference

Namespaces

namespace  build
namespace  procedure_optimization
namespace  tests

Classes

class  MultiFunction
class  CustomMF_GenericConstant
class  CustomMF_GenericConstantArray
class  CustomMF_Constant
class  CustomMF_DefaultOutput
class  CustomMF_GenericCopy
class  Context
class  ContextBuilder
class  DataType
struct  ParamTag
class  ParamType
class  ParamsBuilder
class  Params
class  InstructionCursor
class  Variable
class  Instruction
class  CallInstruction
class  BranchInstruction
class  DestructInstruction
class  DummyInstruction
class  ReturnInstruction
struct  Parameter
struct  ConstParameter
class  Procedure
class  ProcedureBuilder
class  ProcedureExecutor
struct  Signature
class  SignatureBuilder
class  ProcedureDotExport
struct  VariableValue
struct  VariableValue_GVArray
struct  VariableValue_Span
struct  VariableValue_GVVectorArray
struct  VariableValue_GVectorArray
struct  VariableValue_OneSingle
struct  VariableValue_OneVector
class  ValueAllocator
class  VariableState
class  VariableStates
struct  InstructionIndices
struct  NextInstructionInfo
class  InstructionScheduler

Typedefs

using ExecutionHints = MultiFunction::ExecutionHints
using IndicesSplitVectors = std::array<Vector<int64_t>, 2>

Enumerations

enum class  ParamCategory {
  SingleInput , VectorInput , SingleOutput , VectorOutput ,
  SingleMutable , VectorMutable
}
enum class  InstructionType {
  Call , Branch , Destruct , Dummy ,
  Return
}
enum class  ParamFlag { None = 0 , SupportsUnusedOutput = 1 << 0 }

Functions

 ENUM_OPERATORS (ParamFlag, ParamFlag::SupportsUnusedOutput)
static bool supports_threading_by_slicing_params (const MultiFunction &fn)
static int64_t compute_grain_size (const ExecutionHints &hints, const IndexMask &mask)
static int64_t compute_alignment (const int64_t grain_size)
static void add_sliced_parameters (const Signature &signature, Params &full_params, const IndexRange slice_range, ParamsBuilder &r_sliced_params)
static bool evaluate_as_one (Span< VariableState * > param_variable_states, const IndexMask &mask, const IndexMask &full_mask)
static void gather_parameter_variable_states (const MultiFunction &fn, const CallInstruction &instruction, VariableStates &variable_states, MutableSpan< VariableState * > r_param_variable_states)
static void fill_params__one (const MultiFunction &fn, const IndexMask &mask, ParamsBuilder &params, VariableStates &variable_states, const Span< VariableState * > param_variable_states)
static void fill_params (const MultiFunction &fn, const IndexMask &mask, ParamsBuilder &params, VariableStates &variable_states, const Span< VariableState * > param_variable_states)
static void execute_call_instruction (const CallInstruction &instruction, const IndexMask &mask, VariableStates &variable_states, const Context &context)

Typedef Documentation

◆ ExecutionHints

◆ IndicesSplitVectors

Enumeration Type Documentation

◆ InstructionType

Every instruction has exactly one of these types.

Enumerator
Call 
Branch 
Destruct 
Dummy 
Return 

Definition at line 25 of file FN_multi_function_procedure.hh.

◆ ParamCategory

Enumerator
SingleInput 
VectorInput 
SingleOutput 
VectorOutput 
SingleMutable 
VectorMutable 

Definition at line 27 of file FN_multi_function_param_type.hh.

◆ ParamFlag

Enumerator
None 
SupportsUnusedOutput 

If set, the multi-function parameter can be accessed using #Params::uninitialized_single_output_if_required which can result in better performance because the output does not have to be computed when it is not needed.

Definition at line 20 of file FN_multi_function_signature.hh.

Function Documentation

◆ add_sliced_parameters()

◆ compute_alignment()

int64_t blender::fn::multi_function::compute_alignment ( const int64_t grain_size)
static

◆ compute_grain_size()

◆ ENUM_OPERATORS()

blender::fn::multi_function::ENUM_OPERATORS ( ParamFlag ,
ParamFlag::SupportsUnusedOutput  )

References SupportsUnusedOutput.

◆ evaluate_as_one()

bool blender::fn::multi_function::evaluate_as_one ( Span< VariableState * > param_variable_states,
const IndexMask & mask,
const IndexMask & full_mask )
static

◆ execute_call_instruction()

◆ fill_params()

void blender::fn::multi_function::fill_params ( const MultiFunction & fn,
const IndexMask & mask,
ParamsBuilder & params,
VariableStates & variable_states,
const Span< VariableState * > param_variable_states )
static

◆ fill_params__one()

void blender::fn::multi_function::fill_params__one ( const MultiFunction & fn,
const IndexMask & mask,
ParamsBuilder & params,
VariableStates & variable_states,
const Span< VariableState * > param_variable_states )
static

◆ gather_parameter_variable_states()

void blender::fn::multi_function::gather_parameter_variable_states ( const MultiFunction & fn,
const CallInstruction & instruction,
VariableStates & variable_states,
MutableSpan< VariableState * > r_param_variable_states )
static

◆ supports_threading_by_slicing_params()