diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c index c9db9a2061c..b5cb27de3d9 100644 --- a/src/util/format/u_format.c +++ b/src/util/format/u_format.c @@ -125,6 +125,18 @@ util_format_has_alpha(enum pipe_format format) desc->swizzle[3] != PIPE_SWIZZLE_1; } +/** Test if format has alpha as 1 (like RGBX) */ +boolean +util_format_has_alpha1(enum pipe_format format) +{ + const struct util_format_description *desc = + util_format_description(format); + + return (desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB || + desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) && + desc->nr_channels == 4 && + desc->swizzle[3] == PIPE_SWIZZLE_1; +} boolean util_format_is_luminance(enum pipe_format format) diff --git a/src/util/format/u_format.h b/src/util/format/u_format.h index 10dc8beb6dd..d0fa84194eb 100644 --- a/src/util/format/u_format.h +++ b/src/util/format/u_format.h @@ -692,6 +692,8 @@ util_format_is_float(enum pipe_format format) ATTRIBUTE_CONST; boolean util_format_has_alpha(enum pipe_format format) ATTRIBUTE_CONST; +boolean +util_format_has_alpha1(enum pipe_format format) ATTRIBUTE_CONST; boolean util_format_is_luminance(enum pipe_format format) ATTRIBUTE_CONST;