Skip to content
Snippets Groups Projects
Commit 0d427406 authored by Alyssa Rosenzweig's avatar Alyssa Rosenzweig Committed by Eric Engestrom
Browse files

gallium/util: Add pixel->blocks box helper


There is a lot of unit confusion in Gallium due to pixels versus blocks
matching only with uncompressed textures. Add a helper to do a common
pixels->blocks unit conversion required in multiple drivers.

v2: Rename dst->blocks, src->pixels to avoid confusion about the units
to casual readers (Mike).

Note to mesa-stable maintainers: this is marked as Cc: mesa-stable so
the next patch (a set of bug fixes for Lima and Panfrost) can be
backported. It's not a bug fix in its own right, of course.

Signed-off-by: default avatarAlyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net> [v1]
Cc: mesa-stable
Part-of: <mesa/mesa!14370>
(cherry picked from commit 26c533f1)
parent a324d79e
No related branches found
No related tags found
No related merge requests found
......@@ -805,7 +805,7 @@
"description": "gallium/util: Add pixel->blocks box helper",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},
......
......@@ -3,6 +3,7 @@
#include "pipe/p_state.h"
#include "util/u_math.h"
#include "util/format/u_format.h"
static inline void
u_box_1d(unsigned x, unsigned w, struct pipe_box *box)
......@@ -239,4 +240,22 @@ u_box_minify_3d(struct pipe_box *dst,
dst->depth = MAX2(src->depth >> l, 1);
}
/* Converts a box specified in pixels to an equivalent box specified
* in blocks, where the boxes represent a region-of-interest of an image with
* the given format. This is trivial (a copy) for uncompressed formats.
*/
static inline void
u_box_pixels_to_blocks(struct pipe_box *blocks,
const struct pipe_box *pixels, enum pipe_format format)
{
u_box_3d(
pixels->x / util_format_get_blockwidth(format),
pixels->y / util_format_get_blockheight(format),
pixels->z,
DIV_ROUND_UP(pixels->width, util_format_get_blockwidth(format)),
DIV_ROUND_UP(pixels->height, util_format_get_blockheight(format)),
pixels->depth,
blocks);
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment