gallium: Add block depth to the format utils.

I decided not to update nblocks() with a depth arg as the callers
wouldn't be doing ASTC 3D.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Eric Anholt
2019-08-14 12:16:46 -07:00
parent 530f424735
commit 9d988f9291
2 changed files with 26 additions and 1 deletions
+25
View File
@@ -102,6 +102,9 @@ struct util_format_block
/** Block height in pixels */
unsigned height;
/** Block depth in pixels */
unsigned depth;
/** Block size in bits */
unsigned bits;
};
@@ -842,6 +845,19 @@ util_format_get_blockheight(enum pipe_format format)
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)
@@ -858,11 +874,20 @@ util_format_get_nblocksy(enum pipe_format format,
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);
}
+1 -1
View File
@@ -130,7 +130,7 @@ def write_format_table(formats):
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()),))