Blender V4.3
blender::fn::multi_function Namespace Reference

Namespaces

namespace  build
 
namespace  procedure_optimization
 
namespace  tests
 

Classes

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

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()

static 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  )

◆ evaluate_as_one()

static 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()

static 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()

static 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()

static 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()