util/u_format: add _is_alpha()

Because of render-to-alpha (000x) shenanigans, freedreno needs to do
some special handling when rendering to alpha-only formats.  And I
noticed that while we had _is_luminance(), _is_intensity(), etc, an
_is_alpha() helper was missing.  So fix that.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
(cherry picked from commit 3e0a82b52e)
This commit is contained in:
Rob Clark 2014-09-12 08:42:03 -04:00 committed by Emil Velikov
parent 0e9bb8efe4
commit 695a4b2b4e
2 changed files with 19 additions and 0 deletions

View file

@ -91,6 +91,23 @@ util_format_is_luminance(enum pipe_format format)
return FALSE;
}
boolean
util_format_is_alpha(enum pipe_format format)
{
const struct util_format_description *desc =
util_format_description(format);
if ((desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB ||
desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) &&
desc->swizzle[0] == UTIL_FORMAT_SWIZZLE_0 &&
desc->swizzle[1] == UTIL_FORMAT_SWIZZLE_0 &&
desc->swizzle[2] == UTIL_FORMAT_SWIZZLE_0 &&
desc->swizzle[3] == UTIL_FORMAT_SWIZZLE_X) {
return TRUE;
}
return FALSE;
}
boolean
util_format_is_pure_integer(enum pipe_format format)
{

View file

@ -661,6 +661,8 @@ util_format_has_alpha(enum pipe_format format);
boolean
util_format_is_luminance(enum pipe_format format);
boolean
util_format_is_alpha(enum pipe_format format);
boolean
util_format_is_luminance_alpha(enum pipe_format format);