static struct deref_node * deref_node_create(struct deref_node *parent, const struct glsl_type *type, nir_shader *shader) { size_t size = sizeof(struct deref_node) + glsl_get_length(type) * sizeof(struct deref_node *); struct deref_node *node = rzalloc_size(shader, size); node->type = type; node->parent = parent; node->deref = NULL; exec_node_init(&node->direct_derefs_link); return node; }
/** * \brief Set that the miptree slice at (level, layer) needs a resolve. * * If a map element already exists with the given key, then the value is * changed to the given value of \c need. */ void intel_resolve_map_set(struct exec_list *resolve_map, uint32_t level, uint32_t layer, unsigned need) { foreach_list_typed(struct intel_resolve_map, map, link, resolve_map) { if (map->level == level && map->layer == layer) { map->need = need; return; } } struct intel_resolve_map *m = malloc(sizeof(struct intel_resolve_map)); exec_node_init(&m->link); m->level = level; m->layer = layer; m->need = need; exec_list_push_tail(resolve_map, &m->link); }