/** Block height in pixels */
unsigned height;
+ /** Block depth in pixels */
+ unsigned depth;
+
/** Block size in bits */
unsigned bits;
};
return desc->block.height;
}
+static inline uint
+util_format_get_blockdepth(enum pipe_format format)
+{
+ const struct util_format_description *desc = util_format_description(format);
+
+ assert(desc);
+ if (!desc) {
+ return 1;
+ }
+
+ return desc->block.depth;
+}
+
static inline unsigned
util_format_get_nblocksx(enum pipe_format format,
unsigned x)
return (y + blockheight - 1) / blockheight;
}
+static inline unsigned
+util_format_get_nblocksz(enum pipe_format format,
+ unsigned z)
+{
+ unsigned blockdepth = util_format_get_blockdepth(format);
+ return (z + blockdepth - 1) / blockdepth;
+}
+
static inline unsigned
util_format_get_nblocks(enum pipe_format format,
unsigned width,
unsigned height)
{
+ assert(util_format_get_blockdepth(format) == 1);
return util_format_get_nblocksx(format, width) * util_format_get_nblocksy(format, height);
}
print(" %s," % (format.name,))
print(" \"%s\"," % (format.name,))
print(" \"%s\"," % (format.short_name(),))
- print(" {%u, %u, %u},\t/* block */" % (format.block_width, format.block_height, format.block_size()))
+ print(" {%u, %u, %u, %u},\t/* block */" % (format.block_width, format.block_height, format.block_depth, format.block_size()))
print(" %s," % (layout_map(format.layout),))
print(" %u,\t/* nr_channels */" % (format.nr_channels(),))
print(" %s,\t/* is_array */" % (bool_map(format.is_array()),))