Blender Git Commits

Blender Git "object_nodes" branch commits.

Page: 6 / 23

May 8, 2016, 09:15 (GMT)
Merge branch 'master' into object_nodes
April 12, 2016, 08:27 (GMT)
Remove the unordered_map cmake monstrosity from subdirectory build files.

Doing this in the top-level cmake file for blenvm is enough.
April 12, 2016, 08:12 (GMT)
Extended debug printing modes to the LLVM code.

The LLVM IR code can be dumped either in raw form or optimized.
It is stored as a raw text file.
April 11, 2016, 15:21 (GMT)
Minor fixes for compiling without LLVM.
April 11, 2016, 14:51 (GMT)
Fix expression result use as function arguments and add RGBA color mix node.
April 11, 2016, 07:16 (GMT)
Inlining of base node functions in LLVM IR code.

This requires a somewhat hackish stub function to force linking of inlined
functions in the modules, so that clang doesn't just omit them when
producing IR code. Not very nice, but also not directly related to the
actual Blender code.
April 9, 2016, 13:47 (GMT)
Optimization passes for the generated LLVM code.
April 8, 2016, 15:28 (GMT)
Completed basic expression tree code generation.

The code uses a pointer-based signature convention for node functions,
which helps to avoid issues with type coercion through clang.
In the future we could either find a more reliable way to produce llvm IR
for the nodes, or use node functions as external functions without inlining.
April 7, 2016, 15:54 (GMT)
Use annotation attributes on module functions to avoid name mangling issues.

Names in C++ code tend to get mangled by the clang compiler according to the
respective target ABI. This is unfortunate because it makes it difficult to
map functions to nodes by name. For now we use a function attribute in the module
C++ code to pass on the "true" name of the function and map them internally.
April 7, 2016, 15:53 (GMT)
Make LLVM module compilation depend on header files to force recompile when headers change.
April 6, 2016, 15:52 (GMT)
Generate function calls for every node, using code defined in precompiled modules.

Note that this is currently not quite working: The clang compiler call used
tentatively for generating the LLVM IR code for modules uses a lowering pass to
coerce struct data types (such as float3) according to the target ABI. This should
be avoided and is unnecessary for our purposes, since we stitch together and optimize
these code fragments ourselves. In principle we could avoid using a C compiler altogether
and write this stuff by hand, but the point of using the compiler is to avoid this tedious
work. More info:
http://stackoverflow.com/questions/22776391/why-does-clang-coerce-struct-parameters-to-ints
April 5, 2016, 15:57 (GMT)
Ported over code from previous llvm branch for loading IR modules and linking runtime code.
April 5, 2016, 14:58 (GMT)
Initial code for mapping node sockets to llvm values.
April 5, 2016, 14:32 (GMT)
Cleanup: Fixed deprecated docstrings for file location.
April 5, 2016, 14:26 (GMT)
Cleanup: Renamed Value class to NodeValue, to distinguish from llvm::Value easier.
April 5, 2016, 09:37 (GMT)
With the proper formal function parameters for node functions they can now actually be called.
April 5, 2016, 09:30 (GMT)
Use getFunctionAddress instead of deprecated getFunctionPointer.
April 5, 2016, 09:04 (GMT)
Retain functions both for storage in the cache as well as keeping the pointer during eval.

Otherwise the function is freed immediately after each use, making the cache pointless.
April 5, 2016, 08:26 (GMT)
Only insert functions into the function cache when use_cache argument is true.
April 5, 2016, 08:16 (GMT)
Type generation for LLVM based on node socket types.

Currently every socket stores a complete and unique type definition.
This should be changed to module-level type declarations and referencing by name.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021