Depsgrapgh: Use more distinctive opcode for texture and image evaluation

This commit is contained in:
2018-12-05 17:13:26 +01:00
parent 56aa86ae25
commit d355a2b7d8
6 changed files with 18 additions and 7 deletions

View File

@@ -1534,23 +1534,20 @@ void DepsgraphNodeBuilder::build_texture(Tex *texture)
build_image(texture->ima);
}
}
/* Placeholder so we can add relations and tag ID node for update. */
add_operation_node(&texture->id,
DEG_NODE_TYPE_PARAMETERS,
DEG_NODE_TYPE_GENERIC_DATABLOCK,
NULL,
DEG_OPCODE_PLACEHOLDER);
DEG_OPCODE_GENERIC_DATABLOCK_UPDATE);
}
void DepsgraphNodeBuilder::build_image(Image *image) {
if (built_map_.checkIsBuiltAndTag(image)) {
return;
}
/* Placeholder so we can add relations and tag ID node for update. */
add_operation_node(&image->id,
DEG_NODE_TYPE_PARAMETERS,
DEG_NODE_TYPE_GENERIC_DATABLOCK,
NULL,
DEG_OPCODE_PLACEHOLDER,
"Image Eval");
DEG_OPCODE_GENERIC_DATABLOCK_UPDATE);
}
void DepsgraphNodeBuilder::build_compositor(Scene *scene)

View File

@@ -422,6 +422,7 @@ static void deg_debug_graphviz_node(const DebugContext &ctx,
case DEG_NODE_TYPE_BATCH_CACHE:
case DEG_NODE_TYPE_DUPLI:
case DEG_NODE_TYPE_SYNCHRONIZE:
case DEG_NODE_TYPE_GENERIC_DATABLOCK:
{
ComponentDepsNode *comp_node = (ComponentDepsNode *)node;
if (!comp_node->operations.empty()) {

View File

@@ -106,6 +106,8 @@ const char *nodeTypeAsString(eDepsNode_Type type)
STRINGIFY_TYPE(DUPLI);
/* Synchronization. */
STRINGIFY_TYPE(SYNCHRONIZE);
/* Generic datablock. */
STRINGIFY_TYPE(GENERIC_DATABLOCK);
/* Total number of meaningful node types. */
case NUM_DEG_NODE_TYPES: return "SpecialCase";
@@ -184,6 +186,8 @@ const char *operationCodeAsString(eDepsOperation_Code opcode)
STRINGIFY_OPCODE(MOVIECLIP_SELECT_UPDATE);
/* Synchronization. */
STRINGIFY_OPCODE(SYNCHRONIZE_TO_ORIGINAL);
/* Generic datablock. */
STRINGIFY_OPCODE(GENERIC_DATABLOCK_UPDATE);
case DEG_NUM_OPCODES: return "SpecialCase";
#undef STRINGIFY_OPCODE

View File

@@ -138,6 +138,9 @@ typedef enum eDepsNode_Type {
* changed in view layer.
*/
DEG_NODE_TYPE_OBJECT_FROM_LAYER,
/* Un-interestying datablock, which is a part of dependency graph, but does
* not have very distinctive update procedure. */
DEG_NODE_TYPE_GENERIC_DATABLOCK,
/* **** Evaluation-Related Outer Types (with Subdata) **** */
@@ -292,6 +295,9 @@ typedef enum eDepsOperation_Code {
/* Synchronization clips. ----------------------------------------------- */
DEG_OPCODE_SYNCHRONIZE_TO_ORIGINAL,
/* Generic datablock ---------------------------------------------------- */
DEG_OPCODE_GENERIC_DATABLOCK_UPDATE,
DEG_NUM_OPCODES,
} eDepsOperation_Code;
const char *operationCodeAsString(eDepsOperation_Code opcode);

View File

@@ -402,6 +402,7 @@ DEG_COMPONENT_NODE_DEFINE(Transform, TRANSFORM, ID_RECALC_TRANS
DEG_COMPONENT_NODE_DEFINE(ObjectFromLayer, OBJECT_FROM_LAYER, ID_RECALC);
DEG_COMPONENT_NODE_DEFINE(Dupli, DUPLI, 0);
DEG_COMPONENT_NODE_DEFINE(Synchronize, SYNCHRONIZE, 0);
DEG_COMPONENT_NODE_DEFINE(GenericDatablock, GENERIC_DATABLOCK, 0);
/* Node Types Register =================================== */
@@ -426,6 +427,7 @@ void deg_register_component_depsnodes()
deg_register_node_typeinfo(&DNTI_OBJECT_FROM_LAYER);
deg_register_node_typeinfo(&DNTI_DUPLI);
deg_register_node_typeinfo(&DNTI_SYNCHRONIZE);
deg_register_node_typeinfo(&DNTI_GENERIC_DATABLOCK);
}
} // namespace DEG

View File

@@ -201,6 +201,7 @@ DEG_COMPONENT_NODE_DECLARE_GENERIC(Transform);
DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(ObjectFromLayer);
DEG_COMPONENT_NODE_DECLARE_GENERIC(Dupli);
DEG_COMPONENT_NODE_DECLARE_GENERIC(Synchronize);
DEG_COMPONENT_NODE_DECLARE_GENERIC(GenericDatablock);
/* Bone Component */
struct BoneComponentDepsNode : public ComponentDepsNode {