+static bool
+create_mapping_table(GLenum target, unsigned first_level, unsigned last_level,
+ unsigned depth0, struct intel_mipmap_level *table)
+{
+ for (unsigned level = first_level; level <= last_level; level++) {
+ const unsigned d =
+ target == GL_TEXTURE_3D ? minify(depth0, level) : depth0;
+
+ table[level].slice = calloc(d, sizeof(*table[0].slice));
+ if (!table[level].slice)
+ goto unwind;
+ }
+
+ return true;
+
+unwind:
+ for (unsigned level = first_level; level <= last_level; level++)
+ free(table[level].slice);
+
+ return false;
+}